diff --git a/2017/d01/ex1/ex1.py b/2017/d01/ex1/ex1.py deleted file mode 100755 index 7d20719..0000000 --- a/2017/d01/ex1/ex1.py +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env python - -import sys - - -def solve(input: str) -> int: - nums = [int(n) for n in input.strip()] - return sum(n for n, m in zip(nums, nums[1:] + nums[:1]) if n == m) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d01/ex1/input b/2017/d01/ex1/input deleted file mode 100644 index 1c58802..0000000 --- a/2017/d01/ex1/input +++ /dev/null @@ -1 +0,0 @@ -5255443714755555317777152441826784321918285999594221531636242944998363716119294845838579943562543247239969555791772392681567883449837982119239536325341263524415397123824358467891963762948723327774545715851542429832119179139914471523515332247317441719184556891362179267368325486642376685657759623876854958721636574219871249645773738597751429959437466876166273755524873351452951411628479352522367714269718514838933283861425982562854845471512652555633922878128558926123935941858532446378815929573452775348599693982834699757734714187831337546474515678577158721751921562145591166634279699299418269158557557996583881642468274618196335267342897498486869925262896125146867124596587989531495891646681528259624674792728146526849711139146268799436334618974547539561587581268886449291817335232859391493839167111246376493191985145848531829344198536568987996894226585837348372958959535969651573516542581144462536574953764413723147957237298324458181291167587791714172674717898567269547766636143732438694473231473258452166457194797819423528139157452148236943283374193561963393846385622218535952591588353565319432285579711881559343544515461962846879685879431767963975654347569385354482226341261768547328749947163864645168428953445396361398873536434931823635522467754782422557998262858297563862492652464526366171218276176258582444923497181776129436396397333976215976731542182878979389362297155819461685361676414725597335759976285597713332688275241271664658286868697167515329811831234324698345159949135474463624749624626518247831448143876183133814263977611564339865466321244399177464822649611969896344874381978986453566979762911155931362394192663943526834148596342268321563885255765614418141828934971927998994739769141789185165461976425151855846739959338649499379657223196885539386154935586794548365861759354865453211721551776997576289811595654171672259129335243531518228282393326395241242185795828261319215164262237957743232558971289145639852148197184265766291885259847236646615935963759631145338159257538114359781854685695429348428884248972177278361353814766653996675994784195827214295462389532422825696456457332417366426619555 diff --git a/2017/d01/ex2/ex2.py b/2017/d01/ex2/ex2.py deleted file mode 100755 index e3596b2..0000000 --- a/2017/d01/ex2/ex2.py +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env python - -import sys - - -def solve(input: str) -> int: - nums = [int(n) for n in input.strip()] - half = len(nums) // 2 - return sum(n for n, m in zip(nums, nums[half:] + nums[:half]) if n == m) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d01/ex2/input b/2017/d01/ex2/input deleted file mode 100644 index 1c58802..0000000 --- a/2017/d01/ex2/input +++ /dev/null @@ -1 +0,0 @@ -5255443714755555317777152441826784321918285999594221531636242944998363716119294845838579943562543247239969555791772392681567883449837982119239536325341263524415397123824358467891963762948723327774545715851542429832119179139914471523515332247317441719184556891362179267368325486642376685657759623876854958721636574219871249645773738597751429959437466876166273755524873351452951411628479352522367714269718514838933283861425982562854845471512652555633922878128558926123935941858532446378815929573452775348599693982834699757734714187831337546474515678577158721751921562145591166634279699299418269158557557996583881642468274618196335267342897498486869925262896125146867124596587989531495891646681528259624674792728146526849711139146268799436334618974547539561587581268886449291817335232859391493839167111246376493191985145848531829344198536568987996894226585837348372958959535969651573516542581144462536574953764413723147957237298324458181291167587791714172674717898567269547766636143732438694473231473258452166457194797819423528139157452148236943283374193561963393846385622218535952591588353565319432285579711881559343544515461962846879685879431767963975654347569385354482226341261768547328749947163864645168428953445396361398873536434931823635522467754782422557998262858297563862492652464526366171218276176258582444923497181776129436396397333976215976731542182878979389362297155819461685361676414725597335759976285597713332688275241271664658286868697167515329811831234324698345159949135474463624749624626518247831448143876183133814263977611564339865466321244399177464822649611969896344874381978986453566979762911155931362394192663943526834148596342268321563885255765614418141828934971927998994739769141789185165461976425151855846739959338649499379657223196885539386154935586794548365861759354865453211721551776997576289811595654171672259129335243531518228282393326395241242185795828261319215164262237957743232558971289145639852148197184265766291885259847236646615935963759631145338159257538114359781854685695429348428884248972177278361353814766653996675994784195827214295462389532422825696456457332417366426619555 diff --git a/2017/d02/ex1/ex1.py b/2017/d02/ex1/ex1.py deleted file mode 100755 index 01e3a88..0000000 --- a/2017/d02/ex1/ex1.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python - -import sys - - -def solve(input: str) -> int: - def parse(input: str) -> list[list[int]]: - return [[int(n) for n in line.split()] for line in input.splitlines()] - - def checksum(row: list[int]) -> int: - return max(row) - min(row) - - sheet = parse(input) - return sum(map(checksum, sheet)) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d02/ex1/input b/2017/d02/ex1/input deleted file mode 100644 index 1dd09df..0000000 --- a/2017/d02/ex1/input +++ /dev/null @@ -1,16 +0,0 @@ -5048 177 5280 5058 4504 3805 5735 220 4362 1809 1521 230 772 1088 178 1794 -6629 3839 258 4473 5961 6539 6870 4140 4638 387 7464 229 4173 5706 185 271 -5149 2892 5854 2000 256 3995 5250 249 3916 184 2497 210 4601 3955 1110 5340 -153 468 550 126 495 142 385 144 165 188 609 182 439 545 608 319 -1123 104 567 1098 286 665 1261 107 227 942 1222 128 1001 122 69 139 -111 1998 1148 91 1355 90 202 1522 1496 1362 1728 109 2287 918 2217 1138 -426 372 489 226 344 431 67 124 120 386 348 153 242 133 112 369 -1574 265 144 2490 163 749 3409 3086 154 151 133 990 1002 3168 588 2998 -173 192 2269 760 1630 215 966 2692 3855 3550 468 4098 3071 162 329 3648 -1984 300 163 5616 4862 586 4884 239 1839 169 5514 4226 5551 3700 216 5912 -1749 2062 194 1045 2685 156 3257 1319 3199 2775 211 213 1221 198 2864 2982 -273 977 89 198 85 1025 1157 1125 69 94 919 103 1299 998 809 478 -1965 6989 230 2025 6290 2901 192 215 4782 6041 6672 7070 7104 207 7451 5071 -1261 77 1417 1053 2072 641 74 86 91 1878 1944 2292 1446 689 2315 1379 -296 306 1953 3538 248 1579 4326 2178 5021 2529 794 5391 4712 3734 261 4362 -2426 192 1764 288 4431 2396 2336 854 2157 216 4392 3972 229 244 4289 1902 diff --git a/2017/d02/ex2/ex2.py b/2017/d02/ex2/ex2.py deleted file mode 100755 index 779ac63..0000000 --- a/2017/d02/ex2/ex2.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python - -import itertools -import sys - - -def solve(input: str) -> int: - def parse(input: str) -> list[list[int]]: - return [[int(n) for n in line.split()] for line in input.splitlines()] - - def evenly_divide(row: list[int]) -> int: - for a, b in itertools.combinations(sorted(row), 2): - assert a <= b # Sanity check - if b % a: - continue - return b // a - assert False # Sanity check - - sheet = parse(input) - return sum(map(evenly_divide, sheet)) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d02/ex2/input b/2017/d02/ex2/input deleted file mode 100644 index 1dd09df..0000000 --- a/2017/d02/ex2/input +++ /dev/null @@ -1,16 +0,0 @@ -5048 177 5280 5058 4504 3805 5735 220 4362 1809 1521 230 772 1088 178 1794 -6629 3839 258 4473 5961 6539 6870 4140 4638 387 7464 229 4173 5706 185 271 -5149 2892 5854 2000 256 3995 5250 249 3916 184 2497 210 4601 3955 1110 5340 -153 468 550 126 495 142 385 144 165 188 609 182 439 545 608 319 -1123 104 567 1098 286 665 1261 107 227 942 1222 128 1001 122 69 139 -111 1998 1148 91 1355 90 202 1522 1496 1362 1728 109 2287 918 2217 1138 -426 372 489 226 344 431 67 124 120 386 348 153 242 133 112 369 -1574 265 144 2490 163 749 3409 3086 154 151 133 990 1002 3168 588 2998 -173 192 2269 760 1630 215 966 2692 3855 3550 468 4098 3071 162 329 3648 -1984 300 163 5616 4862 586 4884 239 1839 169 5514 4226 5551 3700 216 5912 -1749 2062 194 1045 2685 156 3257 1319 3199 2775 211 213 1221 198 2864 2982 -273 977 89 198 85 1025 1157 1125 69 94 919 103 1299 998 809 478 -1965 6989 230 2025 6290 2901 192 215 4782 6041 6672 7070 7104 207 7451 5071 -1261 77 1417 1053 2072 641 74 86 91 1878 1944 2292 1446 689 2315 1379 -296 306 1953 3538 248 1579 4326 2178 5021 2529 794 5391 4712 3734 261 4362 -2426 192 1764 288 4431 2396 2336 854 2157 216 4392 3972 229 244 4289 1902 diff --git a/2017/d03/ex1/ex1.py b/2017/d03/ex1/ex1.py deleted file mode 100755 index 64f7dbb..0000000 --- a/2017/d03/ex1/ex1.py +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python - -import itertools -import sys -from typing import NamedTuple - - -class Point(NamedTuple): - x: int - y: int - - -def solve(input: str) -> int: - def target_coord(target: int) -> Point: - for dist in itertools.count(): - side = dist * 2 + 1 - bot_right = side * side - if bot_right < target: - continue - # Target must be in the last loop, before bot_right - bot_left = bot_right - side + 1 - top_left = bot_left - side + 1 - top_right = top_left - side + 1 - if bot_left <= target <= bot_right: - return Point(dist - (bot_right - target), -dist) - if top_left <= target <= bot_left: - return Point(-dist, -dist + (bot_left - target)) - if top_right <= target <= top_left: - return Point(-dist + (top_left - target), dist) - if target <= top_right: - return Point(dist, dist - (top_right - target)) - assert False # Sanity check - assert False # Sanity check - - target = int(input) - coord = target_coord(target) - return abs(coord.x) + abs(coord.y) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d03/ex1/input b/2017/d03/ex1/input deleted file mode 100644 index 63320e1..0000000 --- a/2017/d03/ex1/input +++ /dev/null @@ -1 +0,0 @@ -347991 diff --git a/2017/d03/ex2/ex2.py b/2017/d03/ex2/ex2.py deleted file mode 100755 index e6ca8c5..0000000 --- a/2017/d03/ex2/ex2.py +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env python - -import itertools -import sys -from collections.abc import Iterator -from typing import NamedTuple - - -class Point(NamedTuple): - x: int - y: int - - def neighbours(self) -> Iterator["Point"]: - for dx, dy in itertools.product((-1, 0, 1), repeat=2): - if dx == 0 and dy == 0: - continue - yield Point(self.x + dx, self.y + dy) - - -def solve(input: str) -> int: - def spiral() -> Iterator[Point]: - yield Point(0, 0) - for dist in itertools.count(1): - side = dist * 2 + 1 - for start, dx, dy in ( - (Point(dist, -dist), 0, 1), - (Point(dist, dist), -1, 0), - (Point(-dist, dist), 0, -1), - (Point(-dist, -dist), 1, 0), - ): - # We need a non-zero step for `range`, and to make it inclusive - stepx = dx if dx != 0 else 1 - stepy = dy if dy != 0 else 1 - # Don't include the corner, which was already output in previous loop - # Hence, `side - 1` points in the range - xs = range(start.x + dx, start.x + (side - 1) * dx + stepx, stepx) - ys = range(start.y + dy, start.y + (side - 1) * dy + stepy, stepy) - yield from (Point(x, y) for x, y in itertools.product(xs, ys)) - - target = int(input) - values = {Point(0, 0): 1} - # Skip the origin, which we already know - for p in itertools.islice(spiral(), 1, None): - if (res := sum(values.get(n, 0) for n in p.neighbours())) > target: - return res - values[p] = res - assert False # Sanity check - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d03/ex2/input b/2017/d03/ex2/input deleted file mode 100644 index 63320e1..0000000 --- a/2017/d03/ex2/input +++ /dev/null @@ -1 +0,0 @@ -347991 diff --git a/2017/d04/ex1/ex1.py b/2017/d04/ex1/ex1.py deleted file mode 100755 index 3904182..0000000 --- a/2017/d04/ex1/ex1.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python - -import sys - - -def solve(input: str) -> int: - def parse(input: str) -> list[list[str]]: - return [line.split() for line in input.splitlines()] - - def validate_passphrase(passphrase: list[str]) -> bool: - return len(set(passphrase)) == len(passphrase) - - passphrases = parse(input) - return sum(map(validate_passphrase, passphrases)) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d04/ex1/input b/2017/d04/ex1/input deleted file mode 100644 index b7384b6..0000000 --- a/2017/d04/ex1/input +++ /dev/null @@ -1,512 +0,0 @@ -vxjtwn vjnxtw sxibvv mmws wjvtxn icawnd rprh -fhaa qwy vqbq gsswej lxr yzl wakcige mwjrl -bhnlow huqa gtbjc gvj wrkyr jgvmhj bgs umo ikbpdto -drczdf bglmf gsx flcf ojpj kzrwrho owbkl dgrnv bggjevc -ndncqdl lncaugj mfa lncaugj skt pkssyen rsb npjzf -kdd itdyhe pvljizn cgi -jgy pyhuq eecb phwkyl oeftyu pyhuq hecxgti tpadffm jgy -zvc qdk mlmyj kybbh lgbb fvfzcer frmaxa yzgw podt dbycoii afj -zfr msn mns leqem frz -golnm ltizhd dvwv xrizqhd omegnez nan yqajse lgef -gbej rvek aehiz bgje -yej cphl jtp swe axhljo ddwk obwsq mnewiwu klddd -ipiev henods rpn qfpg gjfdgs zcpt sswab eosdhn teeil -gzje ydu oiu jzge udy sqjeoo olxej -mgn gox tcifta vzc lxry gox gox mvila qdl jipjnw dvu -hxk xhk unhdmdz yomze povrt nbww bxu qqsqc rvuk tgffy twddm -fyx fyx nzkm fyx -ymnoc zogudq yncom tqrob sidvy dfuu ccjpiej yidvs -bxebny akknwxw jeyxqvj syl cedps akknwxw akknwxw zpvnf kuoon pnkejn wqjgc -kcebrkj zmuf ueewxhi mgyepbr nleviqc dez -argavx fqguii gebohvw klnrq rkqnl goevhbw -ywqi abwi eswph nlplbl pswhe lnqx fpgk lllnpb -abpb mpkw ampey yapme xnuyj -tmuaq asd bhbs sqmbsnw wsbnqsm ydwdncn rpa vrllkh -dnltf cck djy ydj -wywwl scezo clowuz dkgqaj dohyzcp -diimshr vlmsnlj whqb dkicau ckdaiu terp kgcii npqc vvzrqzv nol -wfpxe sqf tbb ruqpcq zfgb -kajykuz tsxgtys vuz kglmgg ihnnn plyjxj rcrvo mij plyjxj jqiur -pxs hmet dwgvd mvhkvn cjxg yvid vmhnkv kwxz rfemsua wdgvd okixk -lzwxas ddtyeh ivyama crrhxdt hedytd jfw -vjfv oyd fvjv kfwlj mradbx mckseee xradmb -llga yytxyvj lstspek lstspek lstspek -fabgf wgop fabgf bvsfoaw -grqnbvo tntomdw hizg tmotdwn -mau ufkw cxfi rhehj ebe xyv rhehj acxngo arl qtl rhehj -kbkto stqjtm tpcwshj saerkrt pffj dthp pfjf axc gwmmfdw glnqtdy xmskw -veff zqm hzhxap lgwnwq twsdk mqz xbbarbv cdx fhnwt qjcji bbvbrxa -fjw eds hofskl nkbsv des hvx xyn -qzort qzort qesz rtq oonk vwzlw wapoj ifr cta -pja hvy nhjg paj smtfe fmtse -xvi tcjj xvkjtab nqftt aumijl xkd cmilegf hvsmodx uuo igmcelf mslkq -mdhezgv lelzy kzfvsqu hvmvaxw pxiqjc hvmvaxw kzfvsqu -hsicsav csshrhx znojm eapi lhmzq bbwnz seao gfk azk -pup xtgjyzy wqt ijeektl -ktwh qdegzs btj pfwzzho -xdkmdm izqtjrr iqbke vtp -fmrbpdr zpccv tmtwx tmtwx tmtwx bys -ehphfgq idd ehphfgq ehphfgq uphe hvrc jcscne nbnslqy -xzqucgj fcih fljk barz lvln hcfi azrb -cmfmclv mfgvifw rnxgn jpg bsnq wnduzj ymsdx smdxy pqomf -rlqsm qrsml emts qsmcowv scmvwqo -tshzkpa zwtpda ftsiwo nil tpawdz kjpa ptzashk -mnep sfc swjawtd vnwud gyulluw zpa kmwyvln evd btnmoi dnwe -jwq scepq redoxmw rbdzsa wlkzso kxpm bttg vxuc moxwdre ijtdd rzsabd -wpvo dsjox amuwjm pls lgwksva ctakgpl rmsjj lzwwpr zzm udg -bji obbn tmwyc afpmkxr glvrd kahhgpq rna qkxyntp vmd mloshc -ymq rtnr nxjzm pqiddrn qmy vgxw ull -mmzk ikge zhtzhs xyo qwe lll gjjm icetq qgrr mzwqa knec -kxomfck idlh xrbowo nyetbnl qskh xuwkkxe upmmmf zhvuyp -srcwyhl czgr xmhuws jueyh xcuib xhsuwm bxuic -crkueh beyxopz xpyozbe dxgadw qktmce rjropjg -lbktun imdpcp fkssp fhcpt fehho jqdnt aoewa -jmun pynzjo trs ijwcc pelf oft pcsqdxg zvql -mneaaq vjrg jidlrzz phd mvxpivd ldkhu -sao xqw nrukn gatkz quscpsx vmz oscoeb -goi wzxhb rrk aylqqcd mlcbvvf ororn heptid kdu byevr -qsj lsbieef deez vzwdx hez iwd -lmgfb keqt mqbsuis ogrr errbi xiqe xsszacp -ato hmk zfjaj kmh plxup cida dqd pfwh nkbxvpr buajw pxkrvnb -cli bdwu vrwott vowtrt grle -zisgks ciuaqr zvk tcb kvz ugmtv -oegrojm wofpwp gnaocx rweyull ellhwow dtefylf dqsz oiw varr bcirpf oxusz -oydkmib oydkmib yefts gbl gbl -sruwjk pgkrp kea gppkr zdcky cfljh -obpxbax jhpcrj slcsa lgd fborz vvpaus wsrpsws ifijuzo -rixz jwh uhdaf hoacv hdfua -kntk qprmfow kntk tbmcjx -vnqe ooyxtb ixl hdmnpn orpz ykspl xromvj kowtq wmho gquos -ynk xjjqw sut lmtub bmtlu zdo dztlk bpkuul smhpx rbczg -zals csdbe sbj dibicq kdfwwt -coyy pjddlfc lwvhyms ldjdcfp ryubz kfwst dqjrjja jtv jjjaqrd -jaexhms iqoiln ewgyr exmnrr fsr lgmyy fdofhn -pjgyn hfoz zbcnz nczbz -ovntivq vcey vdrkse giu ohyaxy ionyy fvpn yvwrgrv qta -yelpz htbk njgeyub tggh mdthzp fwyux rduqli twlhfp pnh gywif ttn -yxhsbil vplsmmx rgtq grsf lyibxhs hctnkfr awg lmloz jroy lpgb wga -kzytass szyksat tyskasz ehmhhu -jkus hwjv ymnnkk yffugg cvtnits gbl lywkn szihcn dbrbalf rxqpbqh -koyfcef wkom mwok qgjrytl -slmhry lcr slmhry lcr -mvoxbt cfkz purnsui xar ouhtc thbx -xcdifw kvvxyrj knac qmypw bou tmukqy eusgaoo bktiu -ablgnhb axumg bwpxnjp zqpc vtw ghhoxu zqpc znfpvl ghhoxu jlg ntdk -vmvc cdkhrx cvz rvxk mmcuo udpcayd lsmm gufduzt linj -mgyeqkv hqionh rgnqgz kkc qrgnzg egkmqyv topdp -koa dimwx gjxa atlfdy -uuez ueuz zeuu ezo daq -ofpaw bgomvmt mqa dexpy mbipd epyzcoa nuwrh vwly xppz qkjrleo rwhnu -wok grxk lchvtg plrzr lwaax cfeu ijapws dmkdwc cfeu -zkd hysxxip hlydw wicsvy gbwoaw dapre ktjn dzg uri -blzh hblz qgmjceg fyf -vkhpn xnc ogva pjrh cxn hkpnv -aja cldzta tdcazl lorr fwmxxh knilf ges tdhp gnlo vihrl -ucpr peair nlbmc msfg -trv ppq bmo xqd vbui yegsr xqxawu fvuz aclhspo wnan -loiq fvg kare rmgq hir rzo ossd ziw renh ygtkjys vda -xmans kio alexs ujekfl vvf ddghn -fcxvsf bjuytet zrzsobo uhn mlfzhlq bjefs -zys htlqvky plno pbcqfuf fjwc vshkxrl lonp lyzmy dqmui vyyc glad -tlc krhcter krhcter bolk tlc opryl -idcii dverl uswb wusb zgax zhbt gjsnlso yhs -cti npri rcbxjdw ollj nirp ghfvxzh -blyhug aflnrrz zudyw ccnstq cyoju jxtqoj ntuknjq gunjiwy ycuoj igac cqctns -bul yehpnw jifjrhc ifetu ufrodp hqzpeqf hdvpc qtvgxg ibb wcxsitx xztshb -xzct scetn eoaufyo jtudgkx xrpgxip lpubtq juezstc nuc hokswh obkf ipbu -nfq lwpmn qltal xnphsqs zlrgf iewtrtd mqzsob duokpy kfbqs icg -vil zjz xkqrvni uay ystq -terrrnt lnfg clm lbs ptpiy ybcuup ayzjm pqugx lmc yppit mbf -dtajh vqivg vnblt fmn qxkw stiwna pclrrr fro khu wbslnqp tjyosu -uqlehn tjuiy obt uedct bbwiq uxndqn -hiqfovy xiimca zwne ivunvjk cmctzi mxnnrx dclib xzaoq ieztkg -shpr xuorihj chuwq poadbo mhtvex gymsp iltgl sypjfua fmyh sgiv -alv nxjt txnj bhact -vjvtrex obmrxk fgigs meixbc fggsi awi rxdjpeg -ypwo oicmbdw xbpeeyj uabzj cjvutvc oicmbdw immtmks -exijri hogl epr gzdqyur xiiejr pre ihzlgzu -rlh qfhx lrh qmvrx -kogq okhd mivmivb mivmivb okhd -taekt nhjaa znbaahn iaospxy jawwf -ytdvq ghtqwud jkiig mre kzmmjxu jba nwpykc -ktyzr aczd exgadhb uinrgac izazxky yyfe -yrifb qgc lsiuapg teyelxn ugezu -wdzkc ltx fkhncb hwrecp kfbchn sfcpc hjvq -rjdjyt ahwxh nvggsmx lmz oshd xbcik powse ahhxw yhiq gxmgsnv -qdr qjnam gag qjamn kooek mqnaj -pza gml opf ilfbblu kjp luilbfb rhfrzgp ixagj ofp -yphz runy dhull bozcsgk wfxekrd akgkbz urcphc -tfyxwol lhcl npik beug -szatel yfkve yfkve lzqhs -yjzqon pcjibu bdncmcl kczuymm pbmg nyn -rerqvs aoxucwi pmstl sstawu joqu abvcchg mvgjn mslpt vhmfkr utusuh -gqbec jjpqdh yeaiavi nledfi jhzwc vyxjpf momnm vnknjs nvgjzik ipm -psirt rispt lrkgma irtsp -jbbaph xvunete gsvnr mjd ifxhpry cpsx hmuokkx vhcm yth shrrl zbhd -gfa bcmlxtf sqyanrp cugg qxfvftz pbl ujsgc jajxltm gugc oil -xjuhyg aht vmyvzhh oby oyb ybo xbybgmx -atfk qjudfzz mky tfy -nxk yzy jqgg qxgjt bevvvv efi xcbw bohc zaqlqjq -hdc qpnx ygmtqw acvoa udboxw dhc klh mwgpk xfpuri -cycgbkq skwhyf skwhyf veaqss skwhyf -jnezf jowjt vsdu uck scgxd fvopomz vfajslp -djvi epgkyqn apzd cpm owm kpwih fsr adlhqu jicp pmc -erxlmhj wqxvofi ugj ttrmtsb -omku vmrgoy tdicbje ewml dfnwbap -gpih pyt ptsmzc gmdbu rqxkqmz objm nurxjz oozbere ztxug koth -jpnl jpnl dmeh qed -intdwv ksgw qwlzhq zpd lrl mwjl dozrjwq aujbet bsnf vhqyg -eqs uot qyz xor aem kmrh mrhk jqx tsbrf -irytjab mdzm qbb kkjt gofiwo xgbovg kyeyxqn tcks tljhx -zgejy qodgah nqavvx xnigdvt -eqve bizrxq lkhz yzwxgt nwe zfe sxypkz xnssept -bxqn lkfg yfxbszo sphwifz wnj crhbq dvokzw -vzn afatwye ogzvnu vnz rfjba xtugnj kpbgly ocsjd -xrc cxr rahv yvhk khyv bed ctgbuq cmqwpqa jlbg hpj vmesvw -jbshkya dgqw lfl mzcch jxsg czcmh ifruvlw ufwrlvi xcczlol cqqchmr -rbk mhn tnmqdc sxnnn kvoa mhn sxnnn mgemob ieiyajs -cqi ghxg ghxg ghxg -uqwdxn qli gdtkngp gnptdgk udxqwn -dmcczr dnjaqc qwdta rhrbi hkdwe qdjcan peic iulaz xns -tcmppb nzq ecy sitdud nft ecy afrbf wvnc vmfpzx tcmppb cgb -plitv efnpq mjqav nrxxo izg lpitv rwbzdo rdbzwo -day dntga adtng agndt hhvtd -yrg iudsh gyr ryg -qttyeew tco flq bszw jkzftc wdh efcwnp mja rfmju -moch prkze uslzyv plhjuy kxczyq qlmm hgq -xtg ypz izy ixg bvs xlqgj xcy sepza abiylsg -wxvsxn bqag jnlzgxq ikxwa dfd plqxl xlgqnjz nuqvoyb emhodso gaqb -bzjdsm xmxkj fhuqn gauyw ntl kjxmx zcxdr vrds -ofjcc uxyzlk ofjcc ofjcc -zwosex kkvwobl cpudsmb kes zklf bayuojr otqnyr udbbs -iqpvzh ybds piovrh oivprh voprih pov sfl -upns cpeelht xboyk itb hsxdmt dnwgfbw upns fygf kwdpxzm mli dyy -djwutl sikh shki ikhs gecd jqkon trqyw -prbbdf vdp bvvfjcg ydqb muxygg -vhpurzn psemqe xwqfk hrvonxu nxkxacq -xicmhss tnpja qiad woipfy uvadcq usljh hzgs jntvfv wzikk -mmupc twntp upcmm pumcm -qnisuzy lppnfd uiqr eyqbain uxlp eyrfwjo olgkrps sbikam zin vckr -nmokl skfni jcdfot njzqeaj nqzjjea -slmaxx offfzqp wudicrf nfn rwfcdui cwirufd -paffi murnjd oyj lbtjdqe babuas dtqh qkt stapzl yrqlp -eedc rig zmnfmn edec ecde -bcfdf edovdj lacx nzvze sordvxj ybs ujh zvvvp rzstejg ueosuq -xrrfsd okuvem znzlvmb jwzcb bfg bmuxbc qzwfry -pqgxybd cvgra acgn ocd ancg fvfcx fbb bfb zfzv -tmmv mpywyg fwl bnvcv lcnv flw -xxnfbro papc ianru beuzx apcp rnt -wuyhycj nrnc cka ebg rncn rvo wcyhjuy -thh cmoog hwf imqfp okzpxd -rzxiqt rtaiy ytria tyria -cjkmro myif myif xyirn aqxlol wlhwibi dhzsen pzwgm bfbz bufjs qwffg -mxhiui umiihx zomyll vfieccs -yyntf rjk iivgj mwh rjk -dsshx wsmaxhc xcwuelh rdsgtr wsmaxhc rgtsfj -rdh nwlxiwu xsjzbpr bsgps -ufyo vqtzkg kpeohu mxzt fyuo gawgaq youf -hzbhut bxsnjwb zuhhbt zhhtbu -pdz sgntypg ragev hrrji goitft yphnebs xjzoo sqf jsuzijq dsocb hcxg -pptsq woomypc woomypc woomypc -axcg wfbnpql ejqb cmnn nncm csvlc wraludb pkmp whtht tfpicer -moom oomm ommo vfqeii -xvrgpp rofl yxyrkb oage nypzau pwfnkn jxnhkw cyxsi clzb adwpuh -mfbz vdtt muzhm wvwwfl ttdv -cpqgvbu byc pgfrlkr aftl tqm zcqxi juu gnf ppovxh huoa -konpcp lzordid jqng lwxs nqgj gghkxmf kyn ngqj -iorhccj xfygc cnfr tysqc xpcyf vmjpitf nut zmrk mgbrtb tcblxwf dkadwrm -kov jtmp xoatesx qxkilp rmggpfx ltpxzwf vko reqms mqq nps -hjigmk fyqy wpuwe mwmso thsimfs okcmeyh mzqkez duzaq vzhyrm uyvpkox cwivpls -ukoerf korufe zhs ntwfz hugem vriyk enfaib hrrcdgf zllsk vkiyr -shkx khxs wntpjv qdevaw noqyht nwpvjt egh hgok mukdjfi law bzbvjz -dquk kczxsq tdu trnkjs wqtdc ybvcb -hlrotxn cumcjkm qwufgle ylm nejh hnje pvaigrx myl sfvsd -szmvisn aywic vsnimsz iufmybr -zjozr zojzr qmn ffrggdh wam dafvok -nxkvlhr posmf posmf posmf zhlzb -ywis kpqpyb qae zqxpuz pcj hbsfz ejlwa lajew znuom -qxsl ussivur dstd avojo -yoeagao egpaqm ymzf kkauy ivm illir wsvchne skmamvn nqxc -cldo ixzzy vhk nra zhypgab -qjdd ecxud tbuqq mpotbdk tjdpczn knncm tyy -rbfc fhhjf innia tsjbbbv fmtcuup rapvhqz ebpzt whdbms gvjoy lykl fquvcby -bihhfwi lhal udxz uwjwp dmb -fekxamy uophet yzvv rqj zawlp ldrv mdymkzy taauf -rcwxvmh edueui ltdyo xfghz dgjig senm ifj -qcu fii axmgijj ifi oixjfsg jxagijm -sdtyr rbdh yvnvq czzuig wro -lot xkto cmpiena nht ozcg aotcw xiegl cyaouj und lsclep cexn -pgihljk cmgmv sajhi zfvbqij ogwoc ajsih zmppe -jexwkdp dwpexjk mzjydfu bff rubgdb -yshfhx emkl hshxyf mkle -dxgti jdo tkwprv pbxbrqd oiz gsbdphd qotu utfdnq tzvve bqc -ovdf bshfxyl xspjpd vljdsm mgkd djlsvm mlsjdv -etyia eytai sfq qafj xzgp ewhsn snwhe lhqp -zjz mwh dorxm ges gexo rckwsa dltoq mmntha -hqkuj ypsjcxo dixbe rmvnhjh ovnr -edc iffaxc lolu xwrvpb gva vti vit -ceuxq xbwejr lzyvm rozseit cwe mham fivpwj qtv omaktaw -alzdrk tsxbuld mdbq pgbdtoo xwf vzalric nqe jqwlxsy cbtylu dtubxsl lqm -rqjmjcs exjpn kpilcgu ihcm lfadjm mlri hpd vqs cxqwqhu twxrtk -aeuvlcp aubvnw riedvz arypagp uuvg kliehx cokt ogh xsdw cdsyywv -ddwrgvp bscaq bbfv qrbutp -jpdg uey eyu uyarl zgbk qyhqq fdvlql zmwkp -kbt bkt lebhpfu smrzt xalw mmwa zmtzfry tkb -fcvcv oewfzu fvvcc mldww lwdmw -ejrltsu sqoyx wfvsdbp bfdspvw bfir jqhgrmt ofdmrjg ysq -jzwucwn erqjd eikq knpf cvk xvqnscy eei wvfjzmj xujq cqaim boev -jqhkmr ipjpj zwno ybu krhqjm zqfyyzb dyciy -ugwsw rpwteje qtvwi pwyhrzt hfcdfmc qbovk ibws -ffy kdder qjookz bfvmvvq yjzuaj fvxllfb pjyz jcezhye fimyydt qjookz qjookz -loupd nwsc yytvuqo ltcqxnf -iho ulvxguz fxbf iqu ofjtmvq xhs ybbusd kxg mebdnah ucttcf zufb -wzdb wumuhtv kef aavv buu xmjtlur faaccl wospwff bjasr eapfsi -jau qzszci ciu inagax -kui tqig fyovsp fvwol fyovsp mzth tcp nhoq -ajdla wtpj amylu jly tvq wjqef -ofqc einz bdze tows bdze eew -avwavzt aesrsjv lbmpi hllv chdbul ezelxn -imcprs cafb clfg rsjo iylqu nvk vkrq izezlnu vkqr tyhnv -rwj zboui reh buzio wuhpvid cpzy jrw tsbuiby hmxwqr ute -ixq luwbi uoiwsjh souz ysoubw uilbw ffwjvw ewzswoh hci zmfdaov whowzse -xrhgqf xrhgqf giyv giyv -toiqgzv gakg udgdlb wvi carrn pjyha muqclu -wuxthi srtszr ourab hpds bakvy fnk yefe yfee doowxcx -ijdc ujhvls xmy hwg yetsda qelbe nang xgywo wgh -bhm icq cnam dec enksf qfctz pwxoo bdf cnma xoowp rbls -jguzh fextz yax kesaunn waljo jltcza tfzxe dezs syi ebwxnks -flvq bzgd clvqw ahtyvu xbdyv wssxx boscm grgl nqcg -caskpli hqctxxc nwpyo wjlqfqf ebti dva -wmsz fzpd ikgeq gti ejftoou ezs cqef mybojc rgwz -mdaay yfppa pavl fuuvfkh hpod tpb dhxmia emdecm rbqcwbk vecyt -neha rmvl ndp vlrm dpn debghi vyhvc -bnp zkxdu iqqkesd abtlx hmjasdq kyvekr krt srrjyd oxmfev oot -dumlcqd ccm hyir oritdz madjjw -oakqrs advfmu verrc zkfdcn btndsp -onlkinl rdtm bscfxre bnu oumyrvv kgc zkj -tfxfsgm uwmic agswclg uofezgc -wpfdyjn kjlihk etbot fbu scm gwccce xgownte wig cuaijbo -bzbdk etozk qracb oftfoo lkooe -xupzw vmxwu sis wzpxu -gbz oqbgh jwgrru bzg kwmxcfc jrurgw -agyjnyc tuec imxlult omwiyjg fiwnoqx nhmnro qtg kbr agyjnyc -koiq llreotu elrtoul dubfvgy whq -htm lll crzppb gdjaae nsmxzh gnfvn obiuy ymspzbo iuboy -thm xlfrr pbxdfo mht tygi sapxgbv mmngzf dej -eus seu qmstw ues -yvfsw esut biblze kbjcpk estu xih qzki ezlbbi blzv -ohq ugc tqqeo jygvpwm vfs ldnfibp ycbpa sml rmime -kuuow gbg nzwdaf wiimtg lam oqmm -wsbwkdd hda nqk ticz mvt -gqbljyh zqugqs cjod sxwlqy qkfs wwvwvt dsojb qbhjlgy riusoa uosari -jkphfx dbt les jsvoij rnuw mxmmchu dol vto swn -qqxe vwvephr twdqlyg cvdu xjiych clooq vkwavl whvverp yuz vkwval -txtbudi tiutdbx wqhx tws utgbf amh hmf izsez ooz -egdube nhsxjs nxjshs xoy sjsxnh -egdziod diodegz ejxn zogedid uhhkr rnm cyvvuc uqbl -rbn pinwag sidwdwv jqdbe jlbemk blkeaqq ipfqbtn zkrbp -bdryz sbh wxvn mhot wemsfm oemkff -vxyn xvdwwo xhd vyca zxjaw vfkz xhg ofsphks dyq mmzzd -yjrqsjf iiesdh envwyx rmtbmiv ggzsg ukx bprfym qmyqc vag ymho hjtoh -fuxxrd wbweptd vkoffr wbweptd -gfwcez smetli yjyh pslpz qyokpsm qsy cxjymg wqfkf obuq awz -eqhm ceest kayf heqm -rdi dti vntcf ewkmpvf jjwoihc -sfq qlb xrm ocy vtnj zdznbal zvon stln zwnj wsgalvq vhphap -pya jay mgnyo pya xmapdn -hrwbj xhr gvwl ktq ktq gvwl -rzgqi hjwtthl kxhggbl wepc hgavj ctmqug -tzfwkc xeqfath iiuwq iiuwq dhwuvy -gibagy smq getjofc lum msq ulm xuxu bilrus ily -xlv ndrkch hdcknr nqltoze xvl -wmc vuzlrj mwc atp cvpx atv ujatz -hxpafgl ymjltv nvvpy ahycdk jhpdcks ettm lvqyw ertpivm dnezwxx usi kdhcay -vrh hqyomv mcq ilwjbkz yprjxad -ugv szfitxg zeluib pfj ijm zmiigxx gltxzz jzljhgh otskue -mxp bilj jlbi tce yfted zxsqas ftyed -ykasqv ehye kirmnl upmi dojwmw wzj ykasqv ifixn vreoypz -kerbgub nnroqk onkqnr gbebkur tjhl knjo ccsem yozvrcg -ygq evkoj wkn ffljhds scxeibh egsybeg mwvi vgjblj qda ywqpp -hocvpl ozgkxp xgmj ejzyxm -gernu kks lxe nxzv sypg xle goz -xoatis fjp wzlbo dzkonz jtutyj vdonj swro tqclemv xhomap ymeqkua vaxcw -mxcyjs ywyxndk wng vpftv nsuvu -jmiyyhh gwser shgcu jmyg cjzegc hmhe eopg kmkan -smdd dmds mgqhtkh qtamih haqmit skkcy -dnj rmggy rgymg uburbao rymgg -klcpjgq ons ajyv sqryt son pjlcgkq xlobdt -piw shonk tzi mcdumz noskh tebolw yaypn -ozm mvmjgtg nxj weommiq asnmhzq xjn uobztuo cqgjh utfb oydt ommiewq -qlwgsc vvpe xgft ahpjc zjtx iyof scwqlg dxgcokx ltrefj xyzq rwto -ggqdd dqgdg ggdqd kjkmmfp -htzjam fjbg iagc xls iagc iydtf ihxl boa iydtf -vhe nqj bwgdoi hhaoa qtulz -axvyja hpdkwee hnryj prou rgadv oubjdqg knjbc -caz xibj wqkzwe peioeya vmz hesy ftb -dudwcr gupj sjrtzc xsqbb hiet nujv bebcvsj eks uuzlcx gex -kywozi tfzuc mflssw hnxxxqt zzc tzfuc hkokuv mnjg lwkavjp lvpwjak xez -izgh zfv cingjt dkf cknite qox vfz zvf -ojpu dzk tehpgnt gntpteh -glxfxa uxq ajtles ahgzn ajlste zwgc mrpu adz wuunwhc zda -hdgdtn hnoyz aromkb qujfv yjgmn tbf atw -uyvsv oaopjv uyvemxk ldpp tthe iisjk txr hebmd yxevukm rkziao znt -ypdr mnwuzvw acpg kzwz ywbn wcrr umrnlbe lkult ljify azyhu mgqoo -abmpl omsd xmyl mxyl mgoq kracrf ufm ppwi zpggh -uxfdpv jnm vvc vchunhl ubv ktj mxolsxz -fcja eci edzrb nlvksaw lhf ycohh tfztt xso ceub tyv -rkwtp tcmmvv kufg cxui hdamg suuaej fgku cvjlv -oldbgy riadoyo djsi wca zxoeq pmemqap aijxa -nyy ruxcosx xisqoz yny jvzfpbe tlfdiaj ybd jifatdl zuzv -kxwdz qvrvx svllp ergmme -swjfuv eronk favcxfm acptbh pnbjn ciqcrlt rgvdnlt icgahb -ddza xxfn use obqka bfzwjp gmf bld fyvde mxdfdl -ame bmxbyf ame bmxbyf -rdgby pyfog dybrg gdryb lpztd -sntg impd uxgxai naoalb ntnk xgix -oadpmqj oso criln izih oos -ouzjq gtl ito xefqt phnv ouzjq hoyjjj -mlp rboq lpm roqb whvp -tghcw ggshevw dzsgj ggshevw kec ggshevw -kmwhb kfcb mbhkw gemz fdh -euve veue kplrq evue -hikfiw bcdktj hcnawja gjasvwc vcht igrzly rkxijxe ikfwhi dvmp -hvksis kafs ktcs sfyqzyt etctrgt vodwr wff tskc juobnm -dpcsodn ehwc pglywfl yhdp mdiyzx -ibog umftejh cfm pnxhna wqwx yabnk ygws dqw -dezz tqw qism rarfe fpmlab xvbau irwtfs wwmoyss yvn xetqp xtqep -pchqwk npsmd jefec qok uuc ucnpz rlkakn -kudh rjysb xrdbx bkbmjfo xrdbx -rogu ssdwsus voa ncw obkxsr -tflf hlevus scq rrbpat tau wxsq wxoblt -rzr lex kqdy whtj ffnys xlgkkff msjhy dimaq hrc wyde qkwf -ghtwd wernjpn tdgwh olrfvmr edq gxvp -rjirvf skhdgln aauit bipu mubjiwp kowz gyjfbjx cmgdqs -aftfpbv agajyy aqjll vsf twh robpys lebt eav yribup -sby ymkla sxkbfwl awmd nhb vlp -kizvjj ycjswr jkzjiv vuy jijzkv jcs -cwvch xzqfal tephz lqfzax cnkbdcr mql zflaxq -jjxzwl himpra ssjf bibfiui seeaq pzse -jogrn jogrn sqew jogrn oixgwr -khonpyw iiyxir vybhc ndnxxv kzlt ipmncn -okqkqu svbemi nfn ovd xgwy edd ujet nrrbv dde vdo -jobvf dus asvio vaosi sovia -knmz qbz nkmz zmkn -isbmopr unduey impobrs hea zswciev sopbmri duuj -ocs ntgnrdu kbvtzp cvyieu fiyn znmh lhrz ixtnzrj vktbpz lbpqx vzkpbt -muduhc sabc dlyoisz kuaz ogpyepw yuog ictiiqt -xjflsf nfklvml thfh uajnmby cichyj xxoqi lpime bxpyx -riahifn bohbgd obhdgb jni qzvkf ybp hjkkwq ytutd cakcsh smfdoe tuytd -iddku nccp zgtl yne ppzpqcx lwm -refpcz uqt uqt uqt -mtn czxkagb nmt caqacrg bcakxgz -itxjii uethxbj vpds bsqod diqax inv zrwt doepe -bfyaj nbvhg zmi buf -dtre dkwdr nrapm qtfth odvt bbcnae vxuk gqm enlg -ybt qcfozrk yzrh bfp euuozuz pzsdkxx mhi nbkzprb -vpuhqn gyx caint antci vfep incat kqdakdx -ddhi chgnjk ibg xbemitr mjtdph eovw -ngbtuvq qdttlsg dbqhhwk bkrqze qdttlsg qdttlsg -evn smvhi dgcmn xjo ascc ahbpj uvzc pwn tung -ksu thr omg onvsqzz rllakar ysfjtfj grxwyx oawix gpk suk -qvb iouav yhtndkd vuoia ouaiv -kud kofcip hcczrgc cvvxxlk rvyamwe duthdzr dftun -rgv ynw gph tmxwfup nwy -dnc trawj kwzbx trawj zvp -ogqxijy tbqtsg tbo vqinnlq jbvgl sfafh rve mcxqs ubh -qccr lpv puuvdyb tydaflf uxic -tlon tbfwkxg tlon tlon -iytiz qjlqaqw uixb lnt zwro uzgxqfi gklgnqs zwgoidw iifk wkwdo -tmvhxw tmvhxw tmvhxw fhiqpjy ejk kvysd -cmphg xjjz groiccd dvetuk xbwa zhm lyi ohhd neg bxaw yil -kdmzopy lxx bvhach goxmxu qbqvzcm qbbrhvb nrfom aixmio grpxz hbrqbbv lkucih -bnqn phqr uycuxc mopyyfh bbpesqm stgigq stggqi cwtjm asqhpl imvlxj lbmloo -pws iuvbvjr cwccm qbr srqnstz cjebq -bfh jobkcy gtbroe lpagq icmax jobyck fbh -ounqdo qrrr pwi alho rrqr beao rsioepe -vrccqge qvcgrce cbslkjs qnclw rvmjkw -aaxjns deupjs wtgxtp penad depbho tbrdt depbho qxg zhjxpgd -drqfo kbp jfa jaf -izn oczcitj cpae quvzqo iwwk jck idjdpm -ecort zgcvxx bvh vrprsf -fhubfvy ndcfjo kol hyufbfv hvpka -kpt zgajpc rjvsxa gayznjd -xeoixk peq kfu lqa mjnv mzvh bicl hlfk -wyt imdx lksy twy -xeptp ilxs qbsqzwn rsy slxi xtpep dsdkekl -rotvbt fuirp elos ciu nhx bxej trmtx ixn xbpc vrxtma -skcprn yns sao ghlq vftezvc aaryahy telt -fkaov gexa xijv yiksa xega dhgw okfva gxxs edkecag mqbqvrm nrzcqub -ljc jujxeof fdj gdzjzr mabbktu pmyrfv uspven zxry snt hrah -nhujhdr jdhrnuh midm bbavhpp cpjk zmpbasz eptrpou znq zqn -ywzfq wuu lfflon uuw rke qzwyf hjbms gakx -yqrq zsk jzn uuuzrml kzs lseupsg waynfh blech -gwyqej weyjqg uwuje uujwe -lxud rnwkc bgygkh csq rfvtos ystqp keb gkakodj uthcce eqxifl -elvj evj rfwo vvgkosh aarcgjs utsbh orwf jxcqvmh uowmktl qtgf -bqszre oxntty ombwiz mbiwzo -ccp iilcc tacf czk giwv erqi jgdfah wip xtrzhv wosvbyb -gymyw rwsxeg gvydr izyk spsonkg knospsg -djj tbr tbr tbr ice -yyzh zkykapw puydtik ysxc hjumhsd cuhhw dnnhida yyzh lnklymg -nhbcxsu ccrbbyw scbxunh ghxrkqh brcwcyb -latdaav sexa ipzuzjl ayusb etb fshh -giz akqd vjmabii arfuzgv efrww jxkvolg efrww vrnzgbx -jmcc vqy adkzj fqrkdo tjrczp ccmj cfponk rptzjc -jsviu sraw imsj fujm cdf xwqhl lhz ojejzuy trtqblg -ibz dulm muoq quom etvjzxn tuhrpp jfukac jqctqn qhgbae msgmcit ludm -zgx bpfa elhp rnyqtq wyceube nkeuxz -lzxfo vygpecv jszacku zfxlo -cpmv ysaaj xnp wbvqg hrsiuj venjxna yeqvwmk ftaga dcqxc jgapb rqdixp -xpbbe tyn hfdlu fto wrgzkou sxylv cqto wdv xqc pnu rapk -pkrxypl wnu oipq tzbhnc gpug tgzf ofjb -mvaz bwcv gll itgcye dessw szt gzimgeu bvmohh wbywyhc kzerxbr anjsive -lhvnrzs qkmjwy pnyciwp mgp jfdz ghvtf yusfzg upab -xbscukx aubulj snbcmc uscxkbx ddpucyg -hgv ollh yzpjmpy fcicyae vhg gvh -prd onyd iux oik xui -zipadig nvewx cir lbpcusx dljqy -ifyxzsc btmy lsu tmyb lus ldyzx -egmyxbe ieasvek dylmj qahtatr uyqgbk -mejjczw spj vaekp kdud -vwan mgenld mnlged vpfuil euoxlr rclkpi dfknyoa rhthij kcyxl qaxab crlpik -pqm eihogk iwml nuauxi ngilkoh jmu mbdi cqxz nblb rmuj zczdgp -pswbe mtzch wbeps fxtnc psa aioff pas -prwrpvz oadpqvz tgzrt giom pjyihh rxdir dmya xjolzxv -khdybe obqkjn kdq jkvmgwo enpat wyw qjbnko waid msest wwkoyts -yep liv ofmtpod imdd qyw -afnrx jgn gxarpb myltj ggrsajy mdaobjo vbtn vbtn zlziz eds -hqr kqu oub skoeqk icnfm cqvld aay bto -rga odaf exoosh pwevx zpbd plaa xoseoh -mbr gqu oxvchrt nqa larxmjx pfozej -ozuo ywubjbg xcua eblwqp nfdvw hmhen zkjfu gmhgp bsyi ktprtf -src vrysby srybvy znwjm hmypwdl gdmau pqe -cldr crhi lbaq fbuduyn hygbz uhida -qrxukq dygkp oaks soka oask -vpido ajgfq pwlv hezt fmg epwrxo rqvjke iovpd hhkjm -anxf ydl xnfa hqph olorp -exydcg onxjm psqlbv ehz boar hze qsblpv -mnzrvc ipj swg ijp sgw gdkntsd fzz grqwly -erpq qghpj fay gci uglm afy -jwbq hbxaub jpdilyt yvalrlk topl qup -eczonk ftcc paltirb owz tihhe dglxory wthvqcb qdnxm lirejh alyxsr -ooruaby gboyeu lkv arrz jcqyzl uxlfk fhmeony fcmh -wzr xjb pwmf okqj adwcedy lkidve uwekxf asbdzr biub -dikhur pxgh urdinjh wednf ulzdxs -iplf byt tyt qnnlba pzt bednml ljjtkvo tjovlkj uwms xat -htzk ltmfha xikeze atfmhl fchxhyz -lqala bqwgcul vetaa xuxjau zcb wtdmomu wfqmpq sief uyblyz ahv -aytvvo awm ojaaigg awm dbfaokz -abq npcyld fzbfku oia qss jkxldm wgtmki pasgxi dieix rpqnuac tecnfy -nmr qzfj qjfz lsz vnahex -djxoo jzlkh svy xige -tjlkkg glcuvmh fwzlhi ecun qlgulj hrfhyql qgdlf ofakqdf zokkvm gelxkq oowgs -upfpk gfstjlv lxc rjd nhj sbq jpzsz zsjzp -favd nzqfdid nekfjsf mtjndu -sgdqx uvpuefv vhwrgd aivav gsqxd jdhfoq -llaf cthbgy njrpw fqgkx jzf xqkgf lnrfrm gkxqf -wzdwlc wisst alw kyjeur sjsqfcr tta bijnyn whfyoxl -dtjr baxkj lmnyrlg nrmyllg -mtgky xmwf zdko nnocxye gytkm ygp hixk xwmf -maudjy okgjga uadjmy dzfrk omd -azz ajdcqkd bcafn zaz dcjaqdk gylyzo -xzvfbf fopmfxu mvftgr mfupoxf coyhof talcc vpkslo diff --git a/2017/d04/ex2/ex2.py b/2017/d04/ex2/ex2.py deleted file mode 100755 index 6279f97..0000000 --- a/2017/d04/ex2/ex2.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python - -import sys - - -def solve(input: str) -> int: - def parse(input: str) -> list[list[str]]: - return [line.split() for line in input.splitlines()] - - def validate_passphrase(passphrase: list[str]) -> bool: - return len(set("".join(sorted(w)) for w in passphrase)) == len(passphrase) - - passphrases = parse(input) - return sum(map(validate_passphrase, passphrases)) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d04/ex2/input b/2017/d04/ex2/input deleted file mode 100644 index b7384b6..0000000 --- a/2017/d04/ex2/input +++ /dev/null @@ -1,512 +0,0 @@ -vxjtwn vjnxtw sxibvv mmws wjvtxn icawnd rprh -fhaa qwy vqbq gsswej lxr yzl wakcige mwjrl -bhnlow huqa gtbjc gvj wrkyr jgvmhj bgs umo ikbpdto -drczdf bglmf gsx flcf ojpj kzrwrho owbkl dgrnv bggjevc -ndncqdl lncaugj mfa lncaugj skt pkssyen rsb npjzf -kdd itdyhe pvljizn cgi -jgy pyhuq eecb phwkyl oeftyu pyhuq hecxgti tpadffm jgy -zvc qdk mlmyj kybbh lgbb fvfzcer frmaxa yzgw podt dbycoii afj -zfr msn mns leqem frz -golnm ltizhd dvwv xrizqhd omegnez nan yqajse lgef -gbej rvek aehiz bgje -yej cphl jtp swe axhljo ddwk obwsq mnewiwu klddd -ipiev henods rpn qfpg gjfdgs zcpt sswab eosdhn teeil -gzje ydu oiu jzge udy sqjeoo olxej -mgn gox tcifta vzc lxry gox gox mvila qdl jipjnw dvu -hxk xhk unhdmdz yomze povrt nbww bxu qqsqc rvuk tgffy twddm -fyx fyx nzkm fyx -ymnoc zogudq yncom tqrob sidvy dfuu ccjpiej yidvs -bxebny akknwxw jeyxqvj syl cedps akknwxw akknwxw zpvnf kuoon pnkejn wqjgc -kcebrkj zmuf ueewxhi mgyepbr nleviqc dez -argavx fqguii gebohvw klnrq rkqnl goevhbw -ywqi abwi eswph nlplbl pswhe lnqx fpgk lllnpb -abpb mpkw ampey yapme xnuyj -tmuaq asd bhbs sqmbsnw wsbnqsm ydwdncn rpa vrllkh -dnltf cck djy ydj -wywwl scezo clowuz dkgqaj dohyzcp -diimshr vlmsnlj whqb dkicau ckdaiu terp kgcii npqc vvzrqzv nol -wfpxe sqf tbb ruqpcq zfgb -kajykuz tsxgtys vuz kglmgg ihnnn plyjxj rcrvo mij plyjxj jqiur -pxs hmet dwgvd mvhkvn cjxg yvid vmhnkv kwxz rfemsua wdgvd okixk -lzwxas ddtyeh ivyama crrhxdt hedytd jfw -vjfv oyd fvjv kfwlj mradbx mckseee xradmb -llga yytxyvj lstspek lstspek lstspek -fabgf wgop fabgf bvsfoaw -grqnbvo tntomdw hizg tmotdwn -mau ufkw cxfi rhehj ebe xyv rhehj acxngo arl qtl rhehj -kbkto stqjtm tpcwshj saerkrt pffj dthp pfjf axc gwmmfdw glnqtdy xmskw -veff zqm hzhxap lgwnwq twsdk mqz xbbarbv cdx fhnwt qjcji bbvbrxa -fjw eds hofskl nkbsv des hvx xyn -qzort qzort qesz rtq oonk vwzlw wapoj ifr cta -pja hvy nhjg paj smtfe fmtse -xvi tcjj xvkjtab nqftt aumijl xkd cmilegf hvsmodx uuo igmcelf mslkq -mdhezgv lelzy kzfvsqu hvmvaxw pxiqjc hvmvaxw kzfvsqu -hsicsav csshrhx znojm eapi lhmzq bbwnz seao gfk azk -pup xtgjyzy wqt ijeektl -ktwh qdegzs btj pfwzzho -xdkmdm izqtjrr iqbke vtp -fmrbpdr zpccv tmtwx tmtwx tmtwx bys -ehphfgq idd ehphfgq ehphfgq uphe hvrc jcscne nbnslqy -xzqucgj fcih fljk barz lvln hcfi azrb -cmfmclv mfgvifw rnxgn jpg bsnq wnduzj ymsdx smdxy pqomf -rlqsm qrsml emts qsmcowv scmvwqo -tshzkpa zwtpda ftsiwo nil tpawdz kjpa ptzashk -mnep sfc swjawtd vnwud gyulluw zpa kmwyvln evd btnmoi dnwe -jwq scepq redoxmw rbdzsa wlkzso kxpm bttg vxuc moxwdre ijtdd rzsabd -wpvo dsjox amuwjm pls lgwksva ctakgpl rmsjj lzwwpr zzm udg -bji obbn tmwyc afpmkxr glvrd kahhgpq rna qkxyntp vmd mloshc -ymq rtnr nxjzm pqiddrn qmy vgxw ull -mmzk ikge zhtzhs xyo qwe lll gjjm icetq qgrr mzwqa knec -kxomfck idlh xrbowo nyetbnl qskh xuwkkxe upmmmf zhvuyp -srcwyhl czgr xmhuws jueyh xcuib xhsuwm bxuic -crkueh beyxopz xpyozbe dxgadw qktmce rjropjg -lbktun imdpcp fkssp fhcpt fehho jqdnt aoewa -jmun pynzjo trs ijwcc pelf oft pcsqdxg zvql -mneaaq vjrg jidlrzz phd mvxpivd ldkhu -sao xqw nrukn gatkz quscpsx vmz oscoeb -goi wzxhb rrk aylqqcd mlcbvvf ororn heptid kdu byevr -qsj lsbieef deez vzwdx hez iwd -lmgfb keqt mqbsuis ogrr errbi xiqe xsszacp -ato hmk zfjaj kmh plxup cida dqd pfwh nkbxvpr buajw pxkrvnb -cli bdwu vrwott vowtrt grle -zisgks ciuaqr zvk tcb kvz ugmtv -oegrojm wofpwp gnaocx rweyull ellhwow dtefylf dqsz oiw varr bcirpf oxusz -oydkmib oydkmib yefts gbl gbl -sruwjk pgkrp kea gppkr zdcky cfljh -obpxbax jhpcrj slcsa lgd fborz vvpaus wsrpsws ifijuzo -rixz jwh uhdaf hoacv hdfua -kntk qprmfow kntk tbmcjx -vnqe ooyxtb ixl hdmnpn orpz ykspl xromvj kowtq wmho gquos -ynk xjjqw sut lmtub bmtlu zdo dztlk bpkuul smhpx rbczg -zals csdbe sbj dibicq kdfwwt -coyy pjddlfc lwvhyms ldjdcfp ryubz kfwst dqjrjja jtv jjjaqrd -jaexhms iqoiln ewgyr exmnrr fsr lgmyy fdofhn -pjgyn hfoz zbcnz nczbz -ovntivq vcey vdrkse giu ohyaxy ionyy fvpn yvwrgrv qta -yelpz htbk njgeyub tggh mdthzp fwyux rduqli twlhfp pnh gywif ttn -yxhsbil vplsmmx rgtq grsf lyibxhs hctnkfr awg lmloz jroy lpgb wga -kzytass szyksat tyskasz ehmhhu -jkus hwjv ymnnkk yffugg cvtnits gbl lywkn szihcn dbrbalf rxqpbqh -koyfcef wkom mwok qgjrytl -slmhry lcr slmhry lcr -mvoxbt cfkz purnsui xar ouhtc thbx -xcdifw kvvxyrj knac qmypw bou tmukqy eusgaoo bktiu -ablgnhb axumg bwpxnjp zqpc vtw ghhoxu zqpc znfpvl ghhoxu jlg ntdk -vmvc cdkhrx cvz rvxk mmcuo udpcayd lsmm gufduzt linj -mgyeqkv hqionh rgnqgz kkc qrgnzg egkmqyv topdp -koa dimwx gjxa atlfdy -uuez ueuz zeuu ezo daq -ofpaw bgomvmt mqa dexpy mbipd epyzcoa nuwrh vwly xppz qkjrleo rwhnu -wok grxk lchvtg plrzr lwaax cfeu ijapws dmkdwc cfeu -zkd hysxxip hlydw wicsvy gbwoaw dapre ktjn dzg uri -blzh hblz qgmjceg fyf -vkhpn xnc ogva pjrh cxn hkpnv -aja cldzta tdcazl lorr fwmxxh knilf ges tdhp gnlo vihrl -ucpr peair nlbmc msfg -trv ppq bmo xqd vbui yegsr xqxawu fvuz aclhspo wnan -loiq fvg kare rmgq hir rzo ossd ziw renh ygtkjys vda -xmans kio alexs ujekfl vvf ddghn -fcxvsf bjuytet zrzsobo uhn mlfzhlq bjefs -zys htlqvky plno pbcqfuf fjwc vshkxrl lonp lyzmy dqmui vyyc glad -tlc krhcter krhcter bolk tlc opryl -idcii dverl uswb wusb zgax zhbt gjsnlso yhs -cti npri rcbxjdw ollj nirp ghfvxzh -blyhug aflnrrz zudyw ccnstq cyoju jxtqoj ntuknjq gunjiwy ycuoj igac cqctns -bul yehpnw jifjrhc ifetu ufrodp hqzpeqf hdvpc qtvgxg ibb wcxsitx xztshb -xzct scetn eoaufyo jtudgkx xrpgxip lpubtq juezstc nuc hokswh obkf ipbu -nfq lwpmn qltal xnphsqs zlrgf iewtrtd mqzsob duokpy kfbqs icg -vil zjz xkqrvni uay ystq -terrrnt lnfg clm lbs ptpiy ybcuup ayzjm pqugx lmc yppit mbf -dtajh vqivg vnblt fmn qxkw stiwna pclrrr fro khu wbslnqp tjyosu -uqlehn tjuiy obt uedct bbwiq uxndqn -hiqfovy xiimca zwne ivunvjk cmctzi mxnnrx dclib xzaoq ieztkg -shpr xuorihj chuwq poadbo mhtvex gymsp iltgl sypjfua fmyh sgiv -alv nxjt txnj bhact -vjvtrex obmrxk fgigs meixbc fggsi awi rxdjpeg -ypwo oicmbdw xbpeeyj uabzj cjvutvc oicmbdw immtmks -exijri hogl epr gzdqyur xiiejr pre ihzlgzu -rlh qfhx lrh qmvrx -kogq okhd mivmivb mivmivb okhd -taekt nhjaa znbaahn iaospxy jawwf -ytdvq ghtqwud jkiig mre kzmmjxu jba nwpykc -ktyzr aczd exgadhb uinrgac izazxky yyfe -yrifb qgc lsiuapg teyelxn ugezu -wdzkc ltx fkhncb hwrecp kfbchn sfcpc hjvq -rjdjyt ahwxh nvggsmx lmz oshd xbcik powse ahhxw yhiq gxmgsnv -qdr qjnam gag qjamn kooek mqnaj -pza gml opf ilfbblu kjp luilbfb rhfrzgp ixagj ofp -yphz runy dhull bozcsgk wfxekrd akgkbz urcphc -tfyxwol lhcl npik beug -szatel yfkve yfkve lzqhs -yjzqon pcjibu bdncmcl kczuymm pbmg nyn -rerqvs aoxucwi pmstl sstawu joqu abvcchg mvgjn mslpt vhmfkr utusuh -gqbec jjpqdh yeaiavi nledfi jhzwc vyxjpf momnm vnknjs nvgjzik ipm -psirt rispt lrkgma irtsp -jbbaph xvunete gsvnr mjd ifxhpry cpsx hmuokkx vhcm yth shrrl zbhd -gfa bcmlxtf sqyanrp cugg qxfvftz pbl ujsgc jajxltm gugc oil -xjuhyg aht vmyvzhh oby oyb ybo xbybgmx -atfk qjudfzz mky tfy -nxk yzy jqgg qxgjt bevvvv efi xcbw bohc zaqlqjq -hdc qpnx ygmtqw acvoa udboxw dhc klh mwgpk xfpuri -cycgbkq skwhyf skwhyf veaqss skwhyf -jnezf jowjt vsdu uck scgxd fvopomz vfajslp -djvi epgkyqn apzd cpm owm kpwih fsr adlhqu jicp pmc -erxlmhj wqxvofi ugj ttrmtsb -omku vmrgoy tdicbje ewml dfnwbap -gpih pyt ptsmzc gmdbu rqxkqmz objm nurxjz oozbere ztxug koth -jpnl jpnl dmeh qed -intdwv ksgw qwlzhq zpd lrl mwjl dozrjwq aujbet bsnf vhqyg -eqs uot qyz xor aem kmrh mrhk jqx tsbrf -irytjab mdzm qbb kkjt gofiwo xgbovg kyeyxqn tcks tljhx -zgejy qodgah nqavvx xnigdvt -eqve bizrxq lkhz yzwxgt nwe zfe sxypkz xnssept -bxqn lkfg yfxbszo sphwifz wnj crhbq dvokzw -vzn afatwye ogzvnu vnz rfjba xtugnj kpbgly ocsjd -xrc cxr rahv yvhk khyv bed ctgbuq cmqwpqa jlbg hpj vmesvw -jbshkya dgqw lfl mzcch jxsg czcmh ifruvlw ufwrlvi xcczlol cqqchmr -rbk mhn tnmqdc sxnnn kvoa mhn sxnnn mgemob ieiyajs -cqi ghxg ghxg ghxg -uqwdxn qli gdtkngp gnptdgk udxqwn -dmcczr dnjaqc qwdta rhrbi hkdwe qdjcan peic iulaz xns -tcmppb nzq ecy sitdud nft ecy afrbf wvnc vmfpzx tcmppb cgb -plitv efnpq mjqav nrxxo izg lpitv rwbzdo rdbzwo -day dntga adtng agndt hhvtd -yrg iudsh gyr ryg -qttyeew tco flq bszw jkzftc wdh efcwnp mja rfmju -moch prkze uslzyv plhjuy kxczyq qlmm hgq -xtg ypz izy ixg bvs xlqgj xcy sepza abiylsg -wxvsxn bqag jnlzgxq ikxwa dfd plqxl xlgqnjz nuqvoyb emhodso gaqb -bzjdsm xmxkj fhuqn gauyw ntl kjxmx zcxdr vrds -ofjcc uxyzlk ofjcc ofjcc -zwosex kkvwobl cpudsmb kes zklf bayuojr otqnyr udbbs -iqpvzh ybds piovrh oivprh voprih pov sfl -upns cpeelht xboyk itb hsxdmt dnwgfbw upns fygf kwdpxzm mli dyy -djwutl sikh shki ikhs gecd jqkon trqyw -prbbdf vdp bvvfjcg ydqb muxygg -vhpurzn psemqe xwqfk hrvonxu nxkxacq -xicmhss tnpja qiad woipfy uvadcq usljh hzgs jntvfv wzikk -mmupc twntp upcmm pumcm -qnisuzy lppnfd uiqr eyqbain uxlp eyrfwjo olgkrps sbikam zin vckr -nmokl skfni jcdfot njzqeaj nqzjjea -slmaxx offfzqp wudicrf nfn rwfcdui cwirufd -paffi murnjd oyj lbtjdqe babuas dtqh qkt stapzl yrqlp -eedc rig zmnfmn edec ecde -bcfdf edovdj lacx nzvze sordvxj ybs ujh zvvvp rzstejg ueosuq -xrrfsd okuvem znzlvmb jwzcb bfg bmuxbc qzwfry -pqgxybd cvgra acgn ocd ancg fvfcx fbb bfb zfzv -tmmv mpywyg fwl bnvcv lcnv flw -xxnfbro papc ianru beuzx apcp rnt -wuyhycj nrnc cka ebg rncn rvo wcyhjuy -thh cmoog hwf imqfp okzpxd -rzxiqt rtaiy ytria tyria -cjkmro myif myif xyirn aqxlol wlhwibi dhzsen pzwgm bfbz bufjs qwffg -mxhiui umiihx zomyll vfieccs -yyntf rjk iivgj mwh rjk -dsshx wsmaxhc xcwuelh rdsgtr wsmaxhc rgtsfj -rdh nwlxiwu xsjzbpr bsgps -ufyo vqtzkg kpeohu mxzt fyuo gawgaq youf -hzbhut bxsnjwb zuhhbt zhhtbu -pdz sgntypg ragev hrrji goitft yphnebs xjzoo sqf jsuzijq dsocb hcxg -pptsq woomypc woomypc woomypc -axcg wfbnpql ejqb cmnn nncm csvlc wraludb pkmp whtht tfpicer -moom oomm ommo vfqeii -xvrgpp rofl yxyrkb oage nypzau pwfnkn jxnhkw cyxsi clzb adwpuh -mfbz vdtt muzhm wvwwfl ttdv -cpqgvbu byc pgfrlkr aftl tqm zcqxi juu gnf ppovxh huoa -konpcp lzordid jqng lwxs nqgj gghkxmf kyn ngqj -iorhccj xfygc cnfr tysqc xpcyf vmjpitf nut zmrk mgbrtb tcblxwf dkadwrm -kov jtmp xoatesx qxkilp rmggpfx ltpxzwf vko reqms mqq nps -hjigmk fyqy wpuwe mwmso thsimfs okcmeyh mzqkez duzaq vzhyrm uyvpkox cwivpls -ukoerf korufe zhs ntwfz hugem vriyk enfaib hrrcdgf zllsk vkiyr -shkx khxs wntpjv qdevaw noqyht nwpvjt egh hgok mukdjfi law bzbvjz -dquk kczxsq tdu trnkjs wqtdc ybvcb -hlrotxn cumcjkm qwufgle ylm nejh hnje pvaigrx myl sfvsd -szmvisn aywic vsnimsz iufmybr -zjozr zojzr qmn ffrggdh wam dafvok -nxkvlhr posmf posmf posmf zhlzb -ywis kpqpyb qae zqxpuz pcj hbsfz ejlwa lajew znuom -qxsl ussivur dstd avojo -yoeagao egpaqm ymzf kkauy ivm illir wsvchne skmamvn nqxc -cldo ixzzy vhk nra zhypgab -qjdd ecxud tbuqq mpotbdk tjdpczn knncm tyy -rbfc fhhjf innia tsjbbbv fmtcuup rapvhqz ebpzt whdbms gvjoy lykl fquvcby -bihhfwi lhal udxz uwjwp dmb -fekxamy uophet yzvv rqj zawlp ldrv mdymkzy taauf -rcwxvmh edueui ltdyo xfghz dgjig senm ifj -qcu fii axmgijj ifi oixjfsg jxagijm -sdtyr rbdh yvnvq czzuig wro -lot xkto cmpiena nht ozcg aotcw xiegl cyaouj und lsclep cexn -pgihljk cmgmv sajhi zfvbqij ogwoc ajsih zmppe -jexwkdp dwpexjk mzjydfu bff rubgdb -yshfhx emkl hshxyf mkle -dxgti jdo tkwprv pbxbrqd oiz gsbdphd qotu utfdnq tzvve bqc -ovdf bshfxyl xspjpd vljdsm mgkd djlsvm mlsjdv -etyia eytai sfq qafj xzgp ewhsn snwhe lhqp -zjz mwh dorxm ges gexo rckwsa dltoq mmntha -hqkuj ypsjcxo dixbe rmvnhjh ovnr -edc iffaxc lolu xwrvpb gva vti vit -ceuxq xbwejr lzyvm rozseit cwe mham fivpwj qtv omaktaw -alzdrk tsxbuld mdbq pgbdtoo xwf vzalric nqe jqwlxsy cbtylu dtubxsl lqm -rqjmjcs exjpn kpilcgu ihcm lfadjm mlri hpd vqs cxqwqhu twxrtk -aeuvlcp aubvnw riedvz arypagp uuvg kliehx cokt ogh xsdw cdsyywv -ddwrgvp bscaq bbfv qrbutp -jpdg uey eyu uyarl zgbk qyhqq fdvlql zmwkp -kbt bkt lebhpfu smrzt xalw mmwa zmtzfry tkb -fcvcv oewfzu fvvcc mldww lwdmw -ejrltsu sqoyx wfvsdbp bfdspvw bfir jqhgrmt ofdmrjg ysq -jzwucwn erqjd eikq knpf cvk xvqnscy eei wvfjzmj xujq cqaim boev -jqhkmr ipjpj zwno ybu krhqjm zqfyyzb dyciy -ugwsw rpwteje qtvwi pwyhrzt hfcdfmc qbovk ibws -ffy kdder qjookz bfvmvvq yjzuaj fvxllfb pjyz jcezhye fimyydt qjookz qjookz -loupd nwsc yytvuqo ltcqxnf -iho ulvxguz fxbf iqu ofjtmvq xhs ybbusd kxg mebdnah ucttcf zufb -wzdb wumuhtv kef aavv buu xmjtlur faaccl wospwff bjasr eapfsi -jau qzszci ciu inagax -kui tqig fyovsp fvwol fyovsp mzth tcp nhoq -ajdla wtpj amylu jly tvq wjqef -ofqc einz bdze tows bdze eew -avwavzt aesrsjv lbmpi hllv chdbul ezelxn -imcprs cafb clfg rsjo iylqu nvk vkrq izezlnu vkqr tyhnv -rwj zboui reh buzio wuhpvid cpzy jrw tsbuiby hmxwqr ute -ixq luwbi uoiwsjh souz ysoubw uilbw ffwjvw ewzswoh hci zmfdaov whowzse -xrhgqf xrhgqf giyv giyv -toiqgzv gakg udgdlb wvi carrn pjyha muqclu -wuxthi srtszr ourab hpds bakvy fnk yefe yfee doowxcx -ijdc ujhvls xmy hwg yetsda qelbe nang xgywo wgh -bhm icq cnam dec enksf qfctz pwxoo bdf cnma xoowp rbls -jguzh fextz yax kesaunn waljo jltcza tfzxe dezs syi ebwxnks -flvq bzgd clvqw ahtyvu xbdyv wssxx boscm grgl nqcg -caskpli hqctxxc nwpyo wjlqfqf ebti dva -wmsz fzpd ikgeq gti ejftoou ezs cqef mybojc rgwz -mdaay yfppa pavl fuuvfkh hpod tpb dhxmia emdecm rbqcwbk vecyt -neha rmvl ndp vlrm dpn debghi vyhvc -bnp zkxdu iqqkesd abtlx hmjasdq kyvekr krt srrjyd oxmfev oot -dumlcqd ccm hyir oritdz madjjw -oakqrs advfmu verrc zkfdcn btndsp -onlkinl rdtm bscfxre bnu oumyrvv kgc zkj -tfxfsgm uwmic agswclg uofezgc -wpfdyjn kjlihk etbot fbu scm gwccce xgownte wig cuaijbo -bzbdk etozk qracb oftfoo lkooe -xupzw vmxwu sis wzpxu -gbz oqbgh jwgrru bzg kwmxcfc jrurgw -agyjnyc tuec imxlult omwiyjg fiwnoqx nhmnro qtg kbr agyjnyc -koiq llreotu elrtoul dubfvgy whq -htm lll crzppb gdjaae nsmxzh gnfvn obiuy ymspzbo iuboy -thm xlfrr pbxdfo mht tygi sapxgbv mmngzf dej -eus seu qmstw ues -yvfsw esut biblze kbjcpk estu xih qzki ezlbbi blzv -ohq ugc tqqeo jygvpwm vfs ldnfibp ycbpa sml rmime -kuuow gbg nzwdaf wiimtg lam oqmm -wsbwkdd hda nqk ticz mvt -gqbljyh zqugqs cjod sxwlqy qkfs wwvwvt dsojb qbhjlgy riusoa uosari -jkphfx dbt les jsvoij rnuw mxmmchu dol vto swn -qqxe vwvephr twdqlyg cvdu xjiych clooq vkwavl whvverp yuz vkwval -txtbudi tiutdbx wqhx tws utgbf amh hmf izsez ooz -egdube nhsxjs nxjshs xoy sjsxnh -egdziod diodegz ejxn zogedid uhhkr rnm cyvvuc uqbl -rbn pinwag sidwdwv jqdbe jlbemk blkeaqq ipfqbtn zkrbp -bdryz sbh wxvn mhot wemsfm oemkff -vxyn xvdwwo xhd vyca zxjaw vfkz xhg ofsphks dyq mmzzd -yjrqsjf iiesdh envwyx rmtbmiv ggzsg ukx bprfym qmyqc vag ymho hjtoh -fuxxrd wbweptd vkoffr wbweptd -gfwcez smetli yjyh pslpz qyokpsm qsy cxjymg wqfkf obuq awz -eqhm ceest kayf heqm -rdi dti vntcf ewkmpvf jjwoihc -sfq qlb xrm ocy vtnj zdznbal zvon stln zwnj wsgalvq vhphap -pya jay mgnyo pya xmapdn -hrwbj xhr gvwl ktq ktq gvwl -rzgqi hjwtthl kxhggbl wepc hgavj ctmqug -tzfwkc xeqfath iiuwq iiuwq dhwuvy -gibagy smq getjofc lum msq ulm xuxu bilrus ily -xlv ndrkch hdcknr nqltoze xvl -wmc vuzlrj mwc atp cvpx atv ujatz -hxpafgl ymjltv nvvpy ahycdk jhpdcks ettm lvqyw ertpivm dnezwxx usi kdhcay -vrh hqyomv mcq ilwjbkz yprjxad -ugv szfitxg zeluib pfj ijm zmiigxx gltxzz jzljhgh otskue -mxp bilj jlbi tce yfted zxsqas ftyed -ykasqv ehye kirmnl upmi dojwmw wzj ykasqv ifixn vreoypz -kerbgub nnroqk onkqnr gbebkur tjhl knjo ccsem yozvrcg -ygq evkoj wkn ffljhds scxeibh egsybeg mwvi vgjblj qda ywqpp -hocvpl ozgkxp xgmj ejzyxm -gernu kks lxe nxzv sypg xle goz -xoatis fjp wzlbo dzkonz jtutyj vdonj swro tqclemv xhomap ymeqkua vaxcw -mxcyjs ywyxndk wng vpftv nsuvu -jmiyyhh gwser shgcu jmyg cjzegc hmhe eopg kmkan -smdd dmds mgqhtkh qtamih haqmit skkcy -dnj rmggy rgymg uburbao rymgg -klcpjgq ons ajyv sqryt son pjlcgkq xlobdt -piw shonk tzi mcdumz noskh tebolw yaypn -ozm mvmjgtg nxj weommiq asnmhzq xjn uobztuo cqgjh utfb oydt ommiewq -qlwgsc vvpe xgft ahpjc zjtx iyof scwqlg dxgcokx ltrefj xyzq rwto -ggqdd dqgdg ggdqd kjkmmfp -htzjam fjbg iagc xls iagc iydtf ihxl boa iydtf -vhe nqj bwgdoi hhaoa qtulz -axvyja hpdkwee hnryj prou rgadv oubjdqg knjbc -caz xibj wqkzwe peioeya vmz hesy ftb -dudwcr gupj sjrtzc xsqbb hiet nujv bebcvsj eks uuzlcx gex -kywozi tfzuc mflssw hnxxxqt zzc tzfuc hkokuv mnjg lwkavjp lvpwjak xez -izgh zfv cingjt dkf cknite qox vfz zvf -ojpu dzk tehpgnt gntpteh -glxfxa uxq ajtles ahgzn ajlste zwgc mrpu adz wuunwhc zda -hdgdtn hnoyz aromkb qujfv yjgmn tbf atw -uyvsv oaopjv uyvemxk ldpp tthe iisjk txr hebmd yxevukm rkziao znt -ypdr mnwuzvw acpg kzwz ywbn wcrr umrnlbe lkult ljify azyhu mgqoo -abmpl omsd xmyl mxyl mgoq kracrf ufm ppwi zpggh -uxfdpv jnm vvc vchunhl ubv ktj mxolsxz -fcja eci edzrb nlvksaw lhf ycohh tfztt xso ceub tyv -rkwtp tcmmvv kufg cxui hdamg suuaej fgku cvjlv -oldbgy riadoyo djsi wca zxoeq pmemqap aijxa -nyy ruxcosx xisqoz yny jvzfpbe tlfdiaj ybd jifatdl zuzv -kxwdz qvrvx svllp ergmme -swjfuv eronk favcxfm acptbh pnbjn ciqcrlt rgvdnlt icgahb -ddza xxfn use obqka bfzwjp gmf bld fyvde mxdfdl -ame bmxbyf ame bmxbyf -rdgby pyfog dybrg gdryb lpztd -sntg impd uxgxai naoalb ntnk xgix -oadpmqj oso criln izih oos -ouzjq gtl ito xefqt phnv ouzjq hoyjjj -mlp rboq lpm roqb whvp -tghcw ggshevw dzsgj ggshevw kec ggshevw -kmwhb kfcb mbhkw gemz fdh -euve veue kplrq evue -hikfiw bcdktj hcnawja gjasvwc vcht igrzly rkxijxe ikfwhi dvmp -hvksis kafs ktcs sfyqzyt etctrgt vodwr wff tskc juobnm -dpcsodn ehwc pglywfl yhdp mdiyzx -ibog umftejh cfm pnxhna wqwx yabnk ygws dqw -dezz tqw qism rarfe fpmlab xvbau irwtfs wwmoyss yvn xetqp xtqep -pchqwk npsmd jefec qok uuc ucnpz rlkakn -kudh rjysb xrdbx bkbmjfo xrdbx -rogu ssdwsus voa ncw obkxsr -tflf hlevus scq rrbpat tau wxsq wxoblt -rzr lex kqdy whtj ffnys xlgkkff msjhy dimaq hrc wyde qkwf -ghtwd wernjpn tdgwh olrfvmr edq gxvp -rjirvf skhdgln aauit bipu mubjiwp kowz gyjfbjx cmgdqs -aftfpbv agajyy aqjll vsf twh robpys lebt eav yribup -sby ymkla sxkbfwl awmd nhb vlp -kizvjj ycjswr jkzjiv vuy jijzkv jcs -cwvch xzqfal tephz lqfzax cnkbdcr mql zflaxq -jjxzwl himpra ssjf bibfiui seeaq pzse -jogrn jogrn sqew jogrn oixgwr -khonpyw iiyxir vybhc ndnxxv kzlt ipmncn -okqkqu svbemi nfn ovd xgwy edd ujet nrrbv dde vdo -jobvf dus asvio vaosi sovia -knmz qbz nkmz zmkn -isbmopr unduey impobrs hea zswciev sopbmri duuj -ocs ntgnrdu kbvtzp cvyieu fiyn znmh lhrz ixtnzrj vktbpz lbpqx vzkpbt -muduhc sabc dlyoisz kuaz ogpyepw yuog ictiiqt -xjflsf nfklvml thfh uajnmby cichyj xxoqi lpime bxpyx -riahifn bohbgd obhdgb jni qzvkf ybp hjkkwq ytutd cakcsh smfdoe tuytd -iddku nccp zgtl yne ppzpqcx lwm -refpcz uqt uqt uqt -mtn czxkagb nmt caqacrg bcakxgz -itxjii uethxbj vpds bsqod diqax inv zrwt doepe -bfyaj nbvhg zmi buf -dtre dkwdr nrapm qtfth odvt bbcnae vxuk gqm enlg -ybt qcfozrk yzrh bfp euuozuz pzsdkxx mhi nbkzprb -vpuhqn gyx caint antci vfep incat kqdakdx -ddhi chgnjk ibg xbemitr mjtdph eovw -ngbtuvq qdttlsg dbqhhwk bkrqze qdttlsg qdttlsg -evn smvhi dgcmn xjo ascc ahbpj uvzc pwn tung -ksu thr omg onvsqzz rllakar ysfjtfj grxwyx oawix gpk suk -qvb iouav yhtndkd vuoia ouaiv -kud kofcip hcczrgc cvvxxlk rvyamwe duthdzr dftun -rgv ynw gph tmxwfup nwy -dnc trawj kwzbx trawj zvp -ogqxijy tbqtsg tbo vqinnlq jbvgl sfafh rve mcxqs ubh -qccr lpv puuvdyb tydaflf uxic -tlon tbfwkxg tlon tlon -iytiz qjlqaqw uixb lnt zwro uzgxqfi gklgnqs zwgoidw iifk wkwdo -tmvhxw tmvhxw tmvhxw fhiqpjy ejk kvysd -cmphg xjjz groiccd dvetuk xbwa zhm lyi ohhd neg bxaw yil -kdmzopy lxx bvhach goxmxu qbqvzcm qbbrhvb nrfom aixmio grpxz hbrqbbv lkucih -bnqn phqr uycuxc mopyyfh bbpesqm stgigq stggqi cwtjm asqhpl imvlxj lbmloo -pws iuvbvjr cwccm qbr srqnstz cjebq -bfh jobkcy gtbroe lpagq icmax jobyck fbh -ounqdo qrrr pwi alho rrqr beao rsioepe -vrccqge qvcgrce cbslkjs qnclw rvmjkw -aaxjns deupjs wtgxtp penad depbho tbrdt depbho qxg zhjxpgd -drqfo kbp jfa jaf -izn oczcitj cpae quvzqo iwwk jck idjdpm -ecort zgcvxx bvh vrprsf -fhubfvy ndcfjo kol hyufbfv hvpka -kpt zgajpc rjvsxa gayznjd -xeoixk peq kfu lqa mjnv mzvh bicl hlfk -wyt imdx lksy twy -xeptp ilxs qbsqzwn rsy slxi xtpep dsdkekl -rotvbt fuirp elos ciu nhx bxej trmtx ixn xbpc vrxtma -skcprn yns sao ghlq vftezvc aaryahy telt -fkaov gexa xijv yiksa xega dhgw okfva gxxs edkecag mqbqvrm nrzcqub -ljc jujxeof fdj gdzjzr mabbktu pmyrfv uspven zxry snt hrah -nhujhdr jdhrnuh midm bbavhpp cpjk zmpbasz eptrpou znq zqn -ywzfq wuu lfflon uuw rke qzwyf hjbms gakx -yqrq zsk jzn uuuzrml kzs lseupsg waynfh blech -gwyqej weyjqg uwuje uujwe -lxud rnwkc bgygkh csq rfvtos ystqp keb gkakodj uthcce eqxifl -elvj evj rfwo vvgkosh aarcgjs utsbh orwf jxcqvmh uowmktl qtgf -bqszre oxntty ombwiz mbiwzo -ccp iilcc tacf czk giwv erqi jgdfah wip xtrzhv wosvbyb -gymyw rwsxeg gvydr izyk spsonkg knospsg -djj tbr tbr tbr ice -yyzh zkykapw puydtik ysxc hjumhsd cuhhw dnnhida yyzh lnklymg -nhbcxsu ccrbbyw scbxunh ghxrkqh brcwcyb -latdaav sexa ipzuzjl ayusb etb fshh -giz akqd vjmabii arfuzgv efrww jxkvolg efrww vrnzgbx -jmcc vqy adkzj fqrkdo tjrczp ccmj cfponk rptzjc -jsviu sraw imsj fujm cdf xwqhl lhz ojejzuy trtqblg -ibz dulm muoq quom etvjzxn tuhrpp jfukac jqctqn qhgbae msgmcit ludm -zgx bpfa elhp rnyqtq wyceube nkeuxz -lzxfo vygpecv jszacku zfxlo -cpmv ysaaj xnp wbvqg hrsiuj venjxna yeqvwmk ftaga dcqxc jgapb rqdixp -xpbbe tyn hfdlu fto wrgzkou sxylv cqto wdv xqc pnu rapk -pkrxypl wnu oipq tzbhnc gpug tgzf ofjb -mvaz bwcv gll itgcye dessw szt gzimgeu bvmohh wbywyhc kzerxbr anjsive -lhvnrzs qkmjwy pnyciwp mgp jfdz ghvtf yusfzg upab -xbscukx aubulj snbcmc uscxkbx ddpucyg -hgv ollh yzpjmpy fcicyae vhg gvh -prd onyd iux oik xui -zipadig nvewx cir lbpcusx dljqy -ifyxzsc btmy lsu tmyb lus ldyzx -egmyxbe ieasvek dylmj qahtatr uyqgbk -mejjczw spj vaekp kdud -vwan mgenld mnlged vpfuil euoxlr rclkpi dfknyoa rhthij kcyxl qaxab crlpik -pqm eihogk iwml nuauxi ngilkoh jmu mbdi cqxz nblb rmuj zczdgp -pswbe mtzch wbeps fxtnc psa aioff pas -prwrpvz oadpqvz tgzrt giom pjyihh rxdir dmya xjolzxv -khdybe obqkjn kdq jkvmgwo enpat wyw qjbnko waid msest wwkoyts -yep liv ofmtpod imdd qyw -afnrx jgn gxarpb myltj ggrsajy mdaobjo vbtn vbtn zlziz eds -hqr kqu oub skoeqk icnfm cqvld aay bto -rga odaf exoosh pwevx zpbd plaa xoseoh -mbr gqu oxvchrt nqa larxmjx pfozej -ozuo ywubjbg xcua eblwqp nfdvw hmhen zkjfu gmhgp bsyi ktprtf -src vrysby srybvy znwjm hmypwdl gdmau pqe -cldr crhi lbaq fbuduyn hygbz uhida -qrxukq dygkp oaks soka oask -vpido ajgfq pwlv hezt fmg epwrxo rqvjke iovpd hhkjm -anxf ydl xnfa hqph olorp -exydcg onxjm psqlbv ehz boar hze qsblpv -mnzrvc ipj swg ijp sgw gdkntsd fzz grqwly -erpq qghpj fay gci uglm afy -jwbq hbxaub jpdilyt yvalrlk topl qup -eczonk ftcc paltirb owz tihhe dglxory wthvqcb qdnxm lirejh alyxsr -ooruaby gboyeu lkv arrz jcqyzl uxlfk fhmeony fcmh -wzr xjb pwmf okqj adwcedy lkidve uwekxf asbdzr biub -dikhur pxgh urdinjh wednf ulzdxs -iplf byt tyt qnnlba pzt bednml ljjtkvo tjovlkj uwms xat -htzk ltmfha xikeze atfmhl fchxhyz -lqala bqwgcul vetaa xuxjau zcb wtdmomu wfqmpq sief uyblyz ahv -aytvvo awm ojaaigg awm dbfaokz -abq npcyld fzbfku oia qss jkxldm wgtmki pasgxi dieix rpqnuac tecnfy -nmr qzfj qjfz lsz vnahex -djxoo jzlkh svy xige -tjlkkg glcuvmh fwzlhi ecun qlgulj hrfhyql qgdlf ofakqdf zokkvm gelxkq oowgs -upfpk gfstjlv lxc rjd nhj sbq jpzsz zsjzp -favd nzqfdid nekfjsf mtjndu -sgdqx uvpuefv vhwrgd aivav gsqxd jdhfoq -llaf cthbgy njrpw fqgkx jzf xqkgf lnrfrm gkxqf -wzdwlc wisst alw kyjeur sjsqfcr tta bijnyn whfyoxl -dtjr baxkj lmnyrlg nrmyllg -mtgky xmwf zdko nnocxye gytkm ygp hixk xwmf -maudjy okgjga uadjmy dzfrk omd -azz ajdcqkd bcafn zaz dcjaqdk gylyzo -xzvfbf fopmfxu mvftgr mfupoxf coyhof talcc vpkslo diff --git a/2017/d05/ex1/ex1.py b/2017/d05/ex1/ex1.py deleted file mode 100755 index 7a09715..0000000 --- a/2017/d05/ex1/ex1.py +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env python - -import itertools -import sys - - -def solve(input: str) -> int: - def parse(input: str) -> list[int]: - return [int(n) for n in input.splitlines()] - - instructions = parse(input) - offset = 0 - for i in itertools.count(): - if offset < 0 or offset >= len(instructions): - return i - instructions[offset] += 1 - offset += instructions[offset] - 1 # Account for previous increment - assert False # Sanity check - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d05/ex1/input b/2017/d05/ex1/input deleted file mode 100644 index c584877..0000000 --- a/2017/d05/ex1/input +++ /dev/null @@ -1,1090 +0,0 @@ -2 -1 -2 --2 --2 -1 -1 -2 --2 -0 --3 --9 -0 -0 -2 --12 --1 --12 -0 --16 --14 --14 --3 --9 --11 -0 --23 --21 -2 --4 --28 --27 --4 --19 --9 --8 --25 --27 --1 --29 --13 -0 --29 --29 --35 -2 --3 -2 --2 --46 --18 -1 --47 --6 --27 --47 --43 --40 --25 --37 --4 --31 -1 --6 --2 --38 --1 --66 --33 --48 --47 --9 --58 --7 --57 --35 --61 --11 -0 --76 -0 --80 --77 --72 --5 --47 --38 --16 --28 --47 --19 --42 --15 --88 --34 --50 --12 --54 --63 --95 --1 --66 --48 --14 --34 --72 --63 --101 --102 --107 --37 --75 --28 --23 --14 --61 --108 --71 --113 --96 --26 --28 --92 --64 --47 --74 --9 --113 --126 --61 --36 --40 --26 --73 --7 --99 --3 --15 --127 --104 --89 --67 --81 --8 --63 --109 --57 --81 --101 --57 --94 --78 --82 --9 --118 --34 --93 --147 --41 -0 --44 --57 --11 --22 --86 --6 --55 --47 --49 --124 --139 --144 --7 --23 --128 --97 --27 --151 --104 --94 --177 --165 --136 --167 --53 --15 --8 --72 -2 --4 --44 --15 --177 --188 --142 --71 --161 --81 --169 --150 --144 --193 --143 --185 --33 --21 --198 --97 --55 --50 --183 --94 --77 --138 --195 --146 --4 --193 --132 --88 --93 --67 --100 --162 --107 --17 --108 --213 --123 --49 --191 --180 --73 --182 --125 --176 --65 --189 --131 --18 --145 --197 --136 --53 --60 --209 --67 --244 --163 --246 --153 --16 --231 --68 --165 --42 --3 --9 --178 --250 --37 --128 --99 --145 --234 --167 --123 --222 --101 --46 --52 --129 --155 --85 --122 --228 --150 --237 --173 --29 --24 --175 --229 --106 --236 --234 --246 --90 --105 --274 --211 --94 --285 --201 --92 --204 --215 --115 --213 --218 --2 --122 --176 --2 --35 --143 -2 --190 --216 --38 --247 --309 --18 --119 --198 --275 --91 --151 --195 --299 --192 --25 --162 --37 --70 --30 --42 --249 --156 --319 --317 --264 --19 --47 --38 --235 --184 --25 --43 --127 --168 --138 --35 --24 --257 --30 --259 --22 --69 --80 -0 --212 --41 --20 --90 --196 --169 --47 --238 --320 --132 --348 --301 --242 --353 --63 --51 --33 --270 --196 --334 --160 --63 --177 --42 --30 --216 --219 --155 --146 --192 --113 --368 --349 --330 --33 --4 --302 --119 --387 --336 -2 --201 --344 -1 --6 --339 --311 --79 --55 --67 --118 --257 --215 --141 --40 --117 --28 --345 --312 --60 --57 --43 --193 --134 --144 --28 --11 --138 --48 --167 --76 --99 --51 --283 --174 --159 --72 --55 --155 --343 --226 --195 --364 --39 --368 --117 --256 --42 --172 --236 --231 --133 --36 --442 --178 --101 --213 --142 --266 --305 --95 --341 --227 --217 --162 --1 --168 --384 --424 -2 --394 --96 --458 --258 --232 -0 --283 --393 --211 -0 --466 --431 --455 --430 --459 -0 --235 --96 --371 --479 --117 --39 --291 --220 --403 --325 --433 --189 --275 --58 --109 --191 --175 --416 --61 --269 --411 --330 --497 --487 --393 --417 --275 --157 --208 --196 --330 --427 --361 --304 --385 --16 --175 --250 --101 --256 --186 --369 --328 --322 --190 --135 --71 --455 --303 --287 --95 --55 --446 --489 --329 --410 --372 --36 --7 --407 --455 --347 --160 --376 --515 --414 --433 --107 --508 --156 --111 --81 --382 --203 --3 --109 --163 --61 --313 --516 --277 --306 --166 --286 --437 --100 --117 --556 --248 --326 --550 --424 --21 --524 --27 --69 --244 --303 --124 --299 --434 --364 --543 --233 --189 --279 --159 --49 --112 --291 --173 --143 --482 --202 --446 --226 --439 --496 --568 --171 --376 --80 --189 --495 --67 --22 --470 --330 --329 --259 --30 --201 --591 --543 --33 --591 --3 --493 --614 --579 --283 --251 --518 --230 --408 --87 --438 --551 --521 --424 -0 --552 --87 --311 --570 --250 --552 --316 --239 --628 --508 --142 --56 --288 --38 --567 --477 --195 --337 --23 --78 --237 --569 --533 --345 --220 --16 --223 --565 --488 --152 --517 --448 --563 --73 --153 --275 --186 --308 --576 --64 --293 --118 --138 --422 --645 --302 --193 --171 --190 --218 --330 --96 --454 --343 --399 --327 --484 --379 --362 --484 --477 --490 --243 --551 --649 --418 --54 --137 --355 --624 --18 --294 --333 --425 --540 --322 --77 --201 --550 --318 --571 --396 --616 --626 --404 --105 --661 --538 --398 --690 --353 --445 --523 --72 --1 --502 --711 --274 --81 --272 --644 --598 --593 --716 --355 --620 --550 --427 --647 --723 --275 --500 --49 --4 --575 --268 --336 --674 --742 --285 --672 --622 --591 --421 --574 --167 --38 --314 --597 --255 --277 --651 --571 --153 --292 --5 --101 --348 --48 --119 --448 --685 --389 --471 --646 --285 --239 --249 --465 --198 --43 --522 --19 --82 --240 --521 --136 --586 --195 --446 --587 --58 --263 --550 --449 --220 --39 --691 --386 --199 --96 --144 --151 --593 --237 --414 --238 --377 --280 --638 --729 --235 --603 --214 --245 --714 --323 --297 --558 --416 --388 --271 --622 --62 --726 --242 --550 --277 --709 --62 --266 --632 --411 --327 --574 --183 --467 --332 --804 --693 --809 --240 --496 --380 --749 --466 --738 --761 --832 --398 --105 --675 --772 --136 --4 --46 --58 --836 --688 --722 --466 --346 --117 --183 --330 --794 --101 --253 --2 --519 --113 --115 --439 --118 --398 --326 --409 --723 --719 --354 --200 --647 --520 --29 --130 --564 --880 --823 --309 --352 --822 --326 --302 --452 --281 --467 --316 --115 --623 --625 --142 --262 --382 --85 --743 --340 --50 --270 --118 --683 --218 --595 --217 --371 --397 --443 --755 --909 --378 --843 --644 --303 --642 --798 --90 --562 -2 --733 --792 --235 --536 --132 --481 --386 --795 --167 --145 --725 --403 --533 --761 --599 --732 --719 --250 --239 --626 --318 --135 --756 --308 --287 --130 --277 --265 --709 --252 --679 --126 --794 --6 --194 --715 --703 --373 --481 --928 --710 --155 --431 --780 --658 --897 --947 --55 --271 --927 --554 --165 --763 --895 --329 --132 --293 --134 --524 --824 --277 --187 --849 --193 --167 --175 --125 --489 --36 --960 --931 --533 --9 --599 --589 --795 --418 --679 --793 --592 --24 --100 --664 --382 --524 --549 --124 --899 --583 --470 --897 --309 --886 --291 --971 --123 --122 --841 --218 --62 --434 --113 --138 --358 --569 --182 --839 --621 --596 --977 --297 --590 --738 --503 --334 --756 --245 --505 --107 --376 --958 --937 --986 --942 --589 --541 --612 --932 --314 --114 --213 --922 --31 --380 --152 --512 --521 --34 --613 --759 --781 --256 --297 --155 --853 --169 --842 --567 --533 --709 --19 --517 --542 --376 --149 --934 --496 --782 --469 --320 --219 --902 --155 --971 --1074 diff --git a/2017/d05/ex2/ex2.py b/2017/d05/ex2/ex2.py deleted file mode 100755 index 10f1f4d..0000000 --- a/2017/d05/ex2/ex2.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python - -import itertools -import sys - - -def solve(input: str) -> int: - def parse(input: str) -> list[int]: - return [int(n) for n in input.splitlines()] - - instructions = parse(input) - offset = 0 - for i in itertools.count(): - if offset < 0 or offset >= len(instructions): - return i - delta = -1 if instructions[offset] >= 3 else 1 - instructions[offset] += delta - offset += instructions[offset] - delta # Account for previous increment - assert False # Sanity check - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d05/ex2/input b/2017/d05/ex2/input deleted file mode 100644 index c584877..0000000 --- a/2017/d05/ex2/input +++ /dev/null @@ -1,1090 +0,0 @@ -2 -1 -2 --2 --2 -1 -1 -2 --2 -0 --3 --9 -0 -0 -2 --12 --1 --12 -0 --16 --14 --14 --3 --9 --11 -0 --23 --21 -2 --4 --28 --27 --4 --19 --9 --8 --25 --27 --1 --29 --13 -0 --29 --29 --35 -2 --3 -2 --2 --46 --18 -1 --47 --6 --27 --47 --43 --40 --25 --37 --4 --31 -1 --6 --2 --38 --1 --66 --33 --48 --47 --9 --58 --7 --57 --35 --61 --11 -0 --76 -0 --80 --77 --72 --5 --47 --38 --16 --28 --47 --19 --42 --15 --88 --34 --50 --12 --54 --63 --95 --1 --66 --48 --14 --34 --72 --63 --101 --102 --107 --37 --75 --28 --23 --14 --61 --108 --71 --113 --96 --26 --28 --92 --64 --47 --74 --9 --113 --126 --61 --36 --40 --26 --73 --7 --99 --3 --15 --127 --104 --89 --67 --81 --8 --63 --109 --57 --81 --101 --57 --94 --78 --82 --9 --118 --34 --93 --147 --41 -0 --44 --57 --11 --22 --86 --6 --55 --47 --49 --124 --139 --144 --7 --23 --128 --97 --27 --151 --104 --94 --177 --165 --136 --167 --53 --15 --8 --72 -2 --4 --44 --15 --177 --188 --142 --71 --161 --81 --169 --150 --144 --193 --143 --185 --33 --21 --198 --97 --55 --50 --183 --94 --77 --138 --195 --146 --4 --193 --132 --88 --93 --67 --100 --162 --107 --17 --108 --213 --123 --49 --191 --180 --73 --182 --125 --176 --65 --189 --131 --18 --145 --197 --136 --53 --60 --209 --67 --244 --163 --246 --153 --16 --231 --68 --165 --42 --3 --9 --178 --250 --37 --128 --99 --145 --234 --167 --123 --222 --101 --46 --52 --129 --155 --85 --122 --228 --150 --237 --173 --29 --24 --175 --229 --106 --236 --234 --246 --90 --105 --274 --211 --94 --285 --201 --92 --204 --215 --115 --213 --218 --2 --122 --176 --2 --35 --143 -2 --190 --216 --38 --247 --309 --18 --119 --198 --275 --91 --151 --195 --299 --192 --25 --162 --37 --70 --30 --42 --249 --156 --319 --317 --264 --19 --47 --38 --235 --184 --25 --43 --127 --168 --138 --35 --24 --257 --30 --259 --22 --69 --80 -0 --212 --41 --20 --90 --196 --169 --47 --238 --320 --132 --348 --301 --242 --353 --63 --51 --33 --270 --196 --334 --160 --63 --177 --42 --30 --216 --219 --155 --146 --192 --113 --368 --349 --330 --33 --4 --302 --119 --387 --336 -2 --201 --344 -1 --6 --339 --311 --79 --55 --67 --118 --257 --215 --141 --40 --117 --28 --345 --312 --60 --57 --43 --193 --134 --144 --28 --11 --138 --48 --167 --76 --99 --51 --283 --174 --159 --72 --55 --155 --343 --226 --195 --364 --39 --368 --117 --256 --42 --172 --236 --231 --133 --36 --442 --178 --101 --213 --142 --266 --305 --95 --341 --227 --217 --162 --1 --168 --384 --424 -2 --394 --96 --458 --258 --232 -0 --283 --393 --211 -0 --466 --431 --455 --430 --459 -0 --235 --96 --371 --479 --117 --39 --291 --220 --403 --325 --433 --189 --275 --58 --109 --191 --175 --416 --61 --269 --411 --330 --497 --487 --393 --417 --275 --157 --208 --196 --330 --427 --361 --304 --385 --16 --175 --250 --101 --256 --186 --369 --328 --322 --190 --135 --71 --455 --303 --287 --95 --55 --446 --489 --329 --410 --372 --36 --7 --407 --455 --347 --160 --376 --515 --414 --433 --107 --508 --156 --111 --81 --382 --203 --3 --109 --163 --61 --313 --516 --277 --306 --166 --286 --437 --100 --117 --556 --248 --326 --550 --424 --21 --524 --27 --69 --244 --303 --124 --299 --434 --364 --543 --233 --189 --279 --159 --49 --112 --291 --173 --143 --482 --202 --446 --226 --439 --496 --568 --171 --376 --80 --189 --495 --67 --22 --470 --330 --329 --259 --30 --201 --591 --543 --33 --591 --3 --493 --614 --579 --283 --251 --518 --230 --408 --87 --438 --551 --521 --424 -0 --552 --87 --311 --570 --250 --552 --316 --239 --628 --508 --142 --56 --288 --38 --567 --477 --195 --337 --23 --78 --237 --569 --533 --345 --220 --16 --223 --565 --488 --152 --517 --448 --563 --73 --153 --275 --186 --308 --576 --64 --293 --118 --138 --422 --645 --302 --193 --171 --190 --218 --330 --96 --454 --343 --399 --327 --484 --379 --362 --484 --477 --490 --243 --551 --649 --418 --54 --137 --355 --624 --18 --294 --333 --425 --540 --322 --77 --201 --550 --318 --571 --396 --616 --626 --404 --105 --661 --538 --398 --690 --353 --445 --523 --72 --1 --502 --711 --274 --81 --272 --644 --598 --593 --716 --355 --620 --550 --427 --647 --723 --275 --500 --49 --4 --575 --268 --336 --674 --742 --285 --672 --622 --591 --421 --574 --167 --38 --314 --597 --255 --277 --651 --571 --153 --292 --5 --101 --348 --48 --119 --448 --685 --389 --471 --646 --285 --239 --249 --465 --198 --43 --522 --19 --82 --240 --521 --136 --586 --195 --446 --587 --58 --263 --550 --449 --220 --39 --691 --386 --199 --96 --144 --151 --593 --237 --414 --238 --377 --280 --638 --729 --235 --603 --214 --245 --714 --323 --297 --558 --416 --388 --271 --622 --62 --726 --242 --550 --277 --709 --62 --266 --632 --411 --327 --574 --183 --467 --332 --804 --693 --809 --240 --496 --380 --749 --466 --738 --761 --832 --398 --105 --675 --772 --136 --4 --46 --58 --836 --688 --722 --466 --346 --117 --183 --330 --794 --101 --253 --2 --519 --113 --115 --439 --118 --398 --326 --409 --723 --719 --354 --200 --647 --520 --29 --130 --564 --880 --823 --309 --352 --822 --326 --302 --452 --281 --467 --316 --115 --623 --625 --142 --262 --382 --85 --743 --340 --50 --270 --118 --683 --218 --595 --217 --371 --397 --443 --755 --909 --378 --843 --644 --303 --642 --798 --90 --562 -2 --733 --792 --235 --536 --132 --481 --386 --795 --167 --145 --725 --403 --533 --761 --599 --732 --719 --250 --239 --626 --318 --135 --756 --308 --287 --130 --277 --265 --709 --252 --679 --126 --794 --6 --194 --715 --703 --373 --481 --928 --710 --155 --431 --780 --658 --897 --947 --55 --271 --927 --554 --165 --763 --895 --329 --132 --293 --134 --524 --824 --277 --187 --849 --193 --167 --175 --125 --489 --36 --960 --931 --533 --9 --599 --589 --795 --418 --679 --793 --592 --24 --100 --664 --382 --524 --549 --124 --899 --583 --470 --897 --309 --886 --291 --971 --123 --122 --841 --218 --62 --434 --113 --138 --358 --569 --182 --839 --621 --596 --977 --297 --590 --738 --503 --334 --756 --245 --505 --107 --376 --958 --937 --986 --942 --589 --541 --612 --932 --314 --114 --213 --922 --31 --380 --152 --512 --521 --34 --613 --759 --781 --256 --297 --155 --853 --169 --842 --567 --533 --709 --19 --517 --542 --376 --149 --934 --496 --782 --469 --320 --219 --902 --155 --971 --1074 diff --git a/2017/d06/ex1/ex1.py b/2017/d06/ex1/ex1.py deleted file mode 100755 index e729e49..0000000 --- a/2017/d06/ex1/ex1.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python - -import itertools -import sys - -MemoryBlocks = tuple[int, ...] - - -def solve(input: str) -> int: - def parse(input: str) -> MemoryBlocks: - return tuple(int(n) for n in input.split()) - - def redistribute(nums: MemoryBlocks) -> MemoryBlocks: - res = list(nums) - i = res.index(max(res)) # Quick and hasty `argmax` - n, res[i] = res[i], 0 - common, remain = n // len(res), n % len(res) - for j in range(i + 1, i + remain + 1): - res[j % len(res)] += 1 - for j in range(len(res)): - res[j] += common - return tuple(res) - - blocks = parse(input) - seen: set[MemoryBlocks] = set() - for i in itertools.count(): - if blocks in seen: - return i - seen.add(blocks) - blocks = redistribute(blocks) - assert False # Sanity check - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d06/ex1/input b/2017/d06/ex1/input deleted file mode 100644 index d369702..0000000 --- a/2017/d06/ex1/input +++ /dev/null @@ -1 +0,0 @@ -2 8 8 5 4 2 3 1 5 5 1 2 15 13 5 14 diff --git a/2017/d06/ex2/ex2.py b/2017/d06/ex2/ex2.py deleted file mode 100755 index a7ad7d8..0000000 --- a/2017/d06/ex2/ex2.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python - -import itertools -import sys - -MemoryBlocks = tuple[int, ...] - - -def solve(input: str) -> int: - def parse(input: str) -> MemoryBlocks: - return tuple(int(n) for n in input.split()) - - def redistribute(nums: MemoryBlocks) -> MemoryBlocks: - res = list(nums) - i = res.index(max(res)) # Quick and hasty `argmax` - n, res[i] = res[i], 0 - common, remain = n // len(res), n % len(res) - for j in range(i + 1, i + remain + 1): - res[j % len(res)] += 1 - for j in range(len(res)): - res[j] += common - return tuple(res) - - blocks = parse(input) - count: dict[MemoryBlocks, int] = {} - for i in itertools.count(): - if blocks in count: - return i - count[blocks] - count[blocks] = i - blocks = redistribute(blocks) - assert False # Sanity check - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d06/ex2/input b/2017/d06/ex2/input deleted file mode 100644 index d369702..0000000 --- a/2017/d06/ex2/input +++ /dev/null @@ -1 +0,0 @@ -2 8 8 5 4 2 3 1 5 5 1 2 15 13 5 14 diff --git a/2017/d07/ex1/ex1.py b/2017/d07/ex1/ex1.py deleted file mode 100755 index a859fa6..0000000 --- a/2017/d07/ex1/ex1.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python - -import sys -from typing import NamedTuple - - -class ProgramYell(NamedTuple): - weight: int - children: set[str] - - -Tower = dict[str, ProgramYell] - - -def solve(input: str) -> str: - def parse_line(line: str) -> tuple[str, ProgramYell]: - name, rest = line.split(" ", 1) - weight, rest = rest.split(")") - children = set(rest.removeprefix(" -> ").split(", ")) if rest else set() - return name, ProgramYell(int(weight[1:]), children) - - def parse(input: str) -> Tower: - return {name: yell for name, yell in map(parse_line, input.splitlines())} - - def find_base(tower: Tower) -> str: - candidates = set(tower.keys()) - for yell in tower.values(): - candidates -= yell.children - assert len(candidates) == 1 - return candidates.pop() - - tower = parse(input) - return find_base(tower) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d07/ex1/input b/2017/d07/ex1/input deleted file mode 100644 index cd0fc4a..0000000 --- a/2017/d07/ex1/input +++ /dev/null @@ -1,1241 +0,0 @@ -bqyqwn (68) -> wscqe, cwxspl, syogw, xnxudsh -ddswb (34) -hnkvw (320) -ibqmynm (252) -> oglcdgs, tkjofj, upurae, oypvhy, bzfkt, hdvcz, cfwxyl -rkerea (87) -lcmlbj (66) -vtccvv (69) -nachvlp (20) -tmkli (66) -exuyuk (82) -ojzogs (79) -egkiqcp (37) -> rxjnad, psetts -xadjes (10) -fivkqxx (121) -> acvzsbe, kkmax, qcmwsvm -krgtrdn (53) -mxemqqb (267) -> iuuouds, qqmvd -iwwqvoa (24) -yyecrv (59) -zjpkoar (40) -ilsgqdw (37) -bmlfd (43) -nxqwag (81) -ubbwvvl (44) -khfzis (48) -> ztxcc, bvejguc -gvtcy (39) -xbxxe (173) -> bzjxil, amklj -qejgaf (25) -uunpyb (82) -dmidur (57) -fklfgd (65) -vcjfe (22) -rkjfx (33) -ioglbe (88) -tymkixg (36) -qbhhtw (90) -afbrhy (79) -nswcez (47) -wzjonl (16) -xviqup (95) -claolm (312) -> ndmkbul, rpjfkh -qhlhfk (387) -> iwwqvoa, rmshk, ftezz -vtokttx (55) -boalcdm (13) -angpy (62) -> fitha, itxgz, pyiexlj, wqshh, rloxobx -gwcdf (32) -jpscxfh (46) -> qsakd, exuyuk, dqdmie, kjwfeoj -qkzpcyy (96) -fifams (415) -yseezd (11) -qcmwsvm (37) -hfnhd (152) -> vdcfh, ufrhi -wfgzr (82) -sjoov (6) -fonrb (7531) -> xohxq, cmsqe, jefsr -pyhof (21) -pplis (9) -fosdh (90) -pjkyydd (15) -wvmtyez (46) -bzfkt (66) -> rauho, xctuhbx -zyqssjb (13) -> olebdv, byahs, xajzwdh -wotus (119) -> dndrnc, tebkmhi, qejgaf -rusndcc (39) -> xcfxvd, kvylxr, vwkegak, oiuztx -stofi (16) -mgqil (66) -> noibcw, nptqxtu -qjzss (31) -hawhqex (71) -kjjee (174) -> lltgjo, gwcdf -gdamb (99) -diqdy (183) -> gackyrq, vcjfe, lcnsf -sfwzqk (54) -> rkuzg, ewvvb -vktjns (45) -urwaex (59) -nyouzhg (17) -> lofybs, baedi -mklqpn (9) -iktget (33) -gxtfu (57) -xkymbld (37) -> mqgbif, ptxfk -qjeuqe (92) -benqzp (92) -> wvmtyez, gmveehb -rkctaq (20) -sbwoye (50) -bujufb (148) -> tduxvx, lxzvkpk, jllqymn, csrpy -cwfydbh (369) -> qcmtgvr, tyvjs -cjjytkr (305) -> trszl, fgzgfc -qsakd (82) -domway (2464) -> kgphv, pjujovx, hrdggo -mrpji (61) -kzrgfb (92) -hocazx (818) -> bmukspb, mgbwxw, gyirkcj, kgxfc -bobvssz (25) -> srvqt, alhghui, wnjaw, qhlhfk, lsbvzaf, qjkfys, nnncfl -rrzyzq (76) -eaufvn (78) -> dtazpb, nlajc -tduix (18) -yzcez (62) -> rlxto, vkaxa -uvpuko (91) -xtnmps (95) -> ptatzl, bujufb, oybbzr, zwopz, phqpwkw -ibeis (54) -ofkvpq (500) -> auvuxv, stqmwk, dptekr -pmolg (166) -> uuunqk, uolqt -byedxex (180) -> gsaqlad, ebwubc -aicjff (67) -vtcxw (860) -> ezlfnhs, aizdt, ylbftp -nzuswm (80) -> ojzogs, qfopwo -hgwbg (89) -sflonq (190) -> gppwsbp, mpvgy -pqiuhyp (52) -> xbtjl, jykseco, aftnyad, xaden, urdgg, ijkpfv, ejekn -ccgjf (99) -devsz (38) -vmmtsr (33) -ebwubc (70) -mgcnohi (69) -klege (92) -jtlqxy (66) -ofbqk (148) -ewluica (22) -mulvwn (290) -> ubbwvvl, jmuqp, dnovxt -trlcj (245) -uezwz (20) -bbtnj (170) -> xvwok, rqyxzn -ndticx (54) -> rbtco, bobvssz, umtxk, domway, wugia, ubvttg, ydpemw -lxwkpqh (325) -> xoigv, fqsjaz -mpvgy (35) -ujgeml (94) -jkoir (6) -kemkz (98) -dtqgdc (90) -girxc (147) -> zylotoh, qtxmjwm -olawkuc (79) -> earmfdp, wnowypb -umrqldb (99) -oyurlfq (57) -flgpg (188) -> jimltsw, xhgza -wawtrk (80) -nlajc (85) -ewqcktv (1364) -> hfnhd, amqvr, ntxcpwl -dmvyuf (35) -vtdbov (50) -xnszvs (65) -mjrktxe (50) -> eoxwp, jgsmitm, isrgei, rnbgz, kymbvpp, ktjdpt, mgzocpe -zicvok (81) -tkmfbk (93) -> ffhsg, kynezb -vlwvot (84) -oybbzr (1007) -> qstlv, nayvvrh, izxpf, habni, ckfefl, fjdlcbh, thhakxn -qiksfr (44) -wowxv (92) -fmdba (44) -zgxbjj (96) -jncjxue (66) -xquhgig (190) -> rqhfxty, maftysp -habni (27) -> xwknab, xukfcd, scvhl, tcbgf -iftcnc (50) -dqdmie (82) -otlvq (40) -> hjsrvj, rtbcch, vpirde -mgzocpe (51) -> zkwajbd, mrpji -fkzxb (89) -jlsmm (32) -igdkn (43) -> dgtxjuj, jxyakll, kptdem -rftuf (43) -uolqt (9) -rtwlo (78) -> wgbvle, npttye, claolm, ydffzgu, mgbgb, jwjuth, mulvwn -nrgzcge (132) -> bywbrk, vazoq, eaufvn -juoaena (94) -wfsaglg (54) -> nlfdps, tdkdiqe -jfsgqq (100) -> crslvc, esized -mcucysr (49) -tcbgf (28) -mlalrpt (166) -> jtbrjm, fyaxzl -srvqt (155) -> jyftx, dtijfqc, phcqntb, uyhrcfl -xohxq (1457) -> czbydf, wgdnyy -lqbmor (230) -> rkjfx, vmmtsr -jjsyexg (38) -ynvesz (88) -> rqaxn, afntec -ibbxb (194) -> imiimt, llikz -ktasnia (49) -> thkjz, cjgtra, tzngdx, cqjsqh, vtjtyp, lyzaead, xrtzs -vsjjq (30) -yjnzgl (67) -mcrhiy (6559) -> mkgafux, gugxitg, tymmo -nlgymop (139) -> tymkixg, crchwpb -ybosi (18) -rhqfb (179) -> okurp, gpwbcg, invqsb -kzjozhi (90) -ixncawy (28) -ooczbeh (36) -ubvttg (796) -> wuuvnlz, donzb, bwgimi, rywtmt, rusndcc, ceagctk -ohcoit (6) -exrud (176) -> hpziqqg, abxglwt, gozhrsf, oqjqu, vhkodl -opvrgh (79) -blyms (46) -vfrylx (10) -> qhkniqm, bmcwbsi -ndmkbul (55) -mohey (86) -> tbmyue, ibeis -wktzh (93) -ystgyng (50) -jclntv (87) -dsjcqpn (133) -> slufzy, gbbpqj, jxawk -fitha (68) -> faqngn, xguqqao, athuly, fmdsfus -xyang (225) -> njxrb, mfwuqb -acjedny (49) -mfwuqb (60) -ayuma (81) -qqmchoq (7) -yzjhmqq (171) -> dinpz, upozls -qfopwo (79) -srypr (64) -tvwmzal (236) -> cpujsn, ewluica -umtxk (2942) -> jyazs, scnhwcs, fmpvv, aahqvqy -gkwyfz (49) -dodrbx (227) -> uhtnl, vxnsova -sfdclf (238) -kksizqf (44) -dfofyir (236) -> ddswb, grxdbx -qakiz (37) -ceagctk (255) -> bwvlnlt, rkazlp, vbejzc, njhlrtm -hnjszii (284) -> zkdwz, bwlit -gbbpqj (34) -bvaoy (114) -> mogwbda, rodntl -vkihn (36) -symdxo (8) -nduildw (30) -nxhfgx (18) -chgfb (16) -gugaaiq (40) -euvrdg (79) -ckzaj (67) -jupzgjm (90) -llalaql (27) -qdnghwn (16) -iffluz (515) -> bbbvmxo, reomle, vspqi -nvrjzg (214) -> nzfko, qqmchoq -xvwok (34) -enmjipp (95) -jtbrjm (18) -rlxto (83) -xpotznx (41) -lslhph (59) -vhkodl (221) -> otlvq, fioegdo, rreidgp, fivkqxx, xahvbm -mncivb (88) -hbhfdlh (89) -mkgafux (688) -> admjq, tqtut, emkgc -tymmo (22) -> uxjaa, nlgymop, dcvfkk, yzjhmqq, iqjqlfq, faopk -vxslvq (37) -> jmvcgo, ioglbe -rxjnad (80) -ejdxula (92) -> kviiza, uqmaluk, nasbs -xvzoy (35) -vukpdsr (162) -> gumncu, mlzmimg, vjobpzv -xoigv (10) -iuehdsr (21) -jzgvab (9) -odxpup (89) -vwkegak (92) -bsvgagj (41) -mxwgu (310) -> yeyxf, qdnghwn -jynmg (1140) -> wotus, mohey, fiynyre -qftwuv (36) -veabcj (67) -zaargo (30) -> ytrsmfx, jtlqxy -xfbfvuu (65) -gpwbcg (5) -elysbb (81) -engpslr (85) -tqbtvqc (31) -faqngn (98) -jykseco (166) -> xawzbz, fsdoohr -nfywcyp (62) -rreidgp (168) -> vfupn, xyvnk -obmcr (89) -spnllx (76) -mbbuqoi (35) -wjxgg (177) -> symdxo, dsptf, yaxeloo, yxrhis -chcjswk (89) -anamgt (346) -> ywwxi, rnbvid -zjwqc (26) -wxgoew (1481) -> hnjszii, ygqxl, xhkwrs -dydcy (76) -> drnki, uxolsws, lrcstqr -npttye (42) -> wkrgvo, jhydv, enmjipp, hnyjyga -yjwvnhl (219) -fykgs (43) -vrmqym (97) -> lrmnb, nvigovl -gkfdg (226) -> ohcoit, jkoir -ictsk (122) -> devsz, jjsyexg -gixezcy (37) -rywtmt (158) -> nevrtrs, sybvdj, qcorw -pwhtvdh (40) -yapfoe (59) -xnnbqju (90) -> xzsmw, petvm, xyxidwf -vxiwms (99) -htaszsq (87) -mgbwxw (52) -> afbrhy, jrsfu -rdzsisf (59) -qvxanzu (262) -> nxhfgx, vvzmdr, inddon, ybosi -ysbhsn (181) -> wleavrv, kmvvxon -tirifqs (6489) -> ofbqk, iqdiez, kspsz, kejph -rnkbli (84) -bjbndbg (169) -> oqsdzpe, sbwoye, yhukqf -dndrnc (25) -oxzhz (86) -> bcbftl, hjzgzoe -ufrhi (68) -gsyeaes (26) -kgbzu (180) -> wzczb, bzqjb -dgtxjuj (97) -xulgx (5) -wleavrv (16) -qnhbmzp (118) -> wktzh, zodwdpq -csrpy (62) -> zmoxc, ccgjf, umrqldb, gdamb -ldqyt (50) -btwmd (54) -volompq (96) -qmshniw (443) -lrmnb (98) -yijwaf (32) -paoxff (98) -ulbute (95) -lyzaead (939) -> jfqddfd, ucpkpfb, sbmwazv -rodntl (60) -tykcvi (9) -aftnyad (188) -> rfqddq, recxxj -zdelqb (155) -> jaasf, snqnh -akwcv (65) -nszqngg (44) -eavas (45) -> ytsmc, mrxdp, prjpkm, nzawh -fqvbdq (96) -> tzimies, jduij -mabcqcb (194) -> itutdol, vtokttx -trvtkqj (49) -ynlzggk (36) -pggjo (19) -jajdx (19) -ackyirz (16) -gtiopzn (49) -idvnxqp (5) -njsjq (273) -> vptdap, eteyvz -qkjdjpe (44) -dzfon (61) -> wksjlix, zicvok, utiwem -nxmhned (166) -> pekohn, xnszvs -pnqycz (43) -> gkkit, khyca, yudzxoa -lvkeqm (192) -> lneyu, uopxjn -qvrvcu (19) -hvwyae (23) -ocgbpez (114) -> gjgrhw, bvtgvu -mehuxr (53) -pmdcajx (7) -ybixf (299) -> xvhgvw, ooczbeh, ksbwlir, pkzwosb -inlft (36) -hshafy (65) -nzfko (7) -vcnael (95) -nxuer (13) -pulql (59) -> akwcv, uijffti, ysxvzdu, xfbfvuu -hlbotz (13) -zhrdezs (28) -aqxaecv (297) -ppjapn (27) -bbbvmxo (21) -> rceksnv, uhnlse, rswnjx, ogcmm -ikvzux (44) -hdvcz (156) -> zisdcf, keurs, bjops -ytsmc (22) -jiwfia (13) -jthpj (44) -dtijfqc (76) -vgfhpwb (99) -sjmhuxn (11) -> aceyee, iohigm, zildb, vrmqym, pxxabj, gjjfx -byahs (65) -qllime (202) -> dspkk, wgtnepi -ksbwlir (36) -hzawlq (16) -kgwftu (87) -qtzelhq (62) -wabzx (209) -> sfazwz, lnndami -dyazidi (219) -resoi (25) -hgwkyu (91) -urdgg (166) -> srypr, fnayjx -hsfhqhe (17) -metif (68) -ifxzdfy (96) -> ssnpxj, ejhojmh -jefsr (477) -> fqvbdq, xsygbj, rcluk, dcero, lfgqgs -oglcdgs (140) -> dmvyuf, xvzoy -jrhzmbj (45) -mlvhqpe (91) -> qsstg, tnrrui, utsnke, gxtfu -iffxdk (87) -xboqv (17) -hppxlu (174) -> lkjhmiq, kntwy, auhnyn -pralyx (191) -> dmkfnm, xcmzg -osnkrr (53) -nhvyso (77) -mogwbda (60) -rqaxn (96) -vxnsova (5) -xsxnizc (50) -hskhxx (36) -ogcmm (57) -drnki (25) -ecjxs (197) -dnniv (16) -wnjaw (369) -> brvxyyg, hsvmept, praagwp -xjcxk (24) -aahqvqy (74) -hpwaux (97) -sadyx (59) -dptekr (112) -> xiqthw, ihtfo -mlmhe (4563) -> uwxjkq, uqals, ofkvpq, pyxdkm -yytmc (66) -hmbuu (16) -ezzpr (94) -zpxgfq (118) -> tqplqn, fysxwmd -hgkmod (75) -earmfdp (83) -mxpgmte (5) -kcfgbv (73) -> fdeowqq, pbzvjg, tzrqwt -jtxjj (120) -> hiuviy, sadyx -dsptf (8) -dsezlbe (54) -onzind (245) -> wayzzn, ystgyng -pjndde (422) -> yseezd, cseckdt -rnbgz (131) -> iuehdsr, xgzluhk -yswonja (195) -> gachtig, bjadb, gtiopzn -piizso (59) -msqxo (47) -jacmj (29) -hjsrvj (64) -prcxksh (20) -aceyee (219) -> gixezcy, zqwqcnq -pkipy (95) -czbydf (75) -bpguivk (32) -utapoe (84) -qjdou (87) -njhlrtm (38) -pkzwosb (36) -wpphwjv (83) -teqej (66) -lneyu (64) -dicalia (44) -opzxu (46) -gasejp (15) -llikz (22) -uhtnl (5) -kntwy (25) -wzbewii (157) -> myetb, dhwakp, vqtalpm -vkaxa (83) -kwnqw (49) -uhnlse (57) -zqamk (37518) -> mflijpx, ikzap, wzimze, agjpn -fnnykbh (91) -> nxqwag, tpcbt, elysbb, xlaqpg -ytrsmfx (66) -pyiexlj (92) -> oozbxqb, kzrgfb, klege, csfjt -yaxeloo (8) -tzbmy (71) -pjecv (56) -gsaqlad (70) -gmzcjo (76) -cuscn (114) -> fmdba, ikvzux -rbzmniw (52959) -> tespoy, tirifqs, exrud -jzoxv (52) -egizyey (78) -> metif, towuup -uxolsws (25) -twyhx (86) -nqjydpi (44) -> rpgzp, nszqngg, jthpj, qiksfr -avecfoq (95) -wltax (21) -xfyqx (20) -tnrrui (57) -gmveehb (46) -kymbvpp (67) -> qzvobt, osnkrr -xbccghy (66) -iqdiez (134) -> wkkmvcn, nkzgse -pmopji (128) -> gpcyq, qsdyww -cfwxyl (210) -khzqqwi (12) -wjrhp (992) -> nyouzhg, ccxff, qmifv, oonpy, vutdji, owukmji -yvlajs (35) -hkltivy (26) -vylzag (33) -mieynp (21) -jppbvbo (929) -> ynvesz, tvwmzal, mbwaxn -yxxgd (296) -utiwem (81) -ihvefep (110) -> ffzzzc, ckzaj, zfyqzi -vfupn (32) -jhydv (95) -vspqi (201) -> wzjonl, dnniv, pdazlob -iohigm (248) -> icxzod, mclqrmw, pjkyydd -hzehjo (43) -kwhgtnk (78) -npxexv (66) -lycfbo (89) -vezhmd (47) -amqvr (274) -> aditjen, xvdmeo -vbqpp (35) -upurae (33) -> rdzsisf, lslhph, urwaex -uvkwg (88) -wapknj (2443) -> xulgx, idvnxqp -mvgmf (105) -> dicalia, qhkhuow, phnuqn -qmifv (163) -> hzawlq, ackyirz -xlacmu (87) -aesiz (86) -jjiikvt (25) -prjpkm (22) -rbtco (1110) -> dfofyir, qnhbmzp, dzfon, zmdkea, valby, mabcqcb, mifwbmm -greav (20) -dmkfnm (30) -ftezz (24) -iuuouds (14) -jwjuth (390) -> hmbuu, oxlzlor -gzwrv (212) -> efqjc, gasejp, qqooh -wgdnyy (75) -rqhfxty (53) -qhpvuzi (75) -cvxqnh (53) -stqmwk (96) -> vcnael, dhobx -wuuvnlz (206) -> pznkdcr, ucfipvi, jfhzgp -nnyws (190) -bbbhx (5) -qdfvw (69) -> hgwkyu, uvpuko, wclnx -inddon (18) -gyirkcj (138) -> inlft, vkihn -lrtzi (53) -pjlxc (62) -slufzy (34) -zkdwz (20) -tigvdj (44217) -> xtnmps, ylnobx, mlmhe -vptdap (23) -aemkbp (35) -> dwrtbo, rkerea, iffxdk -dpngy (17) -nzhbfc (207) -> hvgozl, hsfhqhe -wayzzn (50) -myhnuu (66) -jrsfu (79) -gqeiy (257) -> opvrgh, sibvtz -xgzluhk (21) -fiynyre (156) -> mieqogh, zpaivc -vqtalpm (26) -thkjz (437) -> insleik, ayjse, sgovqnf, wjxgg, euwab -ylbftp (82) -> epcjds, gsyeaes -ndikjqv (22) -tqplqn (36) -aifpxqv (89) -hjbfr (20) -lltgjo (32) -picnycy (33) -kplvk (24) -ptatzl (314) -> sfdclf, ibbxb, slzpby, kjjee, bbtnj, gkfdg, nzuswm -qtxmjwm (7) -ckudisa (78) -opskc (35) -qhkniqm (96) -rqyxzn (34) -vdcfh (68) -hpziqqg (637) -> ypqkl, nmazby, hxswr -vrfme (20) -ozdnanh (34) -qcmtgvr (12) -gvdlvgg (20) -krnbkr (82) -> qladcl, tefdmi, ocdpr -fyxttac (39) -hbbpp (95) -hjzgzoe (38) -hjqsj (85) -asevk (44) -> hpwaux, byojhfr -fgzgfc (44) -ejtdhx (57) -ntxcpwl (36) -> kerjk, nggubzz, utapoe -fqsjaz (10) -hxswr (74) -> bixxpzd, htaszsq -dinpz (20) -yxxdal (44) -wozakri (251) -> mgcpbp, omslcm -dhwakp (26) -kvylxr (92) -lsbvzaf (75) -> ibqrz, cokvree, volompq, zgxbjj -bixxpzd (87) -xbtjl (294) -dyfzj (95) -utsnke (57) -sxjlr (91) -ckfefl (115) -> khzqqwi, fzwzr -ezlfnhs (62) -> qftwuv, ynlzggk -xguqqao (98) -jazqb (7378) -> xadcuw, hocazx, cqvdpy -dsmjo (32) -gpcyq (55) -dhvsrt (7) -jllqymn (110) -> dzwfsix, paeel, jclntv, qjdou -zkgdtp (90) -mjqkaqs (50) -nzcqte (140) -> wkkdc, pwhtvdh, gugaaiq -woypnze (91) -dcriqom (79) -zppujp (34) -aqacmr (18) -rkazlp (38) -fysxwmd (36) -mzutqi (571) -> qdfvw, mxwgu, yswonja -zfyqzi (67) -wqshh (460) -rztur (86) -bdlnohy (584) -> dodrbx, qwotm, cbavt, mvgmf, igcmpn -qqmvd (14) -uwxge (94) -ijkpfv (218) -> rxcgwd, steez -slzpby (136) -> nxxlbnt, ozdnanh, zppujp -dzuqljn (7) -> spnllx, fpeiss, hjzkjuw, pjoqde -dporud (50) -hrdggo (152) -> agztuz, mehuxr -kigyp (65) -> hjqsj, ijtis, engpslr -qcorw (83) -cmsqe (12) -> njsjq, zqpxn, pulql, fkttd, wozakri -keurs (18) -pyxdkm (872) -> xnnbqju, oxzhz, zaargo -pjhpwh (35) -vdlbwyo (24) -ocdpr (44) -gacseeh (89) -xzsmw (24) -liujmc (41) -myetb (26) -xawzbz (64) -qmyfg (114) -> weipv, woypnze -heisrl (36) -mlzmimg (24) -ayjse (75) -> veabcj, aicjff -htitjjt (203) -> nswcez, msqxo -xhkwrs (324) -tdkdiqe (87) -ukgbdva (65) -qmcphv (32) -fmhfnhv (24) -nhjtvk (47) -sbmqxu (25) -ewobo (25) -hvgozl (17) -ysxvzdu (65) -sfazwz (68) -hlwesdc (24) -wgbvle (422) -ugzmeb (77) -hbptt (138) -> uezwz, gbckkh, gvdlvgg -auezw (95) -lkuwf (95) -cneno (190) -> uwjobru, jeadxth -wkrgvo (95) -koxzeku (79) -vehziv (67) -codkti (71) -> tqbtvqc, oausk -kjwfeoj (82) -dcvfkk (111) -> uahcz, xsxnizc -lcnsf (22) -zzwmn (40) -bywbrk (80) -> rnkbli, vlwvot -jpmrs (94) -lfgqgs (187) -> vbjpz, hlbotz, boalcdm -xbnmg (48) -> aesiz, tqelui -pcvfgti (29) -ucpkpfb (181) -blkewbk (64) -> jlsryou, idokb, avecfoq, ozyqew -mbwaxn (240) -> nachvlp, prcxksh -wgsgaj (17) -fzwzr (12) -mgcpbp (34) -jxyakll (97) -fdeowqq (77) -zxmwy (35) -yudzxoa (84) -wwbebbr (95) -wgtnepi (66) -wkkdc (40) -xlccnkv (13) -yxrhis (8) -uwjobru (22) -csfzl (64) -dspkk (66) -xwknab (28) -fmdsfus (98) -vpirde (64) -nulax (10) -ymkgx (23) -psetts (80) -ucfipvi (67) -hsdym (340) -> onjqcrh, eitdb, ycuuwxa, mxemqqb, pnqycz, wexncjl -wqojj (22) -xiiqh (98) -cqjsqh (360) -> bzmqg, jpscxfh, ercxmph -wnowypb (83) -snqnh (95) -mifwbmm (114) -> tfezflv, qxrspl -fcgkmq (68) -> thftfut, svtqdbd -gachtig (49) -qxnvoh (214) -ihtfo (87) -qxrspl (95) -nnciip (95) -ercxmph (318) -> ixncawy, zhrdezs -iqmpc (53) -rnbvid (49) -xukfcd (28) -bjadb (49) -niifkl (90) -kxrbd (20) -lrcstqr (25) -gackyrq (22) -cbavt (161) -> qvrvcu, uhuees, pggjo, jajdx -mahlbe (6) -llpbev (29) -efqjc (15) -efvqwzi (7) -epqowm (45) -fjdlcbh (139) -csfjt (92) -zrnlkl (63) -> dyfzj, xviqup, atrzkqf, ulbute -xsygbj (130) -> vdlbwyo, ciquv, msdcz, kplvk -cdfmatu (80) -xeihyok (81) -> uunpyb, wfgzr -ssnpxj (56) -wclnx (91) -nnncfl (335) -> sgytd, nreuwh -cdjxwb (99) -> buznuv, hkltivy -aditjen (7) -auhnyn (25) -nvigovl (98) -yeyxf (16) -uwxjkq (905) -> jblwph, cdjxwb, dydcy -lkjhmiq (25) -teygd (170) -> llpbev, nrxyk -jaasf (95) -dwrtbo (87) -hwgwzv (57) -> qqqbf, fnslg -alhghui (279) -> qbhhtw, ltytvpb -mjqzvuu (195) -> hvwyae, tmzxl -wzczb (61) -ciquv (24) -gozhrsf (762) -> ifxzdfy, uuxpvxf, zyqssjb -khyca (84) -atrzkqf (95) -psjec (97) -xyxidwf (24) -esized (69) -towuup (68) -trszl (44) -fkttd (141) -> hbhfdlh, hgwbg -olvztw (21) -tebkmhi (25) -ltytvpb (90) -msdcz (24) -csdap (27) -vqinar (2904) -> qhbrmur, nrgxdmx, angpy, gcswiam -yxbaldn (122) -> vxiwms, syvza -swgjx (6) -mflijpx (75) -> oxypy, rtwlo, vwnvlh -pygrhr (144) -> rdorrx, pjecv -alneot (25) -wdbmakv (42933) -> ktasnia, mxnaq, mcrhiy -fjticim (35) -rsfxf (123) -> yjnzgl, glrmew -tyvjs (12) -gbckkh (20) -dgqfrv (35) -oozbxqb (92) -oypvhy (140) -> yvlajs, pjhpwh -fnslg (52) -vhzfut (96) -> obzrtar, qtzelhq -iqjqlfq (59) -> gmzcjo, rrzyzq -amklj (23) -tvbgr (80) -qsrxouy (96) -rauho (72) -tzrqwt (77) -pdazlob (16) -uhuees (19) -qebqgxd (94) -ffhsg (79) -hzuyh (50) -oiuztx (92) -wjdeth (5) -bjops (18) -bwvlnlt (38) -baedi (89) -irokors (39) -> xiiqh, paoxff -zvtfm (41) -aizdt (54) -> zjpkoar, zzwmn -ffzzzc (67) -oxoul (12) -> fkzxb, chcjswk -dcero (34) -> ssvfbfs, nxbec -rloxobx (421) -> jiwfia, nxuer, xfcktep -foznw (146) -> dpngy, wgsgaj, xboqv -buznuv (26) -tduxvx (326) -> iktget, vylzag, picnycy, lfdery -hiuviy (59) -dtazpb (85) -oxlzlor (16) -bvejguc (68) -uwjkolt (52) -> tvxvtce, igdkn, rteyxil, qvxanzu, qllime -rvqopbu (67) -owukmji (195) -pbzvjg (77) -agztuz (53) -zpaivc (19) -nofpmh (290) -> efvqwzi, pmdcajx -mhnnmp (8) -> qbaosu, pjndde, anamgt, bcesxba, blkewbk -zfqmic (67) -> lkuwf, pkipy -tespoy (5) -> bdlnohy, jppbvbo, fgsmzi, sjmhuxn -qhbrmur (1450) -> kcfgbv, dyomhm, nofpmh -lkdyq (57) -fuaio (16) -ccxff (53) -> cgveph, tzbmy -fioegdo (140) -> opzxu, blyms -bgnfpcr (75) -bmukspb (106) -> jzoxv, gqvmeg -sbmwazv (39) -> arrvxtj, hawhqex -xqwfgy (1496) -> cywvxf, bjbndbg, mlvhqpe -jfqddfd (64) -> ewgadin, fyxttac, gvtcy -empixc (142) -> hlwesdc, xjcxk, fmhfnhv -zmdkea (154) -> bgnfpcr, hgkmod -jeadxth (22) -ucilvib (40) -> ddgnyfo, koxzeku -rteyxil (334) -clqfbvi (66) -lfdery (33) -ijtis (85) -rmshk (24) -kptdem (97) -ropdc (226) -> usevjww, agthzo -talptwp (77) -bzqjb (61) -idokb (95) -kynezb (79) -tvxvtce (52) -> ujgeml, jpmrs, lpsaav -athuly (98) -vazoq (248) -rxcgwd (38) -tfezflv (95) -cywvxf (279) -> greav, kybtla -lfliwg (65) -qjkfys (353) -> bjhxuqc, cvxqnh -vvzmdr (18) -gwuixj (31) -svtqdbd (61) -nqfqgj (22) -> niifkl, fosdh -lxzvkpk (458) -gewpohj (16410) -> cvqbwem, uzljl, zlhpt, vtcxw, iffluz -bggovyb (144) -> supjxi, mieynp, wltax, pyhof -pbdafpz (236) -> wjdeth, zacwh, mxpgmte, wjgjhc -pqrpkmd (34) -maftysp (53) -qqqbf (52) -fpeiss (76) -qsstg (57) -oqeam (128) -> qjzss, gwuixj -brvxyyg (30) -oqmxlu (39) -tlpfhx (147) -> heisrl, hskhxx -icush (877) -> rsfxf, zfqmic, axzszf, gzwrv, cujuai -jagajrh (93) -kejph (98) -> alneot, jjiikvt -acvzsbe (37) -gqvmeg (52) -olebdv (65) -tqtut (74) -> ykitsi, wxvjyn -tzngdx (486) -> pvyrkg, hppxlu, eovobtl, diqdy -vmsoc (61) -> euvrdg, dcriqom -qiznqk (77) -kspsz (112) -> tduix, aqacmr -kybtla (20) -ktjdpt (23) -> tdmirp, qhpvuzi -jmvcgo (88) -hjzkjuw (76) -qinne (35) -ypqkl (64) -> qjeuqe, wowxv -epcjds (26) -mrxdp (22) -pznkdcr (67) -kmvvxon (16) -xlaqpg (81) -nhtfal (23) -bxqqvue (5668) -> zqbpucs, mhnnmp, ewqcktv -ipnvjje (80) -noibcw (95) -pywtg (16) -omslcm (34) -sxdngcn (6) -insleik (209) -wxvjyn (63) -ntezb (25) -klkwsa (57) -figvamv (32) -phqpwkw (1192) -> egkiqcp, ecjxs, foznw, tokyi -onjqcrh (67) -> lkdyq, tptqtpq, dmidur, klkwsa -igytdcp (160) -> vtdbov, dporud -vrtgae (66) -bwgimi (242) -> eohjrft, ankrgg, kvvkbhi -bzjxil (23) -ankrgg (55) -okurp (5) -rndvcf (39) -rkgoovn (104) -> qyfsc, lytrpo -thftfut (61) -jduij (65) -invra (180) -> sxdngcn, mahlbe, swgjx -wkkmvcn (7) -igcmpn (55) -> bcadp, sxjlr -pgaiut (90) -> vtccvv, mgcnohi -iytvm (15) -> juoaena, qebqgxd, uwxge -glrmew (67) -uqmaluk (70) -qstlv (75) -> qmcphv, bpguivk -gtbgp (234) -> ilsgqdw, qakiz, zesfmu -rziopi (57) -> flgpg, nqjydpi, xbnmg, xxdcgas, vhzfut, sfwzqk, kirnt -rdorrx (56) -oxypy (1992) -> sflonq, igytdcp, nzcqte, sjbfmfa -pekohn (65) -praagwp (30) -qqooh (15) -nzawh (22) -ywwxi (49) -phnuqn (44) -ylnobx (5204) -> rziopi, mzutqi, lcitl -gumncu (24) -cjgtra (900) -> nfkfex, rhqfb, oyyctv -gjgrhw (94) -paeel (87) -xiqthw (87) -ogowst (176) -> pdzooh, xlccnkv -mevujmj (83) -tlqjsb (994) -> odxpup, znagag, obmcr -ejoxsy (38) -> lxwkpqh, zdelqb, xyang, gtbgp, onzind, wabzx, kzjtb -agthzo (15) -xyvnk (32) -crchwpb (36) -pjoqde (76) -fgcajp (50) -tefdmi (44) -xctuhbx (72) -tokyi (79) -> yapfoe, yyecrv -njxrb (60) -qotyaq (7) -dnbejx (70) -uhrdeol (171) -> qinne, opskc, zxmwy, dgqfrv -cwxspl (12) -> nnciip, hbbpp -nggubzz (84) -uuunqk (9) -lxttas (133) -xvdmeo (7) -gkkit (84) -wexncjl (295) -jgsmitm (173) -pxxabj (33) -> wgupfl, lpdhdvy, lfliwg, fklfgd -ruedk (146) -> kgwftu, xlacmu -ydpemw (3192) -> ymkgx, nhtfal -ibqrz (96) -oyyctv (34) -> ipnvjje, tvbgr -xfcktep (13) -jblwph (81) -> lxexhp, vbqpp -steez (38) -xnxudsh (78) -> pjlxc, nfywcyp -rxjly (133) -> rftuf, hzehjo -eteyvz (23) -eohjrft (55) -wqilo (32) -tbmyue (54) -nkwwia (1405) -> dsjcqpn, irokors, wzbewii -oausk (31) -rpjfkh (55) -mxnaq (3937) -> glcsinj, icush, wjrhp -kviiza (70) -anggtqq (86) -uuxpvxf (114) -> nhjtvk, vezhmd -yrolq (64) -tkjofj (60) -> mjqkaqs, lnfjj, nakli -nasbs (70) -usevjww (15) -valby (106) -> vgfhpwb, xtnvc -zxygmaq (10) -tdmirp (75) -zodwdpq (93) -uyhrcfl (76) -mqgbif (73) -oqjqu (67) -> xbxxe, yjwvnhl, vmsoc, tlpfhx, rxjly, dyazidi -euwab (49) -> cdfmatu, wawtrk -admjq (40) -> qvaayfl, uqynzy -petvm (24) -zqpxn (196) -> himyt, zvtfm, xpotznx -nxxlbnt (34) -kpbawoe (26) -zlhpt (74) -> zvbqni, iytvm, htitjjt, aqxaecv -kkmax (37) -recxxj (53) -ejhojmh (56) -dnovxt (44) -crslvc (69) -fnayjx (64) -lytrpo (47) -auvuxv (242) -> wqojj, ndikjqv -zesfmu (37) -cnffplo (166) -> fuaio, pywtg -dfmjy (399) -> isxysg, dxlpr -xcfxvd (92) -xznhz (54) -mclqrmw (15) -cqvdpy (62) -> yzcez, nvrjzg, sebvkw, pgaiut, bggovyb, wfsaglg, teygd -fewgct (90) -xaden (108) -> jagajrh, fucxhz -xvhgvw (36) -ejekn (98) -> kemkz, souqntk -hsvmept (30) -zwopz (60) -> byedxex, yxbaldn, hnkvw, lvkeqm, kigyp, ruedk -uqynzy (80) -axzszf (167) -> iiuqtqw, vktjns -gugxitg (553) -> trlcj, olawkuc, xeihyok -wugia (2689) -> temju, xkymbld, ntlrkw -lxexhp (35) -scnhwcs (74) -yhukqf (50) -upozls (20) -qladcl (44) -wjgjhc (5) -fucxhz (93) -nayvvrh (25) -> ejtdhx, oyurlfq -oonpy (15) -> wyryqvy, zkgdtp -xowkw (41) -zildb (116) -> umjcr, pinqp, piizso -hrrld (1802) -> pqiuhyp, nkwwia, exsmez, rarkt, hsdym -lzojty (214) -uzljl (710) -> pmolg, benqzp, khfzis -vyinb (154) -> fzyim, vrfme, hjbfr -syogw (36) -> mevujmj, wpphwjv -qyfsc (47) -wvvivob (6) -wksjlix (81) -reomle (191) -> jacmj, amcixd -fzyim (20) -zfipnh (21) -uopxjn (64) -gaxdd (25) -dzwfsix (87) -nrxyk (29) -vbjpz (13) -kgxfc (30) -> kzjozhi, dtqgdc -nfkfex (134) -> vsjjq, nduildw -cpujsn (22) -weipv (91) -wjceo (184) -> resoi, gaxdd -unkkoph (119) -> myhnuu, lcmlbj -lnfjj (50) -bmmzqxb (81) -gzocw (110) -> qkjdjpe, yxxdal -uxjaa (131) -> coapfqs, kxrbd, rkctaq, xfyqx -jimltsw (16) -nptqxtu (95) -rpwdig (10) -xflhoc (20092) -> bqyqwn, hycgb, nrgzcge -jfofam (6042) -> gewpohj, ndticx, xflhoc -syvza (99) -whrinsh (34) -coapfqs (20) -souqntk (98) -rpgzp (44) -wgupfl (65) -jxawk (34) -zeolg (214) -qzvobt (53) -nmazby (120) -> yijwaf, idmqvse, dsmjo, wqilo -yuiyjpc (862) -> eavas, lxttas, codkti -rkuzg (83) -gdvuw (179) -> vrtgae, teqej -pinqp (59) -xtnvc (99) -gppwsbp (35) -exsmez (1357) -> pralyx, tkmfbk, unkkoph -ewvvb (83) -nlfdps (87) -jmuqp (44) -mieuhe (97) -donzb (407) -igbzlxl (27) -invqsb (5) -xxdcgas (30) -> auezw, wwbebbr -qhkhuow (44) -sgytd (62) -ikzap (5388) -> mjrktxe, tlqjsb, yuiyjpc -kvvkbhi (55) -xahvbm (222) -> udgssh, bbbhx -iiuqtqw (45) -isrgei (173) -ntlrkw (36) -> gkwyfz, acjedny, mcucysr -qxugs (31) -> iqmpc, lrtzi, krgtrdn -sebvkw (214) -> qotyaq, dhvsrt -gcswiam (1183) -> vahmn, cwfydbh, cjjytkr -ncuzpin (39) -sybvdj (83) -obzrtar (62) -thhakxn (103) -> pplis, tykcvi, mklqpn, jzgvab -vtjtyp (152) -> dhisacj, zpxgfq, oqeam, fcgkmq, nnyws, qxugs, oxoul -icxzod (15) -nakli (50) -bzmqg (374) -dhisacj (73) -> rndvcf, oqmxlu, ncuzpin -pdzooh (13) -pvyrkg (51) -> yytmc, clqfbvi, tmkli -scvhl (28) -qwotm (169) -> pqrpkmd, whrinsh -dcpzwz (87) -> wxgoew, xqwfgy, hrjlzxr, wapknj, ejoxsy -qsdyww (55) -puvmdie (41) -umjcr (59) -himyt (41) -tptqtpq (57) -zkwajbd (61) -vutdji (31) -> bsvgagj, puvmdie, liujmc, xowkw -lpsaav (94) -bmcwbsi (96) -rtbcch (64) -nadbegy (66) -jyazs (74) -xcmzg (30) -abxglwt (191) -> pmopji, jtxjj, asevk, yznmd, jfsgqq -tzimies (65) -jfhzgp (67) -wyryqvy (90) -kirnt (134) -> bmlfd, fykgs -xhgza (16) -xajzwdh (65) -tpcbt (81) -zmoxc (99) -bcbftl (38) -arrvxtj (71) -imiimt (22) -tqelui (86) -sibvtz (79) -pchfpqp (86) -faopk (147) -> figvamv, jlsmm -wscqe (14) -> ezzpr, chyun -emkgc (142) -> lcrbt, pcvfgti -nreuwh (62) -vahmn (49) -> twyhx, rztur, pchfpqp, anggtqq -eourjv (204) -> kpbawoe, zjwqc -ssvfbfs (96) -dxlpr (8) -sgovqnf (69) -> kzsoasg, dnbejx -eoxwp (133) -> zxygmaq, xadjes, nulax, rpwdig -ydffzgu (380) -> olvztw, zfipnh -byojhfr (97) -nlwakg (161) -ztxcc (68) -zisdcf (18) -itutdol (55) -cseckdt (11) -zqwqcnq (37) -fhqhu (188) -> igbzlxl, llalaql, ppjapn, csdap -kzsoasg (70) -cvqbwem (92) -> wjceo, gqqsfsr, vukpdsr, cneno, bvaoy -pjujovx (96) -> ayuma, bmmzqxb -vjobpzv (24) -kerjk (84) -qvaayfl (80) -bcesxba (444) -hnyjyga (95) -gjjfx (131) -> btwmd, xznhz, dsezlbe -idmqvse (32) -ygqxl (16) -> nhvyso, talptwp, qiznqk, ugzmeb -ozyqew (95) -itxgz (370) -> epqowm, jrhzmbj -afntec (96) -cgveph (71) -isxysg (8) -cqlvkj (65) -ykitsi (63) -bjhxuqc (53) -uahcz (50) -vbejzc (38) -cujuai (157) -> ldqyt, fgcajp -kgphv (246) -> wvvivob, sjoov -gqqsfsr (78) -> ckudisa, kwhgtnk -dofou (44) -uijffti (65) -nkzgse (7) -xrtzs (96) -> ictsk, invra, rkgoovn, gzocw, hbptt, ucilvib, cnffplo -zvbqni (105) -> qkzpcyy, qsrxouy -zqbpucs (568) -> dfmjy, fnnykbh, gqeiy, fifams -lnndami (68) -rcluk (156) -> fjticim, mbbuqoi -zylotoh (7) -phcqntb (76) -amcixd (29) -jlsryou (95) -rceksnv (57) -vwnvlh (1534) -> krnbkr, egizyey, empixc, lzojty, vyinb, zeolg, qxnvoh -chyun (94) -hrjlzxr (1124) -> ybixf, qmshniw, zrnlkl -bwlit (20) -grxdbx (34) -eqgvf (9) -> wdbmakv, zqamk, hvecp, rbzmniw, jfofam, tigvdj -uqals (78) -> ropdc, pbdafpz, mgqil, pygrhr, eourjv -veuzidj (49) -> kmhug, yrolq, csfzl -eovobtl (149) -> hzuyh, iftcnc -udgssh (5) -nxbec (96) -dyomhm (40) -> npxexv, xbccghy, jncjxue, nadbegy -fsdoohr (64) -lcrbt (29) -rarkt (1387) -> mjqzvuu, nzhbfc, veuzidj -temju (53) -> qpzszp, cqlvkj -nrgxdmx (1352) -> mlalrpt, nqfqgj, cuscn, ogowst, vfrylx -tlpfggk (25) -wzimze (4005) -> uwjkolt, jynmg, ibqmynm -ddgnyfo (79) -fyaxzl (18) -qpzszp (65) -eitdb (197) -> trvtkqj, kwnqw -fgsmzi (525) -> dzuqljn, ihvefep, uhrdeol, gdvuw -nevrtrs (83) -jyftx (76) -lcitl (1114) -> nlwakg, hwgwzv, girxc -kzjtb (78) -> gacseeh, lycfbo, aifpxqv -zacwh (5) -glcsinj (90) -> aemkbp, yxxgd, fhqhu, xquhgig, nxmhned, lqbmor, qmyfg -rswnjx (57) -cokvree (96) -ewgadin (39) -oqsdzpe (50) -yznmd (62) -> uvkwg, mncivb -lpdhdvy (65) -kmhug (64) -bvtgvu (94) -hycgb (237) -> zmciyk, ysbhsn, vxslvq -ycuuwxa (161) -> vehziv, rvqopbu -mieqogh (19) -xadcuw (1626) -> chgfb, stofi -supjxi (21) -rfqddq (53) -qbaosu (314) -> hshafy, ukgbdva -ptxfk (73) -lofybs (89) -agjpn (8265) -> ocgbpez, ejdxula, kgbzu -mgbgb (334) -> kksizqf, dofou -izxpf (39) -> ewobo, ntezb, sbmqxu, tlpfggk -znagag (89) -zmciyk (19) -> mieuhe, psjec -dhobx (95) -hvecp (90) -> hrrld, jazqb, fonrb, dcpzwz, vqinar, bxqqvue -sjbfmfa (80) -> fewgct, jupzgjm -fmpvv (74) -bcadp (91) -tmzxl (23) diff --git a/2017/d07/ex2/ex2.py b/2017/d07/ex2/ex2.py deleted file mode 100755 index c3e2db9..0000000 --- a/2017/d07/ex2/ex2.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python - -import sys -from collections import Counter -from typing import NamedTuple - - -class ProgramYell(NamedTuple): - weight: int - children: set[str] - - -Tower = dict[str, ProgramYell] - - -def solve(input: str) -> int: - def parse_line(line: str) -> tuple[str, ProgramYell]: - name, rest = line.split(" ", 1) - weight, rest = rest.split(")") - children = set(rest.removeprefix(" -> ").split(", ")) if rest else set() - return name, ProgramYell(int(weight[1:]), children) - - def parse(input: str) -> Tower: - return {name: yell for name, yell in map(parse_line, input.splitlines())} - - def find_base(tower: Tower) -> str: - candidates = set(tower.keys()) - for yell in tower.values(): - candidates -= yell.children - assert len(candidates) == 1 - return candidates.pop() - - def compute_weights(tower: Tower, base: str) -> dict[str, int]: - def helper(base: str) -> int: - total = ( - sum(helper(child) for child in tower[base].children) - + tower[base].weight - ) - res[base] = total - return total - - res: dict[str, int] = {} - helper(base) - return res - - def fix_balance(tower: Tower) -> int: - base = find_base(tower) - weights = compute_weights(tower, base) - - balanced_weight = -1 # Will be updated to the correct value afterwards - while True: - children = tower[base].children - subtowers = Counter(weights[child] for child in children) - if len(subtowers) == 1: - assert balanced_weight != -1 # Sanity check - return balanced_weight - sum(weights[child] for child in children) - assert len(subtowers) == 2 # Sanity check - balanced_weight, unbalanced_weight = (v for v, _ in subtowers.most_common()) - base = next( - child for child in children if weights[child] == unbalanced_weight - ) - - tower = parse(input) - return fix_balance(tower) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d07/ex2/input b/2017/d07/ex2/input deleted file mode 100644 index cd0fc4a..0000000 --- a/2017/d07/ex2/input +++ /dev/null @@ -1,1241 +0,0 @@ -bqyqwn (68) -> wscqe, cwxspl, syogw, xnxudsh -ddswb (34) -hnkvw (320) -ibqmynm (252) -> oglcdgs, tkjofj, upurae, oypvhy, bzfkt, hdvcz, cfwxyl -rkerea (87) -lcmlbj (66) -vtccvv (69) -nachvlp (20) -tmkli (66) -exuyuk (82) -ojzogs (79) -egkiqcp (37) -> rxjnad, psetts -xadjes (10) -fivkqxx (121) -> acvzsbe, kkmax, qcmwsvm -krgtrdn (53) -mxemqqb (267) -> iuuouds, qqmvd -iwwqvoa (24) -yyecrv (59) -zjpkoar (40) -ilsgqdw (37) -bmlfd (43) -nxqwag (81) -ubbwvvl (44) -khfzis (48) -> ztxcc, bvejguc -gvtcy (39) -xbxxe (173) -> bzjxil, amklj -qejgaf (25) -uunpyb (82) -dmidur (57) -fklfgd (65) -vcjfe (22) -rkjfx (33) -ioglbe (88) -tymkixg (36) -qbhhtw (90) -afbrhy (79) -nswcez (47) -wzjonl (16) -xviqup (95) -claolm (312) -> ndmkbul, rpjfkh -qhlhfk (387) -> iwwqvoa, rmshk, ftezz -vtokttx (55) -boalcdm (13) -angpy (62) -> fitha, itxgz, pyiexlj, wqshh, rloxobx -gwcdf (32) -jpscxfh (46) -> qsakd, exuyuk, dqdmie, kjwfeoj -qkzpcyy (96) -fifams (415) -yseezd (11) -qcmwsvm (37) -hfnhd (152) -> vdcfh, ufrhi -wfgzr (82) -sjoov (6) -fonrb (7531) -> xohxq, cmsqe, jefsr -pyhof (21) -pplis (9) -fosdh (90) -pjkyydd (15) -wvmtyez (46) -bzfkt (66) -> rauho, xctuhbx -zyqssjb (13) -> olebdv, byahs, xajzwdh -wotus (119) -> dndrnc, tebkmhi, qejgaf -rusndcc (39) -> xcfxvd, kvylxr, vwkegak, oiuztx -stofi (16) -mgqil (66) -> noibcw, nptqxtu -qjzss (31) -hawhqex (71) -kjjee (174) -> lltgjo, gwcdf -gdamb (99) -diqdy (183) -> gackyrq, vcjfe, lcnsf -sfwzqk (54) -> rkuzg, ewvvb -vktjns (45) -urwaex (59) -nyouzhg (17) -> lofybs, baedi -mklqpn (9) -iktget (33) -gxtfu (57) -xkymbld (37) -> mqgbif, ptxfk -qjeuqe (92) -benqzp (92) -> wvmtyez, gmveehb -rkctaq (20) -sbwoye (50) -bujufb (148) -> tduxvx, lxzvkpk, jllqymn, csrpy -cwfydbh (369) -> qcmtgvr, tyvjs -cjjytkr (305) -> trszl, fgzgfc -qsakd (82) -domway (2464) -> kgphv, pjujovx, hrdggo -mrpji (61) -kzrgfb (92) -hocazx (818) -> bmukspb, mgbwxw, gyirkcj, kgxfc -bobvssz (25) -> srvqt, alhghui, wnjaw, qhlhfk, lsbvzaf, qjkfys, nnncfl -rrzyzq (76) -eaufvn (78) -> dtazpb, nlajc -tduix (18) -yzcez (62) -> rlxto, vkaxa -uvpuko (91) -xtnmps (95) -> ptatzl, bujufb, oybbzr, zwopz, phqpwkw -ibeis (54) -ofkvpq (500) -> auvuxv, stqmwk, dptekr -pmolg (166) -> uuunqk, uolqt -byedxex (180) -> gsaqlad, ebwubc -aicjff (67) -vtcxw (860) -> ezlfnhs, aizdt, ylbftp -nzuswm (80) -> ojzogs, qfopwo -hgwbg (89) -sflonq (190) -> gppwsbp, mpvgy -pqiuhyp (52) -> xbtjl, jykseco, aftnyad, xaden, urdgg, ijkpfv, ejekn -ccgjf (99) -devsz (38) -vmmtsr (33) -ebwubc (70) -mgcnohi (69) -klege (92) -jtlqxy (66) -ofbqk (148) -ewluica (22) -mulvwn (290) -> ubbwvvl, jmuqp, dnovxt -trlcj (245) -uezwz (20) -bbtnj (170) -> xvwok, rqyxzn -ndticx (54) -> rbtco, bobvssz, umtxk, domway, wugia, ubvttg, ydpemw -lxwkpqh (325) -> xoigv, fqsjaz -mpvgy (35) -ujgeml (94) -jkoir (6) -kemkz (98) -dtqgdc (90) -girxc (147) -> zylotoh, qtxmjwm -olawkuc (79) -> earmfdp, wnowypb -umrqldb (99) -oyurlfq (57) -flgpg (188) -> jimltsw, xhgza -wawtrk (80) -nlajc (85) -ewqcktv (1364) -> hfnhd, amqvr, ntxcpwl -dmvyuf (35) -vtdbov (50) -xnszvs (65) -mjrktxe (50) -> eoxwp, jgsmitm, isrgei, rnbgz, kymbvpp, ktjdpt, mgzocpe -zicvok (81) -tkmfbk (93) -> ffhsg, kynezb -vlwvot (84) -oybbzr (1007) -> qstlv, nayvvrh, izxpf, habni, ckfefl, fjdlcbh, thhakxn -qiksfr (44) -wowxv (92) -fmdba (44) -zgxbjj (96) -jncjxue (66) -xquhgig (190) -> rqhfxty, maftysp -habni (27) -> xwknab, xukfcd, scvhl, tcbgf -iftcnc (50) -dqdmie (82) -otlvq (40) -> hjsrvj, rtbcch, vpirde -mgzocpe (51) -> zkwajbd, mrpji -fkzxb (89) -jlsmm (32) -igdkn (43) -> dgtxjuj, jxyakll, kptdem -rftuf (43) -uolqt (9) -rtwlo (78) -> wgbvle, npttye, claolm, ydffzgu, mgbgb, jwjuth, mulvwn -nrgzcge (132) -> bywbrk, vazoq, eaufvn -juoaena (94) -wfsaglg (54) -> nlfdps, tdkdiqe -jfsgqq (100) -> crslvc, esized -mcucysr (49) -tcbgf (28) -mlalrpt (166) -> jtbrjm, fyaxzl -srvqt (155) -> jyftx, dtijfqc, phcqntb, uyhrcfl -xohxq (1457) -> czbydf, wgdnyy -lqbmor (230) -> rkjfx, vmmtsr -jjsyexg (38) -ynvesz (88) -> rqaxn, afntec -ibbxb (194) -> imiimt, llikz -ktasnia (49) -> thkjz, cjgtra, tzngdx, cqjsqh, vtjtyp, lyzaead, xrtzs -vsjjq (30) -yjnzgl (67) -mcrhiy (6559) -> mkgafux, gugxitg, tymmo -nlgymop (139) -> tymkixg, crchwpb -ybosi (18) -rhqfb (179) -> okurp, gpwbcg, invqsb -kzjozhi (90) -ixncawy (28) -ooczbeh (36) -ubvttg (796) -> wuuvnlz, donzb, bwgimi, rywtmt, rusndcc, ceagctk -ohcoit (6) -exrud (176) -> hpziqqg, abxglwt, gozhrsf, oqjqu, vhkodl -opvrgh (79) -blyms (46) -vfrylx (10) -> qhkniqm, bmcwbsi -ndmkbul (55) -mohey (86) -> tbmyue, ibeis -wktzh (93) -ystgyng (50) -jclntv (87) -dsjcqpn (133) -> slufzy, gbbpqj, jxawk -fitha (68) -> faqngn, xguqqao, athuly, fmdsfus -xyang (225) -> njxrb, mfwuqb -acjedny (49) -mfwuqb (60) -ayuma (81) -qqmchoq (7) -yzjhmqq (171) -> dinpz, upozls -qfopwo (79) -srypr (64) -tvwmzal (236) -> cpujsn, ewluica -umtxk (2942) -> jyazs, scnhwcs, fmpvv, aahqvqy -gkwyfz (49) -dodrbx (227) -> uhtnl, vxnsova -sfdclf (238) -kksizqf (44) -dfofyir (236) -> ddswb, grxdbx -qakiz (37) -ceagctk (255) -> bwvlnlt, rkazlp, vbejzc, njhlrtm -hnjszii (284) -> zkdwz, bwlit -gbbpqj (34) -bvaoy (114) -> mogwbda, rodntl -vkihn (36) -symdxo (8) -nduildw (30) -nxhfgx (18) -chgfb (16) -gugaaiq (40) -euvrdg (79) -ckzaj (67) -jupzgjm (90) -llalaql (27) -qdnghwn (16) -iffluz (515) -> bbbvmxo, reomle, vspqi -nvrjzg (214) -> nzfko, qqmchoq -xvwok (34) -enmjipp (95) -jtbrjm (18) -rlxto (83) -xpotznx (41) -lslhph (59) -vhkodl (221) -> otlvq, fioegdo, rreidgp, fivkqxx, xahvbm -mncivb (88) -hbhfdlh (89) -mkgafux (688) -> admjq, tqtut, emkgc -tymmo (22) -> uxjaa, nlgymop, dcvfkk, yzjhmqq, iqjqlfq, faopk -vxslvq (37) -> jmvcgo, ioglbe -rxjnad (80) -ejdxula (92) -> kviiza, uqmaluk, nasbs -xvzoy (35) -vukpdsr (162) -> gumncu, mlzmimg, vjobpzv -xoigv (10) -iuehdsr (21) -jzgvab (9) -odxpup (89) -vwkegak (92) -bsvgagj (41) -mxwgu (310) -> yeyxf, qdnghwn -jynmg (1140) -> wotus, mohey, fiynyre -qftwuv (36) -veabcj (67) -zaargo (30) -> ytrsmfx, jtlqxy -xfbfvuu (65) -gpwbcg (5) -elysbb (81) -engpslr (85) -tqbtvqc (31) -faqngn (98) -jykseco (166) -> xawzbz, fsdoohr -nfywcyp (62) -rreidgp (168) -> vfupn, xyvnk -obmcr (89) -spnllx (76) -mbbuqoi (35) -wjxgg (177) -> symdxo, dsptf, yaxeloo, yxrhis -chcjswk (89) -anamgt (346) -> ywwxi, rnbvid -zjwqc (26) -wxgoew (1481) -> hnjszii, ygqxl, xhkwrs -dydcy (76) -> drnki, uxolsws, lrcstqr -npttye (42) -> wkrgvo, jhydv, enmjipp, hnyjyga -yjwvnhl (219) -fykgs (43) -vrmqym (97) -> lrmnb, nvigovl -gkfdg (226) -> ohcoit, jkoir -ictsk (122) -> devsz, jjsyexg -gixezcy (37) -rywtmt (158) -> nevrtrs, sybvdj, qcorw -pwhtvdh (40) -yapfoe (59) -xnnbqju (90) -> xzsmw, petvm, xyxidwf -vxiwms (99) -htaszsq (87) -mgbwxw (52) -> afbrhy, jrsfu -rdzsisf (59) -qvxanzu (262) -> nxhfgx, vvzmdr, inddon, ybosi -ysbhsn (181) -> wleavrv, kmvvxon -tirifqs (6489) -> ofbqk, iqdiez, kspsz, kejph -rnkbli (84) -bjbndbg (169) -> oqsdzpe, sbwoye, yhukqf -dndrnc (25) -oxzhz (86) -> bcbftl, hjzgzoe -ufrhi (68) -gsyeaes (26) -kgbzu (180) -> wzczb, bzqjb -dgtxjuj (97) -xulgx (5) -wleavrv (16) -qnhbmzp (118) -> wktzh, zodwdpq -csrpy (62) -> zmoxc, ccgjf, umrqldb, gdamb -ldqyt (50) -btwmd (54) -volompq (96) -qmshniw (443) -lrmnb (98) -yijwaf (32) -paoxff (98) -ulbute (95) -lyzaead (939) -> jfqddfd, ucpkpfb, sbmwazv -rodntl (60) -tykcvi (9) -aftnyad (188) -> rfqddq, recxxj -zdelqb (155) -> jaasf, snqnh -akwcv (65) -nszqngg (44) -eavas (45) -> ytsmc, mrxdp, prjpkm, nzawh -fqvbdq (96) -> tzimies, jduij -mabcqcb (194) -> itutdol, vtokttx -trvtkqj (49) -ynlzggk (36) -pggjo (19) -jajdx (19) -ackyirz (16) -gtiopzn (49) -idvnxqp (5) -njsjq (273) -> vptdap, eteyvz -qkjdjpe (44) -dzfon (61) -> wksjlix, zicvok, utiwem -nxmhned (166) -> pekohn, xnszvs -pnqycz (43) -> gkkit, khyca, yudzxoa -lvkeqm (192) -> lneyu, uopxjn -qvrvcu (19) -hvwyae (23) -ocgbpez (114) -> gjgrhw, bvtgvu -mehuxr (53) -pmdcajx (7) -ybixf (299) -> xvhgvw, ooczbeh, ksbwlir, pkzwosb -inlft (36) -hshafy (65) -nzfko (7) -vcnael (95) -nxuer (13) -pulql (59) -> akwcv, uijffti, ysxvzdu, xfbfvuu -hlbotz (13) -zhrdezs (28) -aqxaecv (297) -ppjapn (27) -bbbvmxo (21) -> rceksnv, uhnlse, rswnjx, ogcmm -ikvzux (44) -hdvcz (156) -> zisdcf, keurs, bjops -ytsmc (22) -jiwfia (13) -jthpj (44) -dtijfqc (76) -vgfhpwb (99) -sjmhuxn (11) -> aceyee, iohigm, zildb, vrmqym, pxxabj, gjjfx -byahs (65) -qllime (202) -> dspkk, wgtnepi -ksbwlir (36) -hzawlq (16) -kgwftu (87) -qtzelhq (62) -wabzx (209) -> sfazwz, lnndami -dyazidi (219) -resoi (25) -hgwkyu (91) -urdgg (166) -> srypr, fnayjx -hsfhqhe (17) -metif (68) -ifxzdfy (96) -> ssnpxj, ejhojmh -jefsr (477) -> fqvbdq, xsygbj, rcluk, dcero, lfgqgs -oglcdgs (140) -> dmvyuf, xvzoy -jrhzmbj (45) -mlvhqpe (91) -> qsstg, tnrrui, utsnke, gxtfu -iffxdk (87) -xboqv (17) -hppxlu (174) -> lkjhmiq, kntwy, auhnyn -pralyx (191) -> dmkfnm, xcmzg -osnkrr (53) -nhvyso (77) -mogwbda (60) -rqaxn (96) -vxnsova (5) -xsxnizc (50) -hskhxx (36) -ogcmm (57) -drnki (25) -ecjxs (197) -dnniv (16) -wnjaw (369) -> brvxyyg, hsvmept, praagwp -xjcxk (24) -aahqvqy (74) -hpwaux (97) -sadyx (59) -dptekr (112) -> xiqthw, ihtfo -mlmhe (4563) -> uwxjkq, uqals, ofkvpq, pyxdkm -yytmc (66) -hmbuu (16) -ezzpr (94) -zpxgfq (118) -> tqplqn, fysxwmd -hgkmod (75) -earmfdp (83) -mxpgmte (5) -kcfgbv (73) -> fdeowqq, pbzvjg, tzrqwt -jtxjj (120) -> hiuviy, sadyx -dsptf (8) -dsezlbe (54) -onzind (245) -> wayzzn, ystgyng -pjndde (422) -> yseezd, cseckdt -rnbgz (131) -> iuehdsr, xgzluhk -yswonja (195) -> gachtig, bjadb, gtiopzn -piizso (59) -msqxo (47) -jacmj (29) -hjsrvj (64) -prcxksh (20) -aceyee (219) -> gixezcy, zqwqcnq -pkipy (95) -czbydf (75) -bpguivk (32) -utapoe (84) -qjdou (87) -njhlrtm (38) -pkzwosb (36) -wpphwjv (83) -teqej (66) -lneyu (64) -dicalia (44) -opzxu (46) -gasejp (15) -llikz (22) -uhtnl (5) -kntwy (25) -wzbewii (157) -> myetb, dhwakp, vqtalpm -vkaxa (83) -kwnqw (49) -uhnlse (57) -zqamk (37518) -> mflijpx, ikzap, wzimze, agjpn -fnnykbh (91) -> nxqwag, tpcbt, elysbb, xlaqpg -ytrsmfx (66) -pyiexlj (92) -> oozbxqb, kzrgfb, klege, csfjt -yaxeloo (8) -tzbmy (71) -pjecv (56) -gsaqlad (70) -gmzcjo (76) -cuscn (114) -> fmdba, ikvzux -rbzmniw (52959) -> tespoy, tirifqs, exrud -jzoxv (52) -egizyey (78) -> metif, towuup -uxolsws (25) -twyhx (86) -nqjydpi (44) -> rpgzp, nszqngg, jthpj, qiksfr -avecfoq (95) -wltax (21) -xfyqx (20) -tnrrui (57) -gmveehb (46) -kymbvpp (67) -> qzvobt, osnkrr -xbccghy (66) -iqdiez (134) -> wkkmvcn, nkzgse -pmopji (128) -> gpcyq, qsdyww -cfwxyl (210) -khzqqwi (12) -wjrhp (992) -> nyouzhg, ccxff, qmifv, oonpy, vutdji, owukmji -yvlajs (35) -hkltivy (26) -vylzag (33) -mieynp (21) -jppbvbo (929) -> ynvesz, tvwmzal, mbwaxn -yxxgd (296) -utiwem (81) -ihvefep (110) -> ffzzzc, ckzaj, zfyqzi -vfupn (32) -jhydv (95) -vspqi (201) -> wzjonl, dnniv, pdazlob -iohigm (248) -> icxzod, mclqrmw, pjkyydd -hzehjo (43) -kwhgtnk (78) -npxexv (66) -lycfbo (89) -vezhmd (47) -amqvr (274) -> aditjen, xvdmeo -vbqpp (35) -upurae (33) -> rdzsisf, lslhph, urwaex -uvkwg (88) -wapknj (2443) -> xulgx, idvnxqp -mvgmf (105) -> dicalia, qhkhuow, phnuqn -qmifv (163) -> hzawlq, ackyirz -xlacmu (87) -aesiz (86) -jjiikvt (25) -prjpkm (22) -rbtco (1110) -> dfofyir, qnhbmzp, dzfon, zmdkea, valby, mabcqcb, mifwbmm -greav (20) -dmkfnm (30) -ftezz (24) -iuuouds (14) -jwjuth (390) -> hmbuu, oxlzlor -gzwrv (212) -> efqjc, gasejp, qqooh -wgdnyy (75) -rqhfxty (53) -qhpvuzi (75) -cvxqnh (53) -stqmwk (96) -> vcnael, dhobx -wuuvnlz (206) -> pznkdcr, ucfipvi, jfhzgp -nnyws (190) -bbbhx (5) -qdfvw (69) -> hgwkyu, uvpuko, wclnx -inddon (18) -gyirkcj (138) -> inlft, vkihn -lrtzi (53) -pjlxc (62) -slufzy (34) -zkdwz (20) -tigvdj (44217) -> xtnmps, ylnobx, mlmhe -vptdap (23) -aemkbp (35) -> dwrtbo, rkerea, iffxdk -dpngy (17) -nzhbfc (207) -> hvgozl, hsfhqhe -wayzzn (50) -myhnuu (66) -jrsfu (79) -gqeiy (257) -> opvrgh, sibvtz -xgzluhk (21) -fiynyre (156) -> mieqogh, zpaivc -vqtalpm (26) -thkjz (437) -> insleik, ayjse, sgovqnf, wjxgg, euwab -ylbftp (82) -> epcjds, gsyeaes -ndikjqv (22) -tqplqn (36) -aifpxqv (89) -hjbfr (20) -lltgjo (32) -picnycy (33) -kplvk (24) -ptatzl (314) -> sfdclf, ibbxb, slzpby, kjjee, bbtnj, gkfdg, nzuswm -qtxmjwm (7) -ckudisa (78) -opskc (35) -qhkniqm (96) -rqyxzn (34) -vdcfh (68) -hpziqqg (637) -> ypqkl, nmazby, hxswr -vrfme (20) -ozdnanh (34) -qcmtgvr (12) -gvdlvgg (20) -krnbkr (82) -> qladcl, tefdmi, ocdpr -fyxttac (39) -hbbpp (95) -hjzgzoe (38) -hjqsj (85) -asevk (44) -> hpwaux, byojhfr -fgzgfc (44) -ejtdhx (57) -ntxcpwl (36) -> kerjk, nggubzz, utapoe -fqsjaz (10) -hxswr (74) -> bixxpzd, htaszsq -dinpz (20) -yxxdal (44) -wozakri (251) -> mgcpbp, omslcm -dhwakp (26) -kvylxr (92) -lsbvzaf (75) -> ibqrz, cokvree, volompq, zgxbjj -bixxpzd (87) -xbtjl (294) -dyfzj (95) -utsnke (57) -sxjlr (91) -ckfefl (115) -> khzqqwi, fzwzr -ezlfnhs (62) -> qftwuv, ynlzggk -xguqqao (98) -jazqb (7378) -> xadcuw, hocazx, cqvdpy -dsmjo (32) -gpcyq (55) -dhvsrt (7) -jllqymn (110) -> dzwfsix, paeel, jclntv, qjdou -zkgdtp (90) -mjqkaqs (50) -nzcqte (140) -> wkkdc, pwhtvdh, gugaaiq -woypnze (91) -dcriqom (79) -zppujp (34) -aqacmr (18) -rkazlp (38) -fysxwmd (36) -mzutqi (571) -> qdfvw, mxwgu, yswonja -zfyqzi (67) -wqshh (460) -rztur (86) -bdlnohy (584) -> dodrbx, qwotm, cbavt, mvgmf, igcmpn -qqmvd (14) -uwxge (94) -ijkpfv (218) -> rxcgwd, steez -slzpby (136) -> nxxlbnt, ozdnanh, zppujp -dzuqljn (7) -> spnllx, fpeiss, hjzkjuw, pjoqde -dporud (50) -hrdggo (152) -> agztuz, mehuxr -kigyp (65) -> hjqsj, ijtis, engpslr -qcorw (83) -cmsqe (12) -> njsjq, zqpxn, pulql, fkttd, wozakri -keurs (18) -pyxdkm (872) -> xnnbqju, oxzhz, zaargo -pjhpwh (35) -vdlbwyo (24) -ocdpr (44) -gacseeh (89) -xzsmw (24) -liujmc (41) -myetb (26) -xawzbz (64) -qmyfg (114) -> weipv, woypnze -heisrl (36) -mlzmimg (24) -ayjse (75) -> veabcj, aicjff -htitjjt (203) -> nswcez, msqxo -xhkwrs (324) -tdkdiqe (87) -ukgbdva (65) -qmcphv (32) -fmhfnhv (24) -nhjtvk (47) -sbmqxu (25) -ewobo (25) -hvgozl (17) -ysxvzdu (65) -sfazwz (68) -hlwesdc (24) -wgbvle (422) -ugzmeb (77) -hbptt (138) -> uezwz, gbckkh, gvdlvgg -auezw (95) -lkuwf (95) -cneno (190) -> uwjobru, jeadxth -wkrgvo (95) -koxzeku (79) -vehziv (67) -codkti (71) -> tqbtvqc, oausk -kjwfeoj (82) -dcvfkk (111) -> uahcz, xsxnizc -lcnsf (22) -zzwmn (40) -bywbrk (80) -> rnkbli, vlwvot -jpmrs (94) -lfgqgs (187) -> vbjpz, hlbotz, boalcdm -xbnmg (48) -> aesiz, tqelui -pcvfgti (29) -ucpkpfb (181) -blkewbk (64) -> jlsryou, idokb, avecfoq, ozyqew -mbwaxn (240) -> nachvlp, prcxksh -wgsgaj (17) -fzwzr (12) -mgcpbp (34) -jxyakll (97) -fdeowqq (77) -zxmwy (35) -yudzxoa (84) -wwbebbr (95) -wgtnepi (66) -wkkdc (40) -xlccnkv (13) -yxrhis (8) -uwjobru (22) -csfzl (64) -dspkk (66) -xwknab (28) -fmdsfus (98) -vpirde (64) -nulax (10) -ymkgx (23) -psetts (80) -ucfipvi (67) -hsdym (340) -> onjqcrh, eitdb, ycuuwxa, mxemqqb, pnqycz, wexncjl -wqojj (22) -xiiqh (98) -cqjsqh (360) -> bzmqg, jpscxfh, ercxmph -wnowypb (83) -snqnh (95) -mifwbmm (114) -> tfezflv, qxrspl -fcgkmq (68) -> thftfut, svtqdbd -gachtig (49) -qxnvoh (214) -ihtfo (87) -qxrspl (95) -nnciip (95) -ercxmph (318) -> ixncawy, zhrdezs -iqmpc (53) -rnbvid (49) -xukfcd (28) -bjadb (49) -niifkl (90) -kxrbd (20) -lrcstqr (25) -gackyrq (22) -cbavt (161) -> qvrvcu, uhuees, pggjo, jajdx -mahlbe (6) -llpbev (29) -efqjc (15) -efvqwzi (7) -epqowm (45) -fjdlcbh (139) -csfjt (92) -zrnlkl (63) -> dyfzj, xviqup, atrzkqf, ulbute -xsygbj (130) -> vdlbwyo, ciquv, msdcz, kplvk -cdfmatu (80) -xeihyok (81) -> uunpyb, wfgzr -ssnpxj (56) -wclnx (91) -nnncfl (335) -> sgytd, nreuwh -cdjxwb (99) -> buznuv, hkltivy -aditjen (7) -auhnyn (25) -nvigovl (98) -yeyxf (16) -uwxjkq (905) -> jblwph, cdjxwb, dydcy -lkjhmiq (25) -teygd (170) -> llpbev, nrxyk -jaasf (95) -dwrtbo (87) -hwgwzv (57) -> qqqbf, fnslg -alhghui (279) -> qbhhtw, ltytvpb -mjqzvuu (195) -> hvwyae, tmzxl -wzczb (61) -ciquv (24) -gozhrsf (762) -> ifxzdfy, uuxpvxf, zyqssjb -khyca (84) -atrzkqf (95) -psjec (97) -xyxidwf (24) -esized (69) -towuup (68) -trszl (44) -fkttd (141) -> hbhfdlh, hgwbg -olvztw (21) -tebkmhi (25) -ltytvpb (90) -msdcz (24) -csdap (27) -vqinar (2904) -> qhbrmur, nrgxdmx, angpy, gcswiam -yxbaldn (122) -> vxiwms, syvza -swgjx (6) -mflijpx (75) -> oxypy, rtwlo, vwnvlh -pygrhr (144) -> rdorrx, pjecv -alneot (25) -wdbmakv (42933) -> ktasnia, mxnaq, mcrhiy -fjticim (35) -rsfxf (123) -> yjnzgl, glrmew -tyvjs (12) -gbckkh (20) -dgqfrv (35) -oozbxqb (92) -oypvhy (140) -> yvlajs, pjhpwh -fnslg (52) -vhzfut (96) -> obzrtar, qtzelhq -iqjqlfq (59) -> gmzcjo, rrzyzq -amklj (23) -tvbgr (80) -qsrxouy (96) -rauho (72) -tzrqwt (77) -pdazlob (16) -uhuees (19) -qebqgxd (94) -ffhsg (79) -hzuyh (50) -oiuztx (92) -wjdeth (5) -bjops (18) -bwvlnlt (38) -baedi (89) -irokors (39) -> xiiqh, paoxff -zvtfm (41) -aizdt (54) -> zjpkoar, zzwmn -ffzzzc (67) -oxoul (12) -> fkzxb, chcjswk -dcero (34) -> ssvfbfs, nxbec -rloxobx (421) -> jiwfia, nxuer, xfcktep -foznw (146) -> dpngy, wgsgaj, xboqv -buznuv (26) -tduxvx (326) -> iktget, vylzag, picnycy, lfdery -hiuviy (59) -dtazpb (85) -oxlzlor (16) -bvejguc (68) -uwjkolt (52) -> tvxvtce, igdkn, rteyxil, qvxanzu, qllime -rvqopbu (67) -owukmji (195) -pbzvjg (77) -agztuz (53) -zpaivc (19) -nofpmh (290) -> efvqwzi, pmdcajx -mhnnmp (8) -> qbaosu, pjndde, anamgt, bcesxba, blkewbk -zfqmic (67) -> lkuwf, pkipy -tespoy (5) -> bdlnohy, jppbvbo, fgsmzi, sjmhuxn -qhbrmur (1450) -> kcfgbv, dyomhm, nofpmh -lkdyq (57) -fuaio (16) -ccxff (53) -> cgveph, tzbmy -fioegdo (140) -> opzxu, blyms -bgnfpcr (75) -bmukspb (106) -> jzoxv, gqvmeg -sbmwazv (39) -> arrvxtj, hawhqex -xqwfgy (1496) -> cywvxf, bjbndbg, mlvhqpe -jfqddfd (64) -> ewgadin, fyxttac, gvtcy -empixc (142) -> hlwesdc, xjcxk, fmhfnhv -zmdkea (154) -> bgnfpcr, hgkmod -jeadxth (22) -ucilvib (40) -> ddgnyfo, koxzeku -rteyxil (334) -clqfbvi (66) -lfdery (33) -ijtis (85) -rmshk (24) -kptdem (97) -ropdc (226) -> usevjww, agthzo -talptwp (77) -bzqjb (61) -idokb (95) -kynezb (79) -tvxvtce (52) -> ujgeml, jpmrs, lpsaav -athuly (98) -vazoq (248) -rxcgwd (38) -tfezflv (95) -cywvxf (279) -> greav, kybtla -lfliwg (65) -qjkfys (353) -> bjhxuqc, cvxqnh -vvzmdr (18) -gwuixj (31) -svtqdbd (61) -nqfqgj (22) -> niifkl, fosdh -lxzvkpk (458) -gewpohj (16410) -> cvqbwem, uzljl, zlhpt, vtcxw, iffluz -bggovyb (144) -> supjxi, mieynp, wltax, pyhof -pbdafpz (236) -> wjdeth, zacwh, mxpgmte, wjgjhc -pqrpkmd (34) -maftysp (53) -qqqbf (52) -fpeiss (76) -qsstg (57) -oqeam (128) -> qjzss, gwuixj -brvxyyg (30) -oqmxlu (39) -tlpfhx (147) -> heisrl, hskhxx -icush (877) -> rsfxf, zfqmic, axzszf, gzwrv, cujuai -jagajrh (93) -kejph (98) -> alneot, jjiikvt -acvzsbe (37) -gqvmeg (52) -olebdv (65) -tqtut (74) -> ykitsi, wxvjyn -tzngdx (486) -> pvyrkg, hppxlu, eovobtl, diqdy -vmsoc (61) -> euvrdg, dcriqom -qiznqk (77) -kspsz (112) -> tduix, aqacmr -kybtla (20) -ktjdpt (23) -> tdmirp, qhpvuzi -jmvcgo (88) -hjzkjuw (76) -qinne (35) -ypqkl (64) -> qjeuqe, wowxv -epcjds (26) -mrxdp (22) -pznkdcr (67) -kmvvxon (16) -xlaqpg (81) -nhtfal (23) -bxqqvue (5668) -> zqbpucs, mhnnmp, ewqcktv -ipnvjje (80) -noibcw (95) -pywtg (16) -omslcm (34) -sxdngcn (6) -insleik (209) -wxvjyn (63) -ntezb (25) -klkwsa (57) -figvamv (32) -phqpwkw (1192) -> egkiqcp, ecjxs, foznw, tokyi -onjqcrh (67) -> lkdyq, tptqtpq, dmidur, klkwsa -igytdcp (160) -> vtdbov, dporud -vrtgae (66) -bwgimi (242) -> eohjrft, ankrgg, kvvkbhi -bzjxil (23) -ankrgg (55) -okurp (5) -rndvcf (39) -rkgoovn (104) -> qyfsc, lytrpo -thftfut (61) -jduij (65) -invra (180) -> sxdngcn, mahlbe, swgjx -wkkmvcn (7) -igcmpn (55) -> bcadp, sxjlr -pgaiut (90) -> vtccvv, mgcnohi -iytvm (15) -> juoaena, qebqgxd, uwxge -glrmew (67) -uqmaluk (70) -qstlv (75) -> qmcphv, bpguivk -gtbgp (234) -> ilsgqdw, qakiz, zesfmu -rziopi (57) -> flgpg, nqjydpi, xbnmg, xxdcgas, vhzfut, sfwzqk, kirnt -rdorrx (56) -oxypy (1992) -> sflonq, igytdcp, nzcqte, sjbfmfa -pekohn (65) -praagwp (30) -qqooh (15) -nzawh (22) -ywwxi (49) -phnuqn (44) -ylnobx (5204) -> rziopi, mzutqi, lcitl -gumncu (24) -cjgtra (900) -> nfkfex, rhqfb, oyyctv -gjgrhw (94) -paeel (87) -xiqthw (87) -ogowst (176) -> pdzooh, xlccnkv -mevujmj (83) -tlqjsb (994) -> odxpup, znagag, obmcr -ejoxsy (38) -> lxwkpqh, zdelqb, xyang, gtbgp, onzind, wabzx, kzjtb -agthzo (15) -xyvnk (32) -crchwpb (36) -pjoqde (76) -fgcajp (50) -tefdmi (44) -xctuhbx (72) -tokyi (79) -> yapfoe, yyecrv -njxrb (60) -qotyaq (7) -dnbejx (70) -uhrdeol (171) -> qinne, opskc, zxmwy, dgqfrv -cwxspl (12) -> nnciip, hbbpp -nggubzz (84) -uuunqk (9) -lxttas (133) -xvdmeo (7) -gkkit (84) -wexncjl (295) -jgsmitm (173) -pxxabj (33) -> wgupfl, lpdhdvy, lfliwg, fklfgd -ruedk (146) -> kgwftu, xlacmu -ydpemw (3192) -> ymkgx, nhtfal -ibqrz (96) -oyyctv (34) -> ipnvjje, tvbgr -xfcktep (13) -jblwph (81) -> lxexhp, vbqpp -steez (38) -xnxudsh (78) -> pjlxc, nfywcyp -rxjly (133) -> rftuf, hzehjo -eteyvz (23) -eohjrft (55) -wqilo (32) -tbmyue (54) -nkwwia (1405) -> dsjcqpn, irokors, wzbewii -oausk (31) -rpjfkh (55) -mxnaq (3937) -> glcsinj, icush, wjrhp -kviiza (70) -anggtqq (86) -uuxpvxf (114) -> nhjtvk, vezhmd -yrolq (64) -tkjofj (60) -> mjqkaqs, lnfjj, nakli -nasbs (70) -usevjww (15) -valby (106) -> vgfhpwb, xtnvc -zxygmaq (10) -tdmirp (75) -zodwdpq (93) -uyhrcfl (76) -mqgbif (73) -oqjqu (67) -> xbxxe, yjwvnhl, vmsoc, tlpfhx, rxjly, dyazidi -euwab (49) -> cdfmatu, wawtrk -admjq (40) -> qvaayfl, uqynzy -petvm (24) -zqpxn (196) -> himyt, zvtfm, xpotznx -nxxlbnt (34) -kpbawoe (26) -zlhpt (74) -> zvbqni, iytvm, htitjjt, aqxaecv -kkmax (37) -recxxj (53) -ejhojmh (56) -dnovxt (44) -crslvc (69) -fnayjx (64) -lytrpo (47) -auvuxv (242) -> wqojj, ndikjqv -zesfmu (37) -cnffplo (166) -> fuaio, pywtg -dfmjy (399) -> isxysg, dxlpr -xcfxvd (92) -xznhz (54) -mclqrmw (15) -cqvdpy (62) -> yzcez, nvrjzg, sebvkw, pgaiut, bggovyb, wfsaglg, teygd -fewgct (90) -xaden (108) -> jagajrh, fucxhz -xvhgvw (36) -ejekn (98) -> kemkz, souqntk -hsvmept (30) -zwopz (60) -> byedxex, yxbaldn, hnkvw, lvkeqm, kigyp, ruedk -uqynzy (80) -axzszf (167) -> iiuqtqw, vktjns -gugxitg (553) -> trlcj, olawkuc, xeihyok -wugia (2689) -> temju, xkymbld, ntlrkw -lxexhp (35) -scnhwcs (74) -yhukqf (50) -upozls (20) -qladcl (44) -wjgjhc (5) -fucxhz (93) -nayvvrh (25) -> ejtdhx, oyurlfq -oonpy (15) -> wyryqvy, zkgdtp -xowkw (41) -zildb (116) -> umjcr, pinqp, piizso -hrrld (1802) -> pqiuhyp, nkwwia, exsmez, rarkt, hsdym -lzojty (214) -uzljl (710) -> pmolg, benqzp, khfzis -vyinb (154) -> fzyim, vrfme, hjbfr -syogw (36) -> mevujmj, wpphwjv -qyfsc (47) -wvvivob (6) -wksjlix (81) -reomle (191) -> jacmj, amcixd -fzyim (20) -zfipnh (21) -uopxjn (64) -gaxdd (25) -dzwfsix (87) -nrxyk (29) -vbjpz (13) -kgxfc (30) -> kzjozhi, dtqgdc -nfkfex (134) -> vsjjq, nduildw -cpujsn (22) -weipv (91) -wjceo (184) -> resoi, gaxdd -unkkoph (119) -> myhnuu, lcmlbj -lnfjj (50) -bmmzqxb (81) -gzocw (110) -> qkjdjpe, yxxdal -uxjaa (131) -> coapfqs, kxrbd, rkctaq, xfyqx -jimltsw (16) -nptqxtu (95) -rpwdig (10) -xflhoc (20092) -> bqyqwn, hycgb, nrgzcge -jfofam (6042) -> gewpohj, ndticx, xflhoc -syvza (99) -whrinsh (34) -coapfqs (20) -souqntk (98) -rpgzp (44) -wgupfl (65) -jxawk (34) -zeolg (214) -qzvobt (53) -nmazby (120) -> yijwaf, idmqvse, dsmjo, wqilo -yuiyjpc (862) -> eavas, lxttas, codkti -rkuzg (83) -gdvuw (179) -> vrtgae, teqej -pinqp (59) -xtnvc (99) -gppwsbp (35) -exsmez (1357) -> pralyx, tkmfbk, unkkoph -ewvvb (83) -nlfdps (87) -jmuqp (44) -mieuhe (97) -donzb (407) -igbzlxl (27) -invqsb (5) -xxdcgas (30) -> auezw, wwbebbr -qhkhuow (44) -sgytd (62) -ikzap (5388) -> mjrktxe, tlqjsb, yuiyjpc -kvvkbhi (55) -xahvbm (222) -> udgssh, bbbhx -iiuqtqw (45) -isrgei (173) -ntlrkw (36) -> gkwyfz, acjedny, mcucysr -qxugs (31) -> iqmpc, lrtzi, krgtrdn -sebvkw (214) -> qotyaq, dhvsrt -gcswiam (1183) -> vahmn, cwfydbh, cjjytkr -ncuzpin (39) -sybvdj (83) -obzrtar (62) -thhakxn (103) -> pplis, tykcvi, mklqpn, jzgvab -vtjtyp (152) -> dhisacj, zpxgfq, oqeam, fcgkmq, nnyws, qxugs, oxoul -icxzod (15) -nakli (50) -bzmqg (374) -dhisacj (73) -> rndvcf, oqmxlu, ncuzpin -pdzooh (13) -pvyrkg (51) -> yytmc, clqfbvi, tmkli -scvhl (28) -qwotm (169) -> pqrpkmd, whrinsh -dcpzwz (87) -> wxgoew, xqwfgy, hrjlzxr, wapknj, ejoxsy -qsdyww (55) -puvmdie (41) -umjcr (59) -himyt (41) -tptqtpq (57) -zkwajbd (61) -vutdji (31) -> bsvgagj, puvmdie, liujmc, xowkw -lpsaav (94) -bmcwbsi (96) -rtbcch (64) -nadbegy (66) -jyazs (74) -xcmzg (30) -abxglwt (191) -> pmopji, jtxjj, asevk, yznmd, jfsgqq -tzimies (65) -jfhzgp (67) -wyryqvy (90) -kirnt (134) -> bmlfd, fykgs -xhgza (16) -xajzwdh (65) -tpcbt (81) -zmoxc (99) -bcbftl (38) -arrvxtj (71) -imiimt (22) -tqelui (86) -sibvtz (79) -pchfpqp (86) -faopk (147) -> figvamv, jlsmm -wscqe (14) -> ezzpr, chyun -emkgc (142) -> lcrbt, pcvfgti -nreuwh (62) -vahmn (49) -> twyhx, rztur, pchfpqp, anggtqq -eourjv (204) -> kpbawoe, zjwqc -ssvfbfs (96) -dxlpr (8) -sgovqnf (69) -> kzsoasg, dnbejx -eoxwp (133) -> zxygmaq, xadjes, nulax, rpwdig -ydffzgu (380) -> olvztw, zfipnh -byojhfr (97) -nlwakg (161) -ztxcc (68) -zisdcf (18) -itutdol (55) -cseckdt (11) -zqwqcnq (37) -fhqhu (188) -> igbzlxl, llalaql, ppjapn, csdap -kzsoasg (70) -cvqbwem (92) -> wjceo, gqqsfsr, vukpdsr, cneno, bvaoy -pjujovx (96) -> ayuma, bmmzqxb -vjobpzv (24) -kerjk (84) -qvaayfl (80) -bcesxba (444) -hnyjyga (95) -gjjfx (131) -> btwmd, xznhz, dsezlbe -idmqvse (32) -ygqxl (16) -> nhvyso, talptwp, qiznqk, ugzmeb -ozyqew (95) -itxgz (370) -> epqowm, jrhzmbj -afntec (96) -cgveph (71) -isxysg (8) -cqlvkj (65) -ykitsi (63) -bjhxuqc (53) -uahcz (50) -vbejzc (38) -cujuai (157) -> ldqyt, fgcajp -kgphv (246) -> wvvivob, sjoov -gqqsfsr (78) -> ckudisa, kwhgtnk -dofou (44) -uijffti (65) -nkzgse (7) -xrtzs (96) -> ictsk, invra, rkgoovn, gzocw, hbptt, ucilvib, cnffplo -zvbqni (105) -> qkzpcyy, qsrxouy -zqbpucs (568) -> dfmjy, fnnykbh, gqeiy, fifams -lnndami (68) -rcluk (156) -> fjticim, mbbuqoi -zylotoh (7) -phcqntb (76) -amcixd (29) -jlsryou (95) -rceksnv (57) -vwnvlh (1534) -> krnbkr, egizyey, empixc, lzojty, vyinb, zeolg, qxnvoh -chyun (94) -hrjlzxr (1124) -> ybixf, qmshniw, zrnlkl -bwlit (20) -grxdbx (34) -eqgvf (9) -> wdbmakv, zqamk, hvecp, rbzmniw, jfofam, tigvdj -uqals (78) -> ropdc, pbdafpz, mgqil, pygrhr, eourjv -veuzidj (49) -> kmhug, yrolq, csfzl -eovobtl (149) -> hzuyh, iftcnc -udgssh (5) -nxbec (96) -dyomhm (40) -> npxexv, xbccghy, jncjxue, nadbegy -fsdoohr (64) -lcrbt (29) -rarkt (1387) -> mjqzvuu, nzhbfc, veuzidj -temju (53) -> qpzszp, cqlvkj -nrgxdmx (1352) -> mlalrpt, nqfqgj, cuscn, ogowst, vfrylx -tlpfggk (25) -wzimze (4005) -> uwjkolt, jynmg, ibqmynm -ddgnyfo (79) -fyaxzl (18) -qpzszp (65) -eitdb (197) -> trvtkqj, kwnqw -fgsmzi (525) -> dzuqljn, ihvefep, uhrdeol, gdvuw -nevrtrs (83) -jyftx (76) -lcitl (1114) -> nlwakg, hwgwzv, girxc -kzjtb (78) -> gacseeh, lycfbo, aifpxqv -zacwh (5) -glcsinj (90) -> aemkbp, yxxgd, fhqhu, xquhgig, nxmhned, lqbmor, qmyfg -rswnjx (57) -cokvree (96) -ewgadin (39) -oqsdzpe (50) -yznmd (62) -> uvkwg, mncivb -lpdhdvy (65) -kmhug (64) -bvtgvu (94) -hycgb (237) -> zmciyk, ysbhsn, vxslvq -ycuuwxa (161) -> vehziv, rvqopbu -mieqogh (19) -xadcuw (1626) -> chgfb, stofi -supjxi (21) -rfqddq (53) -qbaosu (314) -> hshafy, ukgbdva -ptxfk (73) -lofybs (89) -agjpn (8265) -> ocgbpez, ejdxula, kgbzu -mgbgb (334) -> kksizqf, dofou -izxpf (39) -> ewobo, ntezb, sbmqxu, tlpfggk -znagag (89) -zmciyk (19) -> mieuhe, psjec -dhobx (95) -hvecp (90) -> hrrld, jazqb, fonrb, dcpzwz, vqinar, bxqqvue -sjbfmfa (80) -> fewgct, jupzgjm -fmpvv (74) -bcadp (91) -tmzxl (23) diff --git a/2017/d08/ex1/ex1.py b/2017/d08/ex1/ex1.py deleted file mode 100755 index c762819..0000000 --- a/2017/d08/ex1/ex1.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python - -import enum -import operator -import sys -from collections import defaultdict -from typing import NamedTuple - - -class Operation(enum.StrEnum): - INC = "inc" - DEC = "dec" - - -class Comparator(enum.StrEnum): - GT = ">" - GE = ">=" - LT = "<" - LE = "<=" - EQ = "==" - NE = "!=" - - def __call__(self, lhs: int, rhs: int) -> bool: - return getattr(operator, self.name.lower())(lhs, rhs) - - -class Condition(NamedTuple): - target: str - comp: Comparator - value: int - - def eval(self, registers: dict[str, int]) -> bool: - return self.comp(registers[self.target], self.value) - - -class Instruction(NamedTuple): - target: str - op: Operation - amount: int - condition: Condition - - -def solve(input: str) -> int: - def parse_line(line: str) -> Instruction: - target, op, amount, _, comp_target, comp_op, comp_value = line.split() - return Instruction( - target, - Operation(op), - int(amount), - Condition(comp_target, Comparator(comp_op), int(comp_value)), - ) - - def parse(input: str) -> list[Instruction]: - return [parse_line(line) for line in input.splitlines()] - - program = parse(input) - regs: dict[str, int] = defaultdict(int) - for instr in program: - if not instr.condition.eval(regs): - continue - regs[instr.target] += instr.amount * (1 if instr.op == Operation.INC else -1) - return max(regs.values()) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d08/ex1/input b/2017/d08/ex1/input deleted file mode 100644 index e1d8dc5..0000000 --- a/2017/d08/ex1/input +++ /dev/null @@ -1,1000 +0,0 @@ -sd dec 441 if k != 0 -lp dec 419 if mxn >= 7 -w inc -592 if icg >= -9 -a dec -29 if q <= 9 -kt dec 486 if ms != 8 -kt inc -841 if kt > -488 -rz inc -592 if m <= 1 -xtz dec 780 if lp < 9 -iox dec 804 if icg != 6 -lp inc 360 if i == 9 -f dec -570 if gi >= 7 -um inc 87 if q != 4 -kt dec -242 if rz != -595 -j inc -154 if db != 0 -giq dec 728 if iox > -811 -a dec -9 if xtz > -781 -lp inc -261 if ms > 2 -w inc -816 if hey > -1 -mxn inc 680 if ms >= -9 -q inc -777 if w < -1400 -wm dec -353 if q == -774 -q inc 414 if hey == 0 -xdl inc 488 if kt != -1075 -gus dec -136 if fxx != -7 -f dec 852 if hey >= 10 -j inc 531 if ms <= -9 -km dec 231 if xdl >= 487 -fxx dec 579 if iox == -804 -km dec 23 if kt != -1076 -fxx inc -845 if xtz != -773 -mxn dec 335 if fxx != -1432 -q dec 184 if f == 0 -wm dec -330 if f == 0 -iox dec 677 if mxn != 339 -mxn inc -429 if hey < 1 -rz dec 101 if hey == 8 -k inc 17 if db == 0 -gus inc -328 if iox == -1481 -a inc 657 if rz <= -584 -wm dec -365 if rz < -590 -m inc -710 if w < -1399 -kt inc -246 if wm != 698 -w dec 976 if fxx >= -1431 -giq inc 319 if hey >= -5 -iox inc -563 if xdl < 495 -xdl dec -349 if f >= -9 -sd inc -296 if q >= -555 -xdl inc 406 if cl >= -2 -f inc 966 if hey >= -6 -lp dec -838 if iox > -2054 -k dec -674 if q < -542 -i inc -23 if k < 692 -mxn inc -221 if sd != -302 -mxn inc -830 if mxn > -309 -km inc -283 if db > -7 -icg inc 365 if xdl > 1234 -q inc -23 if m < -702 -wm dec -507 if rz < -582 -j inc -501 if gi != -10 -um inc 274 if a > 689 -db inc 814 if xdl != 1250 -fxx dec -172 if db != 822 -wm dec 581 if kt <= -1323 -gi dec -715 if kt >= -1339 -f inc -209 if i >= -31 -q inc 933 if fxx > -1246 -mxn dec -227 if gi > 713 -fxx dec -112 if xdl <= 1252 -hey dec -998 if xtz >= -781 -lp dec -743 if ms <= 4 -icg dec -581 if fxx > -1149 -gus inc 725 if k != 698 -icg dec 156 if kt != -1339 -gus dec 961 if i > -32 -giq dec -992 if kt <= -1327 -m inc -477 if xdl >= 1240 -db dec -258 if gus <= -424 -wm inc -72 if gi > 713 -i dec 923 if lp == 1581 -m inc -221 if iox == -2044 -j inc 410 if m < -1402 -kt inc 838 if a == 685 -i dec 528 if gi < 712 -iox dec -823 if i >= -952 -a dec -705 if icg > 799 -gi dec -538 if db > 1079 -xdl inc -507 if q > -571 -rz inc 37 if km > -546 -fxx dec -718 if ms <= -2 -xdl inc -742 if cl < 4 -q dec 591 if wm > 542 -a dec 100 if db != 1072 -fxx dec -392 if giq >= 579 -j inc 991 if i >= -942 -m inc 311 if sd != -296 -icg inc -286 if db != 1075 -m inc 906 if rz == -555 -um inc 150 if hey == 993 -rz inc -637 if fxx < -746 -ms dec 779 if f >= 751 -gus inc 928 if j != -100 -rz dec 769 if sd < -292 -xdl inc -556 if gus <= 505 -rz inc -94 if j < -82 -mxn dec -763 if cl == 0 -xdl dec -693 if gus <= 502 -db inc -879 if kt <= -1339 -w dec 651 if hey > 991 -um dec -898 if giq == 583 -xdl dec 501 if hey > 998 -wm dec 746 if lp < 1587 -iox inc 915 if um > 1251 -a inc 573 if q >= -1165 -j dec -459 if m <= -512 -km dec -601 if xdl >= 131 -km dec 801 if f >= 756 -ms inc 318 if j < -91 -hey dec -768 if i <= -945 -f inc -982 if xdl < 134 -i inc 210 if iox < -305 -icg inc -838 if xtz >= -784 -mxn dec 901 if f == -225 -m inc 601 if i <= -733 -iox inc -863 if cl >= -5 -ms dec -474 if db >= 1069 -xtz dec 708 if um >= 1253 -lp dec 0 if xdl < 130 -k inc -476 if sd <= -291 -um dec 475 if hey != 1756 -q inc 178 if k <= 215 -km dec 244 if a >= 1265 -j dec 485 if k < 209 -icg inc 429 if um >= 784 -ms inc -881 if kt > -1341 -cl inc -75 if iox < -1176 -icg dec -72 if gi == 715 -i inc 714 if lp >= 1572 -rz inc -881 if j >= -96 -ms dec -453 if i <= -29 -giq dec -500 if sd != -305 -sd dec -78 if lp != 1572 -a inc 313 if db == 1072 -w dec 97 if q == -978 -gus dec -203 if f != -225 -xdl dec -894 if j < -88 -q inc 71 if k != 213 -um dec -242 if wm > -207 -kt dec -997 if sd != -215 -cl dec 643 if lp != 1587 -hey inc -564 if fxx == -748 -ms dec 639 if m != 95 -ms dec 131 if w <= -3026 -xdl dec 241 if w != -3032 -mxn inc 404 if i == -28 -giq dec 111 if xdl >= 789 -wm inc 93 if j <= -88 -xdl inc 318 if um >= 1026 -gi dec -766 if a < 1587 -mxn inc 212 if w > -3040 -f dec -601 if giq == 1084 -m dec 135 if kt >= -334 -a dec -471 if rz >= -2940 -cl dec -379 if giq != 1080 -w inc -834 if db < 1077 -km inc -515 if f >= -226 -i inc 133 if a > 2043 -gus dec -368 if gi >= 1476 -db inc -629 if fxx > -758 -km inc -807 if a != 2052 -j dec -129 if cl > -267 -gi dec -443 if m <= -35 -kt dec -355 if sd != -218 -mxn inc -734 if xtz == -1488 -icg inc 468 if m == -34 -m inc 896 if iox <= -1168 -xdl inc -763 if j < 39 -db inc -51 if xdl >= 337 -sd dec 688 if icg >= 167 -w inc 307 if gi >= 1924 -ms inc 190 if xdl >= 331 -k inc 869 if fxx >= -750 -mxn inc -772 if ms >= -1771 -f inc -303 if q == -922 -kt dec 99 if ms < -1757 -j dec -733 if sd < -904 -wm inc -808 if gi <= 1933 -q dec -671 if i != 112 -cl inc -790 if xdl >= 330 -icg inc -617 if ms > -1774 -w inc 529 if xdl > 333 -w inc -413 if wm < -907 -db inc 780 if xdl > 330 -xtz inc -535 if um <= 1025 -mxn inc 415 if db > 1165 -xtz inc 170 if db != 1169 -k dec -365 if k <= 1091 -giq inc -695 if q < -233 -db inc -991 if a > 2057 -k dec 543 if fxx == -748 -kt inc 673 if hey <= 1209 -gi inc -23 if mxn <= -1917 -m inc -567 if sd > -916 -m dec -269 if wm == -912 -kt dec 601 if db != 1180 -km dec -781 if kt == -351 -rz inc -296 if wm != -912 -um inc 4 if gus != 874 -um inc -876 if q < -231 -gi dec -744 if xtz < -1320 -j inc -101 if q <= -236 -kt inc -959 if xtz == -1318 -icg dec 9 if m == 562 -kt inc -412 if gus > 867 -fxx dec 394 if gus > 867 -fxx dec 105 if xtz == -1318 -a dec -533 if giq != 396 -km dec -864 if um != 147 -mxn dec -240 if i != 114 -m inc -830 if km != -628 -iox inc 160 if mxn != -1690 -k inc 966 if j > 679 -xtz inc 482 if cl <= -1050 -f inc -430 if fxx < -1253 -sd inc 138 if sd > -915 -giq dec 736 if xtz == -836 -f dec 780 if ms >= -1767 -wm inc -362 if kt <= -1731 -um dec -195 if xtz >= -838 -um dec 888 if i >= 107 -i dec 754 if gus != 868 -hey inc -518 if kt <= -1726 -iox inc 843 if hey > 676 -ms dec -46 if a < 2587 -mxn inc 288 if gus >= 864 -gus inc -643 if mxn < -1393 -um inc 457 if rz >= -2936 -um dec -976 if xtz == -836 -m dec 783 if fxx > -1254 -gi inc -63 if m <= -1043 -lp dec -244 if cl > -1062 -sd inc 908 if km >= -637 -km inc -725 if kt <= -1731 -j dec -20 if k == 906 -wm dec -596 if kt >= -1740 -xtz dec 133 if km <= -1355 -db inc -792 if icg != -466 -db dec -851 if lp != 1835 -cl dec 707 if f > -1012 -iox dec 246 if iox >= -170 -um dec 719 if ms == -1720 -xtz dec -216 if icg != -464 -km dec 776 if w <= -3446 -j dec 388 if xdl != 339 -j dec 776 if kt == -1732 -mxn dec 615 if cl == -1761 -i inc 579 if gus < 226 -i inc -172 if xdl < 341 -ms inc 720 if lp < 1825 -ms dec -590 if hey < 690 -iox dec -781 if gus < 231 -mxn inc -145 if a >= 2577 -q inc -885 if f <= -1013 -xtz inc -148 if a != 2593 -km inc -586 if fxx < -1239 -um inc -988 if kt < -1724 -k dec -852 if xtz != -891 -j inc -365 if m != -1050 -gus inc -679 if cl != -1760 -um inc -342 if icg != -455 -hey inc -807 if mxn == -2157 -w dec 759 if w != -3439 -ms inc -328 if gus >= -455 -gi inc -179 if iox == 369 -ms inc 930 if giq != -345 -fxx inc 959 if giq == -338 -km dec -605 if db <= 1226 -um dec 954 if gus == -460 -f inc -325 if giq < -341 -cl dec -95 if cl <= -1752 -hey dec 825 if sd < 141 -db dec -608 if sd >= 139 -giq inc 141 if lp > 1821 -a dec 824 if km <= -2715 -k inc 982 if db < 1840 -k dec -6 if giq != -213 -xtz dec -59 if kt <= -1731 -fxx dec -589 if a == 1761 -m inc 874 if rz == -2936 -m dec 241 if xtz == -838 -gus dec 512 if w > -4208 -mxn inc 651 if gus == -973 -lp inc -553 if hey == -948 -giq inc 252 if lp > 1263 -km dec -360 if a == 1761 -giq inc -504 if a != 1770 -kt inc -815 if um <= -1146 -lp dec 343 if gi >= 1652 -w dec 6 if lp <= 937 -gus dec 806 if ms > -534 -q dec 262 if f > -1335 -rz dec -959 if sd <= 141 -w dec -958 if mxn == -2157 -gus inc 530 if xdl > 333 -lp dec -30 if hey > -949 -lp dec 345 if q != -509 -i inc 509 if km > -2363 -rz inc -576 if um == -1155 -km inc 622 if iox > 367 -k dec -833 if ms != -527 -um dec 586 if i == 1027 -q inc -724 if rz == -2553 -cl dec -372 if f <= -1330 -cl dec -944 if j > -442 -j dec 674 if hey != -958 -q inc -830 if j != -1135 -cl dec 594 if um < -1749 -gi dec -991 if q > -2066 -kt dec -528 if giq >= -465 -iox inc -291 if a > 1759 -q dec -395 if f != -1330 -um dec 244 if cl <= -1285 -a dec 961 if um < -1988 -iox inc -321 if w == -3253 -lp dec -307 if iox < -241 -m dec -188 if mxn == -2157 -um dec -481 if icg <= -450 -gi dec 303 if cl < -1294 -mxn dec -791 if wm != -684 -kt dec -368 if sd != 149 -mxn dec -783 if sd < 141 -gi dec 864 if m == 11 -gus dec -17 if w == -3253 -w dec 499 if giq > -464 -xtz inc 659 if q > -2067 -wm inc 572 if kt != -1654 -xtz dec -287 if xtz != -191 -sd inc 763 if kt <= -1658 -xdl inc 830 if gus == -1225 -icg inc 508 if km == -1737 -gi inc 756 if rz == -2560 -xtz inc 983 if km <= -1734 -w inc 717 if xtz > 1085 -q dec 52 if w < -3030 -xdl inc -373 if f <= -1321 -w dec -544 if icg > 56 -gus inc -120 if km > -1741 -mxn dec -16 if hey <= -947 -wm dec 591 if mxn != -576 -gus inc -355 if kt <= -1644 -xdl inc 898 if fxx <= -650 -f dec 71 if m != 11 -xtz dec 902 if fxx > -663 -kt dec -576 if db != 1831 -rz inc 465 if fxx < -650 -a dec 342 if fxx >= -666 -k inc 293 if cl != -1286 -iox dec 791 if db == 1839 -a dec 125 if kt != -1071 -gi dec 852 if xtz == 185 -f inc 982 if sd == 133 -mxn dec -426 if sd <= 146 -gus inc -100 if xdl <= 1696 -um inc 872 if xtz != 182 -db dec -10 if db < 1843 -q inc 209 if lp >= 920 -k inc -338 if hey >= -950 -m inc -601 if wm < -695 -w dec 725 if xdl >= 1694 -wm inc -913 if q >= -1901 -fxx inc 986 if sd <= 144 -a dec 329 if m == -590 -xtz inc 80 if q < -1893 -gus inc 234 if fxx == 328 -ms inc 110 if giq < -451 -gus dec -969 if sd != 134 -um dec 806 if ms <= -417 -gus dec -458 if icg < 53 -cl dec -272 if fxx > 326 -k inc -212 if sd != 143 -xtz dec 109 if fxx <= 324 -mxn dec 302 if m >= -599 -lp inc -240 if giq <= -451 -m dec -58 if wm != -1618 -xtz dec -178 if gus == -139 -giq inc -132 if xdl != 1694 -w inc -149 if a >= 962 -f inc -512 if lp <= 690 -lp dec -84 if sd < 147 -cl inc 657 if db <= 1851 -m inc -180 if hey == -948 -sd inc -711 if a < 974 -ms inc -905 if j != -1134 -f inc -852 if mxn >= -451 -lp inc 818 if i == 1027 -w dec -407 if wm <= -1610 -m dec -298 if gi > 926 -gi inc -17 if sd != -564 -ms inc 891 if kt != -1075 -xdl inc -498 if fxx != 337 -kt dec 153 if lp == 1575 -db inc -565 if f < -2690 -lp inc 812 if um <= -1438 -fxx inc 151 if um != -1429 -fxx dec 484 if km < -1732 -q inc 130 if f == -2690 -lp dec 926 if icg != 58 -giq dec -378 if k >= 3321 -cl dec 136 if ms == -1323 -xdl dec -889 if w != -3502 -hey dec 540 if hey == -948 -a dec 796 if xdl >= 1189 -xtz dec 197 if kt < -1066 -i dec 328 if db == 1284 -giq dec -697 if hey > -1482 -f inc -985 if icg != 51 -gi inc 128 if f > -3689 -j dec 638 if i != 699 -mxn inc 300 if icg < 55 -icg inc -846 if q <= -1900 -icg dec -845 if giq > -86 -cl dec 502 if hey < -1482 -db inc -18 if hey != -1483 -giq inc -398 if wm < -1615 -xtz inc -724 if gus > -146 -um inc -761 if gus >= -137 -gi dec 423 if mxn <= -146 -xtz dec -632 if ms >= -1326 -gi dec 990 if i == 693 -xtz dec 292 if i == 699 -q inc 881 if xtz >= -143 -xdl dec -25 if a <= 175 -f dec -599 if iox >= -1036 -giq dec -502 if gus == -139 -xdl dec 235 if gus >= -139 -q inc 704 if wm <= -1610 -ms inc 693 if i == 699 -k inc 407 if ms != -627 -f dec 107 if iox <= -1029 -xtz inc -328 if w != -3502 -j dec -474 if xdl < 994 -gus dec 82 if fxx != -12 -db dec -913 if xtz >= -143 -iox dec -932 if gus != -230 -giq inc -74 if q > -316 -ms inc -711 if gi != 1039 -w dec -29 if q >= -315 -um inc -851 if xtz == -141 -f inc -816 if ms <= -1348 -hey inc 813 if lp > 1468 -sd dec 483 if icg != 48 -w dec -199 if db <= 2181 -q inc -846 if sd != -572 -db inc -134 if k <= 3732 -um dec -185 if mxn > -145 -rz inc 559 if a < 174 -cl inc 650 if f != -3190 -gi inc 785 if cl >= -343 -w inc -227 if lp >= 1468 -gus inc -437 if wm < -1608 -kt inc -301 if w < -3499 -k dec -873 if km < -1736 -xdl dec -262 if q < -1155 -f dec 325 if mxn >= -149 -wm inc 523 if km < -1736 -gus dec -643 if db <= 2053 -gus dec 998 if iox > -95 -icg inc 774 if q < -1160 -k inc 789 if a > 159 -fxx dec 447 if xtz <= -133 -m inc -730 if rz <= -1526 -mxn dec -825 if cl > -346 -xtz inc 846 if sd > -576 -mxn inc 128 if cl < -352 -cl dec 99 if xtz <= 704 -lp dec -537 if ms >= -1341 -giq dec 784 if w == -3501 -iox inc 410 if giq <= -437 -f dec 314 if iox <= 317 -kt inc 520 if a == 169 -wm inc -419 if km >= -1740 -icg dec 900 if fxx != -450 -hey dec 564 if hey <= -670 -um inc 653 if lp < 2016 -hey dec 835 if fxx <= -447 -giq dec 542 if giq == -433 -gus dec 320 if cl > -354 -icg inc 75 if i > 695 -iox inc -949 if j <= -649 -q inc 0 if ms == -1341 -um dec 180 if rz != -1538 -i inc 534 if rz >= -1536 -i inc -316 if fxx == -452 -rz dec 225 if icg <= 2 -gus inc -416 if km != -1727 -icg inc -325 if m >= -1150 -rz dec 892 if gus < -742 -k inc -832 if j > -657 -wm inc -10 if gus <= -752 -f dec 179 if rz < -2644 -q inc 817 if kt > -859 -fxx inc 501 if xtz < 712 -m inc 111 if kt < -862 -ms dec -896 if gus != -749 -kt dec -925 if kt >= -862 -fxx inc -713 if cl <= -355 -xdl dec -120 if a == 172 -a dec -757 if hey != -2073 -gus inc 127 if mxn != -12 -xdl inc -627 if f == -3995 -kt dec 832 if lp < 2004 -w dec 208 if kt > 61 -kt dec 378 if lp >= 1998 -cl dec -371 if xdl > 1249 -f dec 708 if i < 927 -db dec 602 if ms > -443 -cl dec 247 if f > -4707 -um dec -394 if gi != 1040 -j dec 190 if giq >= -440 -gi inc 560 if q == -347 -xdl inc -601 if gus >= -630 -k dec 934 if iox == -641 -m inc -672 if icg >= -334 -w dec 104 if xdl != 647 -lp dec 36 if icg >= -329 -mxn dec 768 if m >= -1821 -f dec 555 if k == 3625 -w dec 440 if q >= -353 -lp dec -83 if kt != -316 -hey dec -168 if db != 2042 -giq dec 460 if xtz == 708 -fxx dec 446 if icg <= -325 -icg dec -22 if xtz != 717 -ms dec 920 if j != -841 -hey inc 213 if db < 2053 -mxn dec 862 if w < -4150 -rz dec 873 if xdl <= 656 -gi inc -584 if lp > 2047 -kt inc -29 if um <= -385 -m inc -883 if xtz < 715 -j inc 850 if iox == -641 -xdl dec 738 if w > -4154 -icg dec -851 if kt <= -329 -db inc -437 if ms > -449 -kt inc 280 if xtz > 702 -iox dec 924 if giq <= -899 -m dec 453 if cl < -344 -fxx inc -543 if i > 914 -rz inc 402 if f > -5269 -iox dec -260 if giq >= -900 -km dec -971 if sd >= -578 -wm inc 193 if k == 3630 -xdl dec -416 if a != 932 -lp inc 213 if icg == 545 -um inc 864 if wm <= -1516 -lp dec 343 if fxx <= -943 -rz inc 657 if kt > -50 -kt dec -253 if xdl <= 328 -km inc 256 if mxn > -781 -hey inc 856 if k == 3625 -gus inc 266 if f < -5264 -rz dec -139 if m <= -3151 -hey dec -669 if db == 1603 -gi inc -452 if ms == -445 -kt inc 123 if mxn == -783 -f inc -656 if sd > -562 -m inc -479 if i > 915 -um inc -288 if sd == -571 -giq dec -68 if gi == 9 -fxx dec -867 if fxx != -940 -um inc 80 if m > -3636 -i dec 980 if j < 9 -lp inc -932 if km < -764 -cl inc 387 if mxn != -788 -wm dec -492 if km != -766 -km inc 571 if m > -3634 -kt inc 903 if q >= -340 -wm inc 852 if k < 3616 -um dec -210 if m < -3629 -j inc -136 if m < -3623 -j dec -575 if i != 908 -sd inc 762 if xdl == 325 -gi inc -933 if kt != 314 -giq inc 272 if fxx < -939 -um inc -279 if iox <= -386 -xtz dec 303 if f < -5258 -xtz dec 344 if iox != -378 -giq dec -384 if f < -5264 -f inc -698 if mxn <= -778 -rz inc -185 if q <= -342 -um dec 272 if db <= 1613 -rz inc -650 if q <= -347 -xtz dec -621 if q <= -340 -kt inc 497 if sd < 200 -gus dec -786 if km < -203 -um dec 584 if a != 926 -hey dec 467 if xdl <= 318 -ms inc -975 if j == 448 -rz inc 763 if w <= -4144 -cl dec 923 if i >= 915 -km inc -294 if fxx >= -942 -fxx dec 218 if ms != -1420 -q inc 671 if gus < -350 -xdl dec 652 if i >= 913 -xtz dec -657 if gus > -367 -km dec 316 if j != 457 -wm dec 664 if fxx <= -932 -iox dec 463 if gus != -359 -hey inc -254 if fxx <= -940 -cl inc -684 if q > 317 -rz dec -287 if xtz < 1348 -lp dec 315 if lp != 1340 -hey dec -685 if q >= 325 -kt dec -360 if icg <= 553 -a inc 834 if um >= -646 -m inc -91 if sd < 183 -a dec 37 if k != 3617 -a inc -306 if sd != 201 -k dec 822 if q <= 327 -iox inc -885 if iox >= -850 -kt inc -835 if rz == -2113 -cl dec -99 if a < 586 -cl dec 635 if w != -4141 -kt inc -938 if giq == -173 -sd dec 599 if iox != -1720 -ms dec -484 if j != 448 -wm inc 669 if fxx == -945 -iox inc -633 if sd <= -402 -i dec -774 if f >= -5963 -f inc -783 if um < -646 -km inc 6 if xtz > 1333 -gus inc -986 if a == 583 -iox inc -233 if um <= -651 -xtz dec -857 if w != -4149 -wm inc -791 if a < 584 -j dec -41 if cl <= -2111 -xdl inc 77 if rz > -2123 -xdl inc -983 if ms != -1416 -fxx dec 247 if sd == -408 -k inc -362 if k > 2804 -xdl inc 13 if iox >= -2595 -db inc 473 if um <= -654 -w inc 307 if w > -4152 -xdl dec -237 if a <= 584 -wm inc 366 if giq == -173 -j dec 111 if i != 917 -k dec 790 if w != -3848 -sd dec -841 if wm == -2595 -i inc -538 if xdl == -989 -f dec 583 if rz > -2114 -xtz inc -886 if kt <= -590 -ms inc 151 if mxn == -783 -q dec -585 if fxx == -1184 -j dec -102 if km == -799 -xdl dec 504 if sd == 433 -fxx inc -208 if db > 2078 -m dec 471 if q >= 323 -icg inc -296 if i <= 919 -rz dec -601 if mxn > -791 -gus dec -870 if gi > -925 -um dec -171 if gi >= -927 -f inc 969 if gi != -932 -j dec 78 if xdl <= -1481 -m dec 115 if lp != 1019 -km inc 911 if ms != -1267 -gi inc 798 if i <= 920 -iox dec -780 if km < 122 -cl dec 670 if xdl > -1492 -gus inc 231 if kt != -602 -giq dec 584 if k <= 2021 -j dec -142 if k != 2020 -a inc 905 if xdl == -1487 -giq inc -1 if k > 2012 -j inc -123 if sd != 433 -a dec -615 if ms >= -1270 -q inc 848 if ms == -1269 -kt dec -69 if w < -3838 -fxx dec -676 if i > 926 -iox dec 980 if gi > -131 -fxx dec -716 if giq != -758 -fxx dec 937 if sd > 433 -sd inc 414 if i != 914 -cl inc -625 if giq <= -757 -gus dec 306 if fxx != -1390 -q inc 228 if lp != 1010 -ms inc 340 if gus == -549 -cl inc -185 if xtz == 461 -m dec -550 if f == -6363 -fxx dec 73 if lp >= 1019 -ms inc 651 if w != -3842 -giq inc 155 if xtz > 450 -wm dec -41 if icg < 253 -wm inc -535 if k != 2006 -j dec 181 if a >= 2094 -cl inc -70 if km <= 114 -i dec -910 if db < 2085 -mxn dec -616 if giq != -610 -ms inc 688 if lp <= 1019 -kt inc 264 if f == -6357 -gi inc -200 if xdl >= -1496 -rz dec -610 if km < 121 -w dec 82 if wm < -3085 -giq dec 136 if um != -483 -rz inc 804 if km < 121 -i dec 197 if um < -475 -cl dec 656 if ms == -241 -m inc 656 if w <= -3921 -lp inc -497 if gus > -557 -xtz inc 47 if w > -3926 -hey dec -130 if km <= 112 -gus inc 800 if gus > -555 -icg dec 229 if wm == -3089 -kt dec -746 if gi != -333 -xdl dec -365 if m == -2896 -gi dec 286 if j > 430 -wm inc 858 if q > 1393 -mxn dec 440 if iox >= -2798 -sd dec 651 if hey < -282 -um inc 135 if kt <= 220 -hey dec -639 if ms != -251 -lp dec 558 if q != 1393 -kt dec -264 if kt != 217 -sd inc -523 if k >= 2006 -k dec 938 if w <= -3917 -mxn inc -120 if um == -350 -giq inc -223 if icg > 16 -m dec 171 if xtz < 504 -um dec 850 if xdl == -1122 -iox inc 955 if km >= 118 -gi dec -910 if icg == 20 -db inc -39 if xdl > -1116 -mxn dec 481 if xtz > 491 -um dec 766 if iox >= -2798 -sd inc -103 if um != -1967 -q inc -673 if q <= 1403 -hey dec -471 if xdl == -1122 -j inc -818 if sd <= 212 -fxx dec -749 if ms > -238 -w inc 407 if xdl >= -1123 -mxn dec 138 if xtz >= 507 -rz dec 257 if db != 2071 -xdl dec 116 if lp > -38 -mxn inc -162 if xtz <= 495 -gi dec 669 if i < 1633 -gi dec 187 if ms == -251 -mxn dec 893 if xdl != -1229 -k inc 616 if i <= 1633 -xtz dec 881 if a <= 2105 -gus inc 732 if i != 1627 -kt inc 749 if a == 2103 -f inc -289 if rz <= -346 -um inc 919 if f < -6644 -wm inc -646 if m != -3067 -hey inc 1 if a != 2108 -xdl dec 725 if ms <= -238 -j dec -789 if k != 1695 -hey inc 317 if w < -3515 -kt inc 965 if gi >= -379 -wm inc 137 if a != 2101 -sd dec -783 if hey <= 1160 -gus dec -349 if um <= -1046 -ms inc -843 if sd == 1004 -k inc -298 if f >= -6661 -gus dec -15 if gi <= -365 -gus dec -411 if wm <= -2092 -cl inc 25 if icg != 30 -km inc 634 if m == -3067 -kt dec 856 if gus < 1766 -xdl inc -808 if fxx <= -1461 -xdl dec -883 if rz >= -358 -gus dec -311 if j > 1214 -sd dec 349 if xdl == -1888 -mxn dec -309 if j <= 1225 -giq dec 181 if ms >= -1087 -rz dec -951 if iox >= -2788 -k dec -824 if lp != -42 -fxx dec -984 if km <= 746 -mxn dec 333 if gus <= 2067 -fxx dec 742 if db >= 2078 -kt inc -367 if mxn > -1793 -i dec -853 if lp < -27 -kt dec -491 if wm < -2085 -ms inc 233 if wm != -2097 -i inc 729 if rz != -363 -ms dec 246 if km < 737 -xtz dec 455 if cl > -4106 -icg inc -755 if kt <= 1206 -wm dec -828 if mxn <= -1798 -giq inc 397 if xdl != -1888 -mxn dec 861 if cl != -4101 -fxx dec 406 if f <= -6653 -icg dec -101 if rz == -355 -gus dec -147 if cl <= -4101 -cl dec 717 if q > 728 -db dec -276 if m < -3061 -k dec -3 if sd > 651 -lp dec -357 if xtz < -827 -f dec -380 if lp <= 322 -cl inc -740 if gi > -368 -sd inc 744 if fxx >= -1221 -iox inc 39 if mxn != -2661 -fxx inc -569 if ms < -841 -j dec 19 if gus == 2216 -sd inc 826 if f < -6267 -cl dec -377 if f != -6272 -fxx dec 318 if icg >= -638 -db dec 638 if xdl == -1883 -q dec -923 if um >= -1055 -a inc 22 if q < 1656 -rz inc 129 if sd <= 1484 -db dec 408 if kt == 1199 -q inc -782 if iox <= -2750 -w dec 232 if fxx >= -2119 -gi dec -887 if km >= 738 -hey dec 35 if icg < -624 -xdl inc -379 if um > -1052 -hey inc -596 if icg != -638 -hey dec -945 if um >= -1047 -xdl dec -202 if k > 2219 -rz dec 76 if f < -6269 -xdl inc 289 if q <= 876 -rz inc 308 if kt >= 1190 -a inc -190 if lp != 317 -kt inc -195 if db >= 1944 -f dec 526 if q < 878 -wm dec -305 if xdl > -1777 -xdl dec -99 if k != 2215 -fxx inc 953 if wm == -1789 -hey dec 625 if rz == -1 -mxn dec 319 if mxn < -2644 -m dec 611 if f == -6798 -fxx dec -83 if icg < -639 -gi dec 567 if cl > -4830 -ms inc -95 if mxn < -2966 -um inc 862 if gus != 2215 -hey dec -341 if icg == -634 -iox dec 829 if f <= -6801 -giq dec 376 if kt == 1012 -lp dec -990 if um < -183 -iox inc -868 if kt >= 999 -iox dec -670 if f <= -6796 -fxx inc 895 if gus < 2209 -k inc -916 if q <= 873 -rz dec 646 if w >= -3747 -kt inc -807 if j == 1203 -fxx dec 568 if gi >= -43 -giq dec -966 if q < 877 -rz inc 250 if giq < -174 -iox inc -19 if i == 3212 -f inc -404 if k <= 1304 -gi dec -481 if kt >= 195 -giq dec -323 if gi < 424 -lp inc 873 if km >= 752 -icg dec 953 if um <= -182 -q dec 246 if db != 1942 -rz inc -987 if lp > 1307 -hey inc -728 if xtz <= -837 -fxx dec 743 if xtz != -843 -km dec 393 if km <= 740 -rz inc 635 if icg < -1578 -k dec -136 if km <= 742 -gus inc 715 if giq >= -185 -lp dec 782 if km >= 741 -ms dec -140 if sd != 1479 -iox inc -992 if sd != 1488 -wm inc 8 if ms >= -802 -giq dec 134 if xtz <= -830 -mxn dec 877 if xtz > -832 -lp inc -260 if ms > -815 -xdl inc 170 if w > -3742 -q inc -674 if gi != 434 -giq inc -760 if wm <= -1788 -km dec -96 if hey != 1802 -j inc 662 if fxx >= -1904 -gus dec 305 if a <= 1943 -db inc 881 if icg > -1583 -um inc -137 if rz >= -96 -mxn dec -755 if lp == 269 -lp inc -220 if hey > 1799 -cl inc 652 if xdl >= -1678 -gus inc -473 if a >= 1935 -k dec 80 if i != 3216 -gus inc 138 if xtz != -831 -mxn inc 654 if giq >= -1075 -xtz inc -677 if um >= -323 -cl inc -557 if hey >= 1807 -m dec 488 if lp == 49 -k inc -214 if q != -49 -k inc -584 if cl != -4727 -icg inc -423 if ms == -806 -gi dec -323 if fxx >= -1909 -ms dec -61 if giq != -1062 -wm dec 259 if q < -45 -f inc -634 if gi == 753 -iox inc 985 if gi > 750 -km dec -821 if db < 1950 -f inc 105 if gi < 763 -j inc -36 if q <= -44 -ms inc -244 if giq < -1063 -i dec 423 if cl == -4727 -kt dec 77 if sd == 1481 -db inc -779 if gi == 753 -gi dec -525 if iox <= -2985 -f dec 378 if rz != -86 -mxn dec 479 if km < 1671 -f inc -812 if kt > 118 -db inc -121 if kt < 128 -w inc 957 if mxn == -2042 -db inc -97 if mxn != -2052 -km inc 521 if q < -46 -a dec -669 if i >= 2783 -icg inc 47 if km > 2176 -gi inc 459 if gi != 760 -mxn dec 810 if hey >= 1803 -ms inc -896 if xtz != -1522 -fxx inc 331 if cl == -4727 -hey dec 104 if sd < 1482 -f dec -684 if f < -8923 -xtz dec 893 if giq > -1080 -um dec -749 if db < 962 -rz inc 823 if sd <= 1484 -a inc 4 if w > -2793 -cl dec -559 if a > 2614 -iox dec 116 if db <= 956 -cl dec -384 if gus == 2291 -lp inc 522 if kt > 118 -icg dec -250 if km <= 2186 -j inc -144 if mxn > -2843 -kt dec -682 if ms > -1891 -gi inc -320 if sd < 1489 -iox dec -955 if kt != 802 -mxn dec 949 if lp > 570 -mxn dec -84 if wm > -2050 -xtz dec 762 if kt == 802 -wm dec -74 if um != 422 -m inc -948 if gi >= 889 -w inc 90 if w != -2792 -j dec -516 if fxx <= -1568 -cl inc -457 if k <= 1232 -ms dec -288 if w != -2792 -ms inc 57 if db >= 946 -a dec -481 if w >= -2800 -icg dec -210 if ms != -1827 -giq inc 323 if a != 3098 -ms inc -646 if iox <= -3090 -mxn dec -390 if lp > 565 -db dec 634 if hey >= 1701 -iox inc 357 if w >= -2799 -hey inc 434 if icg != -1503 -um dec 763 if xtz == -3168 -giq dec 742 if m != -5115 -giq inc -645 if db < 318 -f inc -832 if ms == -2474 -xtz dec 921 if w > -2799 -f dec -259 if xtz <= -4086 -mxn dec -689 if ms == -2468 -kt inc -725 if iox != -2732 -sd inc -586 if rz <= 730 -w dec 94 if xdl > -1682 -lp inc -793 if km > 2185 -cl inc -764 if j < 2348 -lp dec 656 if fxx != -1577 -f dec -892 if db > 319 -i inc -441 if k <= 1230 -db dec 935 if q == -49 -q dec -926 if xtz > -4094 -q inc 729 if fxx == -1572 -lp inc 115 if k != 1233 -j dec -252 if mxn == -3318 -w inc 695 if gi <= 891 -j dec -721 if gi < 899 -sd dec -132 if sd == 896 -cl inc 856 if icg == -1503 -giq inc -142 if k >= 1218 -iox inc -328 if db <= -617 -db inc -199 if wm >= -1981 -km dec -364 if j == 3066 -cl dec -659 if sd >= 891 -xtz inc -207 if giq == -1632 -cl inc 928 if i <= 2339 -giq inc -897 if km != 2544 -mxn inc -61 if xdl > -1679 -f inc 953 if lp >= 30 -f dec -450 if giq > -2535 -w dec -962 if kt >= 68 -gi inc 317 if km < 2556 -kt dec -271 if k >= 1231 -iox dec 238 if i <= 2352 -xtz inc -840 if ms <= -2467 -giq dec 905 if f >= -8097 -kt dec 484 if icg <= -1502 -lp dec 675 if km >= 2539 -ms inc 772 if j <= 3073 -ms dec 297 if q > 1604 -kt inc 465 if hey > 1701 -w inc 987 if kt > 50 -xtz dec 180 if q == 1606 -um dec -823 if gus != 2284 -hey inc -964 if um == 487 -kt inc 387 if cl > -4046 -cl dec -167 if gi == 1209 diff --git a/2017/d08/ex2/ex2.py b/2017/d08/ex2/ex2.py deleted file mode 100755 index ed45696..0000000 --- a/2017/d08/ex2/ex2.py +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env python - -import enum -import itertools -import operator -import sys -from collections import defaultdict -from typing import NamedTuple - - -class Operation(enum.StrEnum): - INC = "inc" - DEC = "dec" - - -class Comparator(enum.StrEnum): - GT = ">" - GE = ">=" - LT = "<" - LE = "<=" - EQ = "==" - NE = "!=" - - def __call__(self, lhs: int, rhs: int) -> bool: - return getattr(operator, self.name.lower())(lhs, rhs) - - -class Condition(NamedTuple): - target: str - comp: Comparator - value: int - - def eval(self, registers: dict[str, int]) -> bool: - return self.comp(registers[self.target], self.value) - - -class Instruction(NamedTuple): - target: str - op: Operation - amount: int - condition: Condition - - -def solve(input: str) -> int: - def parse_line(line: str) -> Instruction: - target, op, amount, _, comp_target, comp_op, comp_value = line.split() - return Instruction( - target, - Operation(op), - int(amount), - Condition(comp_target, Comparator(comp_op), int(comp_value)), - ) - - def parse(input: str) -> list[Instruction]: - return [parse_line(line) for line in input.splitlines()] - - program = parse(input) - regs: dict[str, int] = defaultdict(int) - max_reg = 0 - for instr in program: - if not instr.condition.eval(regs): - continue - regs[instr.target] += instr.amount * (1 if instr.op == Operation.INC else -1) - max_reg = max(itertools.chain(regs.values(), [max_reg])) - return max_reg - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d08/ex2/input b/2017/d08/ex2/input deleted file mode 100644 index e1d8dc5..0000000 --- a/2017/d08/ex2/input +++ /dev/null @@ -1,1000 +0,0 @@ -sd dec 441 if k != 0 -lp dec 419 if mxn >= 7 -w inc -592 if icg >= -9 -a dec -29 if q <= 9 -kt dec 486 if ms != 8 -kt inc -841 if kt > -488 -rz inc -592 if m <= 1 -xtz dec 780 if lp < 9 -iox dec 804 if icg != 6 -lp inc 360 if i == 9 -f dec -570 if gi >= 7 -um inc 87 if q != 4 -kt dec -242 if rz != -595 -j inc -154 if db != 0 -giq dec 728 if iox > -811 -a dec -9 if xtz > -781 -lp inc -261 if ms > 2 -w inc -816 if hey > -1 -mxn inc 680 if ms >= -9 -q inc -777 if w < -1400 -wm dec -353 if q == -774 -q inc 414 if hey == 0 -xdl inc 488 if kt != -1075 -gus dec -136 if fxx != -7 -f dec 852 if hey >= 10 -j inc 531 if ms <= -9 -km dec 231 if xdl >= 487 -fxx dec 579 if iox == -804 -km dec 23 if kt != -1076 -fxx inc -845 if xtz != -773 -mxn dec 335 if fxx != -1432 -q dec 184 if f == 0 -wm dec -330 if f == 0 -iox dec 677 if mxn != 339 -mxn inc -429 if hey < 1 -rz dec 101 if hey == 8 -k inc 17 if db == 0 -gus inc -328 if iox == -1481 -a inc 657 if rz <= -584 -wm dec -365 if rz < -590 -m inc -710 if w < -1399 -kt inc -246 if wm != 698 -w dec 976 if fxx >= -1431 -giq inc 319 if hey >= -5 -iox inc -563 if xdl < 495 -xdl dec -349 if f >= -9 -sd inc -296 if q >= -555 -xdl inc 406 if cl >= -2 -f inc 966 if hey >= -6 -lp dec -838 if iox > -2054 -k dec -674 if q < -542 -i inc -23 if k < 692 -mxn inc -221 if sd != -302 -mxn inc -830 if mxn > -309 -km inc -283 if db > -7 -icg inc 365 if xdl > 1234 -q inc -23 if m < -702 -wm dec -507 if rz < -582 -j inc -501 if gi != -10 -um inc 274 if a > 689 -db inc 814 if xdl != 1250 -fxx dec -172 if db != 822 -wm dec 581 if kt <= -1323 -gi dec -715 if kt >= -1339 -f inc -209 if i >= -31 -q inc 933 if fxx > -1246 -mxn dec -227 if gi > 713 -fxx dec -112 if xdl <= 1252 -hey dec -998 if xtz >= -781 -lp dec -743 if ms <= 4 -icg dec -581 if fxx > -1149 -gus inc 725 if k != 698 -icg dec 156 if kt != -1339 -gus dec 961 if i > -32 -giq dec -992 if kt <= -1327 -m inc -477 if xdl >= 1240 -db dec -258 if gus <= -424 -wm inc -72 if gi > 713 -i dec 923 if lp == 1581 -m inc -221 if iox == -2044 -j inc 410 if m < -1402 -kt inc 838 if a == 685 -i dec 528 if gi < 712 -iox dec -823 if i >= -952 -a dec -705 if icg > 799 -gi dec -538 if db > 1079 -xdl inc -507 if q > -571 -rz inc 37 if km > -546 -fxx dec -718 if ms <= -2 -xdl inc -742 if cl < 4 -q dec 591 if wm > 542 -a dec 100 if db != 1072 -fxx dec -392 if giq >= 579 -j inc 991 if i >= -942 -m inc 311 if sd != -296 -icg inc -286 if db != 1075 -m inc 906 if rz == -555 -um inc 150 if hey == 993 -rz inc -637 if fxx < -746 -ms dec 779 if f >= 751 -gus inc 928 if j != -100 -rz dec 769 if sd < -292 -xdl inc -556 if gus <= 505 -rz inc -94 if j < -82 -mxn dec -763 if cl == 0 -xdl dec -693 if gus <= 502 -db inc -879 if kt <= -1339 -w dec 651 if hey > 991 -um dec -898 if giq == 583 -xdl dec 501 if hey > 998 -wm dec 746 if lp < 1587 -iox inc 915 if um > 1251 -a inc 573 if q >= -1165 -j dec -459 if m <= -512 -km dec -601 if xdl >= 131 -km dec 801 if f >= 756 -ms inc 318 if j < -91 -hey dec -768 if i <= -945 -f inc -982 if xdl < 134 -i inc 210 if iox < -305 -icg inc -838 if xtz >= -784 -mxn dec 901 if f == -225 -m inc 601 if i <= -733 -iox inc -863 if cl >= -5 -ms dec -474 if db >= 1069 -xtz dec 708 if um >= 1253 -lp dec 0 if xdl < 130 -k inc -476 if sd <= -291 -um dec 475 if hey != 1756 -q inc 178 if k <= 215 -km dec 244 if a >= 1265 -j dec 485 if k < 209 -icg inc 429 if um >= 784 -ms inc -881 if kt > -1341 -cl inc -75 if iox < -1176 -icg dec -72 if gi == 715 -i inc 714 if lp >= 1572 -rz inc -881 if j >= -96 -ms dec -453 if i <= -29 -giq dec -500 if sd != -305 -sd dec -78 if lp != 1572 -a inc 313 if db == 1072 -w dec 97 if q == -978 -gus dec -203 if f != -225 -xdl dec -894 if j < -88 -q inc 71 if k != 213 -um dec -242 if wm > -207 -kt dec -997 if sd != -215 -cl dec 643 if lp != 1587 -hey inc -564 if fxx == -748 -ms dec 639 if m != 95 -ms dec 131 if w <= -3026 -xdl dec 241 if w != -3032 -mxn inc 404 if i == -28 -giq dec 111 if xdl >= 789 -wm inc 93 if j <= -88 -xdl inc 318 if um >= 1026 -gi dec -766 if a < 1587 -mxn inc 212 if w > -3040 -f dec -601 if giq == 1084 -m dec 135 if kt >= -334 -a dec -471 if rz >= -2940 -cl dec -379 if giq != 1080 -w inc -834 if db < 1077 -km inc -515 if f >= -226 -i inc 133 if a > 2043 -gus dec -368 if gi >= 1476 -db inc -629 if fxx > -758 -km inc -807 if a != 2052 -j dec -129 if cl > -267 -gi dec -443 if m <= -35 -kt dec -355 if sd != -218 -mxn inc -734 if xtz == -1488 -icg inc 468 if m == -34 -m inc 896 if iox <= -1168 -xdl inc -763 if j < 39 -db inc -51 if xdl >= 337 -sd dec 688 if icg >= 167 -w inc 307 if gi >= 1924 -ms inc 190 if xdl >= 331 -k inc 869 if fxx >= -750 -mxn inc -772 if ms >= -1771 -f inc -303 if q == -922 -kt dec 99 if ms < -1757 -j dec -733 if sd < -904 -wm inc -808 if gi <= 1933 -q dec -671 if i != 112 -cl inc -790 if xdl >= 330 -icg inc -617 if ms > -1774 -w inc 529 if xdl > 333 -w inc -413 if wm < -907 -db inc 780 if xdl > 330 -xtz inc -535 if um <= 1025 -mxn inc 415 if db > 1165 -xtz inc 170 if db != 1169 -k dec -365 if k <= 1091 -giq inc -695 if q < -233 -db inc -991 if a > 2057 -k dec 543 if fxx == -748 -kt inc 673 if hey <= 1209 -gi inc -23 if mxn <= -1917 -m inc -567 if sd > -916 -m dec -269 if wm == -912 -kt dec 601 if db != 1180 -km dec -781 if kt == -351 -rz inc -296 if wm != -912 -um inc 4 if gus != 874 -um inc -876 if q < -231 -gi dec -744 if xtz < -1320 -j inc -101 if q <= -236 -kt inc -959 if xtz == -1318 -icg dec 9 if m == 562 -kt inc -412 if gus > 867 -fxx dec 394 if gus > 867 -fxx dec 105 if xtz == -1318 -a dec -533 if giq != 396 -km dec -864 if um != 147 -mxn dec -240 if i != 114 -m inc -830 if km != -628 -iox inc 160 if mxn != -1690 -k inc 966 if j > 679 -xtz inc 482 if cl <= -1050 -f inc -430 if fxx < -1253 -sd inc 138 if sd > -915 -giq dec 736 if xtz == -836 -f dec 780 if ms >= -1767 -wm inc -362 if kt <= -1731 -um dec -195 if xtz >= -838 -um dec 888 if i >= 107 -i dec 754 if gus != 868 -hey inc -518 if kt <= -1726 -iox inc 843 if hey > 676 -ms dec -46 if a < 2587 -mxn inc 288 if gus >= 864 -gus inc -643 if mxn < -1393 -um inc 457 if rz >= -2936 -um dec -976 if xtz == -836 -m dec 783 if fxx > -1254 -gi inc -63 if m <= -1043 -lp dec -244 if cl > -1062 -sd inc 908 if km >= -637 -km inc -725 if kt <= -1731 -j dec -20 if k == 906 -wm dec -596 if kt >= -1740 -xtz dec 133 if km <= -1355 -db inc -792 if icg != -466 -db dec -851 if lp != 1835 -cl dec 707 if f > -1012 -iox dec 246 if iox >= -170 -um dec 719 if ms == -1720 -xtz dec -216 if icg != -464 -km dec 776 if w <= -3446 -j dec 388 if xdl != 339 -j dec 776 if kt == -1732 -mxn dec 615 if cl == -1761 -i inc 579 if gus < 226 -i inc -172 if xdl < 341 -ms inc 720 if lp < 1825 -ms dec -590 if hey < 690 -iox dec -781 if gus < 231 -mxn inc -145 if a >= 2577 -q inc -885 if f <= -1013 -xtz inc -148 if a != 2593 -km inc -586 if fxx < -1239 -um inc -988 if kt < -1724 -k dec -852 if xtz != -891 -j inc -365 if m != -1050 -gus inc -679 if cl != -1760 -um inc -342 if icg != -455 -hey inc -807 if mxn == -2157 -w dec 759 if w != -3439 -ms inc -328 if gus >= -455 -gi inc -179 if iox == 369 -ms inc 930 if giq != -345 -fxx inc 959 if giq == -338 -km dec -605 if db <= 1226 -um dec 954 if gus == -460 -f inc -325 if giq < -341 -cl dec -95 if cl <= -1752 -hey dec 825 if sd < 141 -db dec -608 if sd >= 139 -giq inc 141 if lp > 1821 -a dec 824 if km <= -2715 -k inc 982 if db < 1840 -k dec -6 if giq != -213 -xtz dec -59 if kt <= -1731 -fxx dec -589 if a == 1761 -m inc 874 if rz == -2936 -m dec 241 if xtz == -838 -gus dec 512 if w > -4208 -mxn inc 651 if gus == -973 -lp inc -553 if hey == -948 -giq inc 252 if lp > 1263 -km dec -360 if a == 1761 -giq inc -504 if a != 1770 -kt inc -815 if um <= -1146 -lp dec 343 if gi >= 1652 -w dec 6 if lp <= 937 -gus dec 806 if ms > -534 -q dec 262 if f > -1335 -rz dec -959 if sd <= 141 -w dec -958 if mxn == -2157 -gus inc 530 if xdl > 333 -lp dec -30 if hey > -949 -lp dec 345 if q != -509 -i inc 509 if km > -2363 -rz inc -576 if um == -1155 -km inc 622 if iox > 367 -k dec -833 if ms != -527 -um dec 586 if i == 1027 -q inc -724 if rz == -2553 -cl dec -372 if f <= -1330 -cl dec -944 if j > -442 -j dec 674 if hey != -958 -q inc -830 if j != -1135 -cl dec 594 if um < -1749 -gi dec -991 if q > -2066 -kt dec -528 if giq >= -465 -iox inc -291 if a > 1759 -q dec -395 if f != -1330 -um dec 244 if cl <= -1285 -a dec 961 if um < -1988 -iox inc -321 if w == -3253 -lp dec -307 if iox < -241 -m dec -188 if mxn == -2157 -um dec -481 if icg <= -450 -gi dec 303 if cl < -1294 -mxn dec -791 if wm != -684 -kt dec -368 if sd != 149 -mxn dec -783 if sd < 141 -gi dec 864 if m == 11 -gus dec -17 if w == -3253 -w dec 499 if giq > -464 -xtz inc 659 if q > -2067 -wm inc 572 if kt != -1654 -xtz dec -287 if xtz != -191 -sd inc 763 if kt <= -1658 -xdl inc 830 if gus == -1225 -icg inc 508 if km == -1737 -gi inc 756 if rz == -2560 -xtz inc 983 if km <= -1734 -w inc 717 if xtz > 1085 -q dec 52 if w < -3030 -xdl inc -373 if f <= -1321 -w dec -544 if icg > 56 -gus inc -120 if km > -1741 -mxn dec -16 if hey <= -947 -wm dec 591 if mxn != -576 -gus inc -355 if kt <= -1644 -xdl inc 898 if fxx <= -650 -f dec 71 if m != 11 -xtz dec 902 if fxx > -663 -kt dec -576 if db != 1831 -rz inc 465 if fxx < -650 -a dec 342 if fxx >= -666 -k inc 293 if cl != -1286 -iox dec 791 if db == 1839 -a dec 125 if kt != -1071 -gi dec 852 if xtz == 185 -f inc 982 if sd == 133 -mxn dec -426 if sd <= 146 -gus inc -100 if xdl <= 1696 -um inc 872 if xtz != 182 -db dec -10 if db < 1843 -q inc 209 if lp >= 920 -k inc -338 if hey >= -950 -m inc -601 if wm < -695 -w dec 725 if xdl >= 1694 -wm inc -913 if q >= -1901 -fxx inc 986 if sd <= 144 -a dec 329 if m == -590 -xtz inc 80 if q < -1893 -gus inc 234 if fxx == 328 -ms inc 110 if giq < -451 -gus dec -969 if sd != 134 -um dec 806 if ms <= -417 -gus dec -458 if icg < 53 -cl dec -272 if fxx > 326 -k inc -212 if sd != 143 -xtz dec 109 if fxx <= 324 -mxn dec 302 if m >= -599 -lp inc -240 if giq <= -451 -m dec -58 if wm != -1618 -xtz dec -178 if gus == -139 -giq inc -132 if xdl != 1694 -w inc -149 if a >= 962 -f inc -512 if lp <= 690 -lp dec -84 if sd < 147 -cl inc 657 if db <= 1851 -m inc -180 if hey == -948 -sd inc -711 if a < 974 -ms inc -905 if j != -1134 -f inc -852 if mxn >= -451 -lp inc 818 if i == 1027 -w dec -407 if wm <= -1610 -m dec -298 if gi > 926 -gi inc -17 if sd != -564 -ms inc 891 if kt != -1075 -xdl inc -498 if fxx != 337 -kt dec 153 if lp == 1575 -db inc -565 if f < -2690 -lp inc 812 if um <= -1438 -fxx inc 151 if um != -1429 -fxx dec 484 if km < -1732 -q inc 130 if f == -2690 -lp dec 926 if icg != 58 -giq dec -378 if k >= 3321 -cl dec 136 if ms == -1323 -xdl dec -889 if w != -3502 -hey dec 540 if hey == -948 -a dec 796 if xdl >= 1189 -xtz dec 197 if kt < -1066 -i dec 328 if db == 1284 -giq dec -697 if hey > -1482 -f inc -985 if icg != 51 -gi inc 128 if f > -3689 -j dec 638 if i != 699 -mxn inc 300 if icg < 55 -icg inc -846 if q <= -1900 -icg dec -845 if giq > -86 -cl dec 502 if hey < -1482 -db inc -18 if hey != -1483 -giq inc -398 if wm < -1615 -xtz inc -724 if gus > -146 -um inc -761 if gus >= -137 -gi dec 423 if mxn <= -146 -xtz dec -632 if ms >= -1326 -gi dec 990 if i == 693 -xtz dec 292 if i == 699 -q inc 881 if xtz >= -143 -xdl dec -25 if a <= 175 -f dec -599 if iox >= -1036 -giq dec -502 if gus == -139 -xdl dec 235 if gus >= -139 -q inc 704 if wm <= -1610 -ms inc 693 if i == 699 -k inc 407 if ms != -627 -f dec 107 if iox <= -1029 -xtz inc -328 if w != -3502 -j dec -474 if xdl < 994 -gus dec 82 if fxx != -12 -db dec -913 if xtz >= -143 -iox dec -932 if gus != -230 -giq inc -74 if q > -316 -ms inc -711 if gi != 1039 -w dec -29 if q >= -315 -um inc -851 if xtz == -141 -f inc -816 if ms <= -1348 -hey inc 813 if lp > 1468 -sd dec 483 if icg != 48 -w dec -199 if db <= 2181 -q inc -846 if sd != -572 -db inc -134 if k <= 3732 -um dec -185 if mxn > -145 -rz inc 559 if a < 174 -cl inc 650 if f != -3190 -gi inc 785 if cl >= -343 -w inc -227 if lp >= 1468 -gus inc -437 if wm < -1608 -kt inc -301 if w < -3499 -k dec -873 if km < -1736 -xdl dec -262 if q < -1155 -f dec 325 if mxn >= -149 -wm inc 523 if km < -1736 -gus dec -643 if db <= 2053 -gus dec 998 if iox > -95 -icg inc 774 if q < -1160 -k inc 789 if a > 159 -fxx dec 447 if xtz <= -133 -m inc -730 if rz <= -1526 -mxn dec -825 if cl > -346 -xtz inc 846 if sd > -576 -mxn inc 128 if cl < -352 -cl dec 99 if xtz <= 704 -lp dec -537 if ms >= -1341 -giq dec 784 if w == -3501 -iox inc 410 if giq <= -437 -f dec 314 if iox <= 317 -kt inc 520 if a == 169 -wm inc -419 if km >= -1740 -icg dec 900 if fxx != -450 -hey dec 564 if hey <= -670 -um inc 653 if lp < 2016 -hey dec 835 if fxx <= -447 -giq dec 542 if giq == -433 -gus dec 320 if cl > -354 -icg inc 75 if i > 695 -iox inc -949 if j <= -649 -q inc 0 if ms == -1341 -um dec 180 if rz != -1538 -i inc 534 if rz >= -1536 -i inc -316 if fxx == -452 -rz dec 225 if icg <= 2 -gus inc -416 if km != -1727 -icg inc -325 if m >= -1150 -rz dec 892 if gus < -742 -k inc -832 if j > -657 -wm inc -10 if gus <= -752 -f dec 179 if rz < -2644 -q inc 817 if kt > -859 -fxx inc 501 if xtz < 712 -m inc 111 if kt < -862 -ms dec -896 if gus != -749 -kt dec -925 if kt >= -862 -fxx inc -713 if cl <= -355 -xdl dec -120 if a == 172 -a dec -757 if hey != -2073 -gus inc 127 if mxn != -12 -xdl inc -627 if f == -3995 -kt dec 832 if lp < 2004 -w dec 208 if kt > 61 -kt dec 378 if lp >= 1998 -cl dec -371 if xdl > 1249 -f dec 708 if i < 927 -db dec 602 if ms > -443 -cl dec 247 if f > -4707 -um dec -394 if gi != 1040 -j dec 190 if giq >= -440 -gi inc 560 if q == -347 -xdl inc -601 if gus >= -630 -k dec 934 if iox == -641 -m inc -672 if icg >= -334 -w dec 104 if xdl != 647 -lp dec 36 if icg >= -329 -mxn dec 768 if m >= -1821 -f dec 555 if k == 3625 -w dec 440 if q >= -353 -lp dec -83 if kt != -316 -hey dec -168 if db != 2042 -giq dec 460 if xtz == 708 -fxx dec 446 if icg <= -325 -icg dec -22 if xtz != 717 -ms dec 920 if j != -841 -hey inc 213 if db < 2053 -mxn dec 862 if w < -4150 -rz dec 873 if xdl <= 656 -gi inc -584 if lp > 2047 -kt inc -29 if um <= -385 -m inc -883 if xtz < 715 -j inc 850 if iox == -641 -xdl dec 738 if w > -4154 -icg dec -851 if kt <= -329 -db inc -437 if ms > -449 -kt inc 280 if xtz > 702 -iox dec 924 if giq <= -899 -m dec 453 if cl < -344 -fxx inc -543 if i > 914 -rz inc 402 if f > -5269 -iox dec -260 if giq >= -900 -km dec -971 if sd >= -578 -wm inc 193 if k == 3630 -xdl dec -416 if a != 932 -lp inc 213 if icg == 545 -um inc 864 if wm <= -1516 -lp dec 343 if fxx <= -943 -rz inc 657 if kt > -50 -kt dec -253 if xdl <= 328 -km inc 256 if mxn > -781 -hey inc 856 if k == 3625 -gus inc 266 if f < -5264 -rz dec -139 if m <= -3151 -hey dec -669 if db == 1603 -gi inc -452 if ms == -445 -kt inc 123 if mxn == -783 -f inc -656 if sd > -562 -m inc -479 if i > 915 -um inc -288 if sd == -571 -giq dec -68 if gi == 9 -fxx dec -867 if fxx != -940 -um inc 80 if m > -3636 -i dec 980 if j < 9 -lp inc -932 if km < -764 -cl inc 387 if mxn != -788 -wm dec -492 if km != -766 -km inc 571 if m > -3634 -kt inc 903 if q >= -340 -wm inc 852 if k < 3616 -um dec -210 if m < -3629 -j inc -136 if m < -3623 -j dec -575 if i != 908 -sd inc 762 if xdl == 325 -gi inc -933 if kt != 314 -giq inc 272 if fxx < -939 -um inc -279 if iox <= -386 -xtz dec 303 if f < -5258 -xtz dec 344 if iox != -378 -giq dec -384 if f < -5264 -f inc -698 if mxn <= -778 -rz inc -185 if q <= -342 -um dec 272 if db <= 1613 -rz inc -650 if q <= -347 -xtz dec -621 if q <= -340 -kt inc 497 if sd < 200 -gus dec -786 if km < -203 -um dec 584 if a != 926 -hey dec 467 if xdl <= 318 -ms inc -975 if j == 448 -rz inc 763 if w <= -4144 -cl dec 923 if i >= 915 -km inc -294 if fxx >= -942 -fxx dec 218 if ms != -1420 -q inc 671 if gus < -350 -xdl dec 652 if i >= 913 -xtz dec -657 if gus > -367 -km dec 316 if j != 457 -wm dec 664 if fxx <= -932 -iox dec 463 if gus != -359 -hey inc -254 if fxx <= -940 -cl inc -684 if q > 317 -rz dec -287 if xtz < 1348 -lp dec 315 if lp != 1340 -hey dec -685 if q >= 325 -kt dec -360 if icg <= 553 -a inc 834 if um >= -646 -m inc -91 if sd < 183 -a dec 37 if k != 3617 -a inc -306 if sd != 201 -k dec 822 if q <= 327 -iox inc -885 if iox >= -850 -kt inc -835 if rz == -2113 -cl dec -99 if a < 586 -cl dec 635 if w != -4141 -kt inc -938 if giq == -173 -sd dec 599 if iox != -1720 -ms dec -484 if j != 448 -wm inc 669 if fxx == -945 -iox inc -633 if sd <= -402 -i dec -774 if f >= -5963 -f inc -783 if um < -646 -km inc 6 if xtz > 1333 -gus inc -986 if a == 583 -iox inc -233 if um <= -651 -xtz dec -857 if w != -4149 -wm inc -791 if a < 584 -j dec -41 if cl <= -2111 -xdl inc 77 if rz > -2123 -xdl inc -983 if ms != -1416 -fxx dec 247 if sd == -408 -k inc -362 if k > 2804 -xdl inc 13 if iox >= -2595 -db inc 473 if um <= -654 -w inc 307 if w > -4152 -xdl dec -237 if a <= 584 -wm inc 366 if giq == -173 -j dec 111 if i != 917 -k dec 790 if w != -3848 -sd dec -841 if wm == -2595 -i inc -538 if xdl == -989 -f dec 583 if rz > -2114 -xtz inc -886 if kt <= -590 -ms inc 151 if mxn == -783 -q dec -585 if fxx == -1184 -j dec -102 if km == -799 -xdl dec 504 if sd == 433 -fxx inc -208 if db > 2078 -m dec 471 if q >= 323 -icg inc -296 if i <= 919 -rz dec -601 if mxn > -791 -gus dec -870 if gi > -925 -um dec -171 if gi >= -927 -f inc 969 if gi != -932 -j dec 78 if xdl <= -1481 -m dec 115 if lp != 1019 -km inc 911 if ms != -1267 -gi inc 798 if i <= 920 -iox dec -780 if km < 122 -cl dec 670 if xdl > -1492 -gus inc 231 if kt != -602 -giq dec 584 if k <= 2021 -j dec -142 if k != 2020 -a inc 905 if xdl == -1487 -giq inc -1 if k > 2012 -j inc -123 if sd != 433 -a dec -615 if ms >= -1270 -q inc 848 if ms == -1269 -kt dec -69 if w < -3838 -fxx dec -676 if i > 926 -iox dec 980 if gi > -131 -fxx dec -716 if giq != -758 -fxx dec 937 if sd > 433 -sd inc 414 if i != 914 -cl inc -625 if giq <= -757 -gus dec 306 if fxx != -1390 -q inc 228 if lp != 1010 -ms inc 340 if gus == -549 -cl inc -185 if xtz == 461 -m dec -550 if f == -6363 -fxx dec 73 if lp >= 1019 -ms inc 651 if w != -3842 -giq inc 155 if xtz > 450 -wm dec -41 if icg < 253 -wm inc -535 if k != 2006 -j dec 181 if a >= 2094 -cl inc -70 if km <= 114 -i dec -910 if db < 2085 -mxn dec -616 if giq != -610 -ms inc 688 if lp <= 1019 -kt inc 264 if f == -6357 -gi inc -200 if xdl >= -1496 -rz dec -610 if km < 121 -w dec 82 if wm < -3085 -giq dec 136 if um != -483 -rz inc 804 if km < 121 -i dec 197 if um < -475 -cl dec 656 if ms == -241 -m inc 656 if w <= -3921 -lp inc -497 if gus > -557 -xtz inc 47 if w > -3926 -hey dec -130 if km <= 112 -gus inc 800 if gus > -555 -icg dec 229 if wm == -3089 -kt dec -746 if gi != -333 -xdl dec -365 if m == -2896 -gi dec 286 if j > 430 -wm inc 858 if q > 1393 -mxn dec 440 if iox >= -2798 -sd dec 651 if hey < -282 -um inc 135 if kt <= 220 -hey dec -639 if ms != -251 -lp dec 558 if q != 1393 -kt dec -264 if kt != 217 -sd inc -523 if k >= 2006 -k dec 938 if w <= -3917 -mxn inc -120 if um == -350 -giq inc -223 if icg > 16 -m dec 171 if xtz < 504 -um dec 850 if xdl == -1122 -iox inc 955 if km >= 118 -gi dec -910 if icg == 20 -db inc -39 if xdl > -1116 -mxn dec 481 if xtz > 491 -um dec 766 if iox >= -2798 -sd inc -103 if um != -1967 -q inc -673 if q <= 1403 -hey dec -471 if xdl == -1122 -j inc -818 if sd <= 212 -fxx dec -749 if ms > -238 -w inc 407 if xdl >= -1123 -mxn dec 138 if xtz >= 507 -rz dec 257 if db != 2071 -xdl dec 116 if lp > -38 -mxn inc -162 if xtz <= 495 -gi dec 669 if i < 1633 -gi dec 187 if ms == -251 -mxn dec 893 if xdl != -1229 -k inc 616 if i <= 1633 -xtz dec 881 if a <= 2105 -gus inc 732 if i != 1627 -kt inc 749 if a == 2103 -f inc -289 if rz <= -346 -um inc 919 if f < -6644 -wm inc -646 if m != -3067 -hey inc 1 if a != 2108 -xdl dec 725 if ms <= -238 -j dec -789 if k != 1695 -hey inc 317 if w < -3515 -kt inc 965 if gi >= -379 -wm inc 137 if a != 2101 -sd dec -783 if hey <= 1160 -gus dec -349 if um <= -1046 -ms inc -843 if sd == 1004 -k inc -298 if f >= -6661 -gus dec -15 if gi <= -365 -gus dec -411 if wm <= -2092 -cl inc 25 if icg != 30 -km inc 634 if m == -3067 -kt dec 856 if gus < 1766 -xdl inc -808 if fxx <= -1461 -xdl dec -883 if rz >= -358 -gus dec -311 if j > 1214 -sd dec 349 if xdl == -1888 -mxn dec -309 if j <= 1225 -giq dec 181 if ms >= -1087 -rz dec -951 if iox >= -2788 -k dec -824 if lp != -42 -fxx dec -984 if km <= 746 -mxn dec 333 if gus <= 2067 -fxx dec 742 if db >= 2078 -kt inc -367 if mxn > -1793 -i dec -853 if lp < -27 -kt dec -491 if wm < -2085 -ms inc 233 if wm != -2097 -i inc 729 if rz != -363 -ms dec 246 if km < 737 -xtz dec 455 if cl > -4106 -icg inc -755 if kt <= 1206 -wm dec -828 if mxn <= -1798 -giq inc 397 if xdl != -1888 -mxn dec 861 if cl != -4101 -fxx dec 406 if f <= -6653 -icg dec -101 if rz == -355 -gus dec -147 if cl <= -4101 -cl dec 717 if q > 728 -db dec -276 if m < -3061 -k dec -3 if sd > 651 -lp dec -357 if xtz < -827 -f dec -380 if lp <= 322 -cl inc -740 if gi > -368 -sd inc 744 if fxx >= -1221 -iox inc 39 if mxn != -2661 -fxx inc -569 if ms < -841 -j dec 19 if gus == 2216 -sd inc 826 if f < -6267 -cl dec -377 if f != -6272 -fxx dec 318 if icg >= -638 -db dec 638 if xdl == -1883 -q dec -923 if um >= -1055 -a inc 22 if q < 1656 -rz inc 129 if sd <= 1484 -db dec 408 if kt == 1199 -q inc -782 if iox <= -2750 -w dec 232 if fxx >= -2119 -gi dec -887 if km >= 738 -hey dec 35 if icg < -624 -xdl inc -379 if um > -1052 -hey inc -596 if icg != -638 -hey dec -945 if um >= -1047 -xdl dec -202 if k > 2219 -rz dec 76 if f < -6269 -xdl inc 289 if q <= 876 -rz inc 308 if kt >= 1190 -a inc -190 if lp != 317 -kt inc -195 if db >= 1944 -f dec 526 if q < 878 -wm dec -305 if xdl > -1777 -xdl dec -99 if k != 2215 -fxx inc 953 if wm == -1789 -hey dec 625 if rz == -1 -mxn dec 319 if mxn < -2644 -m dec 611 if f == -6798 -fxx dec -83 if icg < -639 -gi dec 567 if cl > -4830 -ms inc -95 if mxn < -2966 -um inc 862 if gus != 2215 -hey dec -341 if icg == -634 -iox dec 829 if f <= -6801 -giq dec 376 if kt == 1012 -lp dec -990 if um < -183 -iox inc -868 if kt >= 999 -iox dec -670 if f <= -6796 -fxx inc 895 if gus < 2209 -k inc -916 if q <= 873 -rz dec 646 if w >= -3747 -kt inc -807 if j == 1203 -fxx dec 568 if gi >= -43 -giq dec -966 if q < 877 -rz inc 250 if giq < -174 -iox inc -19 if i == 3212 -f inc -404 if k <= 1304 -gi dec -481 if kt >= 195 -giq dec -323 if gi < 424 -lp inc 873 if km >= 752 -icg dec 953 if um <= -182 -q dec 246 if db != 1942 -rz inc -987 if lp > 1307 -hey inc -728 if xtz <= -837 -fxx dec 743 if xtz != -843 -km dec 393 if km <= 740 -rz inc 635 if icg < -1578 -k dec -136 if km <= 742 -gus inc 715 if giq >= -185 -lp dec 782 if km >= 741 -ms dec -140 if sd != 1479 -iox inc -992 if sd != 1488 -wm inc 8 if ms >= -802 -giq dec 134 if xtz <= -830 -mxn dec 877 if xtz > -832 -lp inc -260 if ms > -815 -xdl inc 170 if w > -3742 -q inc -674 if gi != 434 -giq inc -760 if wm <= -1788 -km dec -96 if hey != 1802 -j inc 662 if fxx >= -1904 -gus dec 305 if a <= 1943 -db inc 881 if icg > -1583 -um inc -137 if rz >= -96 -mxn dec -755 if lp == 269 -lp inc -220 if hey > 1799 -cl inc 652 if xdl >= -1678 -gus inc -473 if a >= 1935 -k dec 80 if i != 3216 -gus inc 138 if xtz != -831 -mxn inc 654 if giq >= -1075 -xtz inc -677 if um >= -323 -cl inc -557 if hey >= 1807 -m dec 488 if lp == 49 -k inc -214 if q != -49 -k inc -584 if cl != -4727 -icg inc -423 if ms == -806 -gi dec -323 if fxx >= -1909 -ms dec -61 if giq != -1062 -wm dec 259 if q < -45 -f inc -634 if gi == 753 -iox inc 985 if gi > 750 -km dec -821 if db < 1950 -f inc 105 if gi < 763 -j inc -36 if q <= -44 -ms inc -244 if giq < -1063 -i dec 423 if cl == -4727 -kt dec 77 if sd == 1481 -db inc -779 if gi == 753 -gi dec -525 if iox <= -2985 -f dec 378 if rz != -86 -mxn dec 479 if km < 1671 -f inc -812 if kt > 118 -db inc -121 if kt < 128 -w inc 957 if mxn == -2042 -db inc -97 if mxn != -2052 -km inc 521 if q < -46 -a dec -669 if i >= 2783 -icg inc 47 if km > 2176 -gi inc 459 if gi != 760 -mxn dec 810 if hey >= 1803 -ms inc -896 if xtz != -1522 -fxx inc 331 if cl == -4727 -hey dec 104 if sd < 1482 -f dec -684 if f < -8923 -xtz dec 893 if giq > -1080 -um dec -749 if db < 962 -rz inc 823 if sd <= 1484 -a inc 4 if w > -2793 -cl dec -559 if a > 2614 -iox dec 116 if db <= 956 -cl dec -384 if gus == 2291 -lp inc 522 if kt > 118 -icg dec -250 if km <= 2186 -j inc -144 if mxn > -2843 -kt dec -682 if ms > -1891 -gi inc -320 if sd < 1489 -iox dec -955 if kt != 802 -mxn dec 949 if lp > 570 -mxn dec -84 if wm > -2050 -xtz dec 762 if kt == 802 -wm dec -74 if um != 422 -m inc -948 if gi >= 889 -w inc 90 if w != -2792 -j dec -516 if fxx <= -1568 -cl inc -457 if k <= 1232 -ms dec -288 if w != -2792 -ms inc 57 if db >= 946 -a dec -481 if w >= -2800 -icg dec -210 if ms != -1827 -giq inc 323 if a != 3098 -ms inc -646 if iox <= -3090 -mxn dec -390 if lp > 565 -db dec 634 if hey >= 1701 -iox inc 357 if w >= -2799 -hey inc 434 if icg != -1503 -um dec 763 if xtz == -3168 -giq dec 742 if m != -5115 -giq inc -645 if db < 318 -f inc -832 if ms == -2474 -xtz dec 921 if w > -2799 -f dec -259 if xtz <= -4086 -mxn dec -689 if ms == -2468 -kt inc -725 if iox != -2732 -sd inc -586 if rz <= 730 -w dec 94 if xdl > -1682 -lp inc -793 if km > 2185 -cl inc -764 if j < 2348 -lp dec 656 if fxx != -1577 -f dec -892 if db > 319 -i inc -441 if k <= 1230 -db dec 935 if q == -49 -q dec -926 if xtz > -4094 -q inc 729 if fxx == -1572 -lp inc 115 if k != 1233 -j dec -252 if mxn == -3318 -w inc 695 if gi <= 891 -j dec -721 if gi < 899 -sd dec -132 if sd == 896 -cl inc 856 if icg == -1503 -giq inc -142 if k >= 1218 -iox inc -328 if db <= -617 -db inc -199 if wm >= -1981 -km dec -364 if j == 3066 -cl dec -659 if sd >= 891 -xtz inc -207 if giq == -1632 -cl inc 928 if i <= 2339 -giq inc -897 if km != 2544 -mxn inc -61 if xdl > -1679 -f inc 953 if lp >= 30 -f dec -450 if giq > -2535 -w dec -962 if kt >= 68 -gi inc 317 if km < 2556 -kt dec -271 if k >= 1231 -iox dec 238 if i <= 2352 -xtz inc -840 if ms <= -2467 -giq dec 905 if f >= -8097 -kt dec 484 if icg <= -1502 -lp dec 675 if km >= 2539 -ms inc 772 if j <= 3073 -ms dec 297 if q > 1604 -kt inc 465 if hey > 1701 -w inc 987 if kt > 50 -xtz dec 180 if q == 1606 -um dec -823 if gus != 2284 -hey inc -964 if um == 487 -kt inc 387 if cl > -4046 -cl dec -167 if gi == 1209 diff --git a/2017/d09/ex1/ex1.py b/2017/d09/ex1/ex1.py deleted file mode 100755 index 3f71671..0000000 --- a/2017/d09/ex1/ex1.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env python - -import sys -from typing import NamedTuple - - -class Group(NamedTuple): - children: list["Group"] - - -def solve(input: str) -> int: - def parse_group(input: str) -> tuple[Group, str]: - garbage = False - cancel = False - stack: list[Group] = [] - for i, c in enumerate(input): - if cancel: - assert garbage # Sanity check - cancel = False - continue - if garbage: - if c == "!": - cancel = True - elif c == ">": - garbage = False - continue - if c == "<": - garbage = True - continue - if c == "{": - stack.append(Group([])) - continue - if c == "}": - top = stack.pop() - if stack: - stack[-1].children.append(top) - continue - return top, input[i + 1 :] - assert False # Sanity check - - def parse(input: str) -> Group: - group, input = parse_group(input) - assert not input # Sanity check - return group - - def compute_score(group: Group) -> int: - def helper(group: Group, depth: int) -> int: - return depth + sum(helper(child, depth + 1) for child in group.children) - - return helper(group, 1) - - groups = parse(input.strip()) - return compute_score(groups) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d09/ex1/input b/2017/d09/ex1/input deleted file mode 100644 index 686a0e1..0000000 --- a/2017/d09/ex1/input +++ /dev/null @@ -1 +0,0 @@ -{{{{{{},{}},{{!>},<>,{}},{},<}!>!>,<<,'u<,"a!!uu!>,<>,{}},{{}",,!!,u!>},o>},{{<{!!<,a''>,u!>eeu,e!>,}},{,<,,"i!>,,o!a!!!!!>'!>},!!!>},<>}}}},{{{,}},{,,<>},{{{!>,<>},,<{o}>},{,,,<'ei!>},,,{,},},<}u!{>,<{!!!><<>}}}},{{},{!}"}{,i!>,<'ue!,e>,{<'"!!!>oa,>}},{{},<"u!!'!!!!{au!>,,}}}},{{{{{,{<}{'iu>}}},{{},{{{}},{{{{},,<,uu!>"!!!>a!u>},<{a!!''!!!>,<{',{"!!!><'<{,>},{}},{!>,<<{!a!>>,,,},<>}}},{{<'a'>,{<}!>,'},}!>!'!>},<>,{<,{!>!!!!!>},e!>,,<"!a,!!!!!>!!e{<,!>,<>}}},{},{}}},{},{{{!!{!"!}!!eu{!>!!'">},}}},{{{{}},{{},!!!>},<},!!o!!!!!>!>a!!{>},{{},},,},<>}}},{{{{!{}!>},,},{ou!!!<"{{!!!>,,!!}">}},{{,o!>!>,},<>}},{!{!!'>,},,!>},!!!!!!>}}},{{{{,},<",e{>}},{}},{{},{<'',{{o!!!>>}}},{{<,{{,!u!!e!!}u!!!>ia!!!>u!!!>>}},{{},<},{,}ei,{eo>}}}},{{{,{},,!>,!>!!!!!>!>,}},{},{}},{{{{{!>,},<<{!!!>io!>},"!!!<}>},{,<,<}!>,{!!'{!>,<,!},{<{o!!"<,!!"!>,a!'a>,{,"!!!>,!>},o!>},!'"{>}}},{{{{""!!!!!!,}!>,!!!!!}!!ua!{!>",>},{"!>,,<,{!'">}}}},{}},{{{{,<>}},<{e<'"{!'!!!!!!!>!!!>>},{},{{<<,!>},,},}},{{},{{},{!!{,!>'!>{}'!u!!>,{{{,{{},},},,<{!!!>!>>}}},,<>}}},{{<">},{,!}!!o!>},}}},{{ao{}ae!!{!!>}}},{{},<}!>,},<>},{!>"'ao!>,a!,!!}aa!!!>,<<}<>,},},ua!!!!!>}u!>,<,!!!<>},{,<"},!!!>ue{!",!>,<>,{!>,<}"i!>!>,<>}}},{{{<,a!!!!!!!!!!'!,!>!!!>{!eu!!!>!e{>,},,<>}},{},,<}o!>},<{!!!>!!"e!>>}}},{{{{{{},eua{i>}},{,}i'{a}>}},{{{},{},<{ea!!!>}!>},<>}},{{<,>},{}}}}},{{{{<,!!}!>}}}!>,<<}>}},{{{{!!!!!!!>!>}!>,,}},{{<}>},{}},{{{<>},},},!!{!!!o!!!>{{!}"!">},{{<>},{}}}},{{{},{{<'!!,!>,>,{<"!!u!!,<,ou,!!{!!!>!!{!ua{,{!!>}}},{{{,,},!!{{!!}"!!{e!>,,<'o>}},{}}}}},{{auu>}},{{{},{{!>,o!!u!>},!!!>},},}}},{{},},<'a!>!!!>>}}},{{{{{},!<"!>!>}>}},{{{},}},{"}!>},,o!!!!!>u{!!,!!">}},{{<>},{{}"a!>,<>,{{{},{<'!!!>!!"!i!<>}}}},{,!i'!!'!!!>},},<{e{>,!,!>,},<'!>},}},{,{}}}}}},{{{{},<>},{}},{{{<}!<"a!a!!!u!>,}!>,<{i{a<>},{{{{},},<,>,{},e}}>,,<'>}}},{{<}!!o!!o!!>eo!!"!!!>,<>}}}},{<{!>},}},{<,,u}!!'!>!'<'ou!""a>},{<"!!!!>o!>},}},{<}!!!!!!{e"}oi!!>,{!!u>}}},{{,i!>,<,"!!},<,!>>,<>}},{{{{},{{{{{<,"'{!>,e!i!!!>,!>"}i!!!>!>},,<<,>}}},{{<"!!'!!{u"!>},}!>i!!!>!>,<,>,{>}}},{},{{},},{}}},{<!>uo!!{'!>,<<>,{{,<'e>},{}}}}},{{{,},},},},<>},<}!>e}},{{!"!>!!>}}},{{{{<}oia!!!>"o>},{<}{,}o!!,e!,},,,<<'!!!>e!!o,e!>!!i!!!>!!!>},}}},{{,},{{{,},}}}}},{{{{{},eii!!!>!>},<,>}}},{{{},{{'!!},>}},{{{{<}>,<<"u{eo<>}}},{{{},{{,<{!>!!!!"!>,},!>,<>},{{<{{!!<"u!>,},,!!},},<>},{<'u!>>}},{{!!{!!!>!>},}}},{{<,!u"!!!!!!eu}!!>},{}}},{{{<>}},{,<"!!>,{<>}},{{},<'!!!!",!u,,>}}},{{},,,"u!i,<>},{!!!>u!!!>uu!!i!>,<}}}},{{},},<>},{{},},},<<,o>}}}},{{{,<"!!!>a!>,<'!>,,{,,>,},"'a!>,<>}},{}},{{{'!!!!",!!!!!!'{o!>},},<<>},{{{}},{!>>,{{,,>},{}}},{}},{},<"!>e{!>},,,<,,>,{}}},{{{{,},}},{<},}},{{{!i{{!e"e,!!'i!!!>,,<>,{}},{!>},<'{ue!!,!!}}!!!!!>{!{>,{}},{<'{!}!>{i!>},<},{'eo>}},{{},{{},<}!ae!>!>,<{i!!!>,},{},o!!!>,<>}}}}},{{{{{},<,>},{}},{{{!!!>!!i{!>},oui!,>,{}},{{{{{}}}}},{}}},{{{{{}},},},,<}!>},!>},,<>},{},,<>}},<,!>!>,},<"}"!!!>!!!>,!>},,}},{{!!{u'{,!''e}!!}o{}!>},<>},{{}}}}},{}}},{{{{'<,!>,<>}},{{a>},{{,ii,!>!>},<"o!!{!!!!!>,!>,}}}},{{{<'"'!>},},>,,<,!ao,!>,<}i!!!>},}!!o'!!!>!!!>>},{{{},},}},>},{{},e!>},u!>},<}!>"!!!!!!!!i!>,,!!!>'e!>!>},<,u"{<>}}},{{{<}!!!>},},<}!>},},!>},<>,{},!>,},}},{{<'i!>!i!>},},!>!!io!>},!>e>,{>}},},},},{}},{{},{{}},{{u!o<"!>a!!!>!>},,{{},{<,!!a!}"a!!}}}},{{{},{{,},,}},{{{},,<}!>},},}},{{{<,},<{!e!'>},<'u{u!!,>}},{{{},<},<{>},"{!>},,uu!!o,>},<"!>,{!>,}},{{{{},{<{>}},{},{,<,u!>},}},{{{<>},{{<}'},<,a!>,<>},,!!"!!i!>},}},{{}},{}},{,{<}{{i{a!i'!i!!!>!!eau,!!<>}}}},{{!>!!',{{},!>!>},},{>}}}},{{{{{{<<''!!}e<!>},},<>},{,<>}},{{{},<'!!!>ae>},<,,,i!!,'!!!!e!!o,}}u!!u!!!!e,e!>>},{}},{{>},{{},<}i>}}}}},{{{,}},{{}}},{}},{{{{,<<}oa<>},{}},{{<}{,},eo"!!!>,,!>,},{},<,!!!>"i!!a{!>},}ii>,<{o>}},{{a!!'!>,}e!>},},a>}},{{{},},,!"o,!!!}!!u>},{{{<>}}}},{{{>}},{},{u,"!>},<>}}}},{}}},{{{},{},<{!>!!!!i!!!>!>},},},{}!>},>}},{{},{}},{ie'i{!!!>ei},<{i,},<>}},{{{{,<>}},{,},<"!!!o!!{!!!>!>,<>}},{,,{,<"!>,<{!!!>o!!u<",!!!>!>,<,"!!e!!,>}},{{},{}}}}},{{{{{,,<,oau!>,,,,!!u>},{{},{!!!>u!>},>},},{{{{,>},{}},<">},{{<'<>}},{{<<"!>,,'!>a}!!!>!!<>},}!!i!>o{>}}},{{},},,<>,,"{e!!!>,<'>},{{{{{o}>},{{<''io{>}}},{}},{}}},{{{},{,},<>}},{{},,{<{<{!!{i!>,,},<>,{}}},{},!'!>},,},}},{<},<"a!>"!!{<"!!!>}e!>,ea>}}},{{},<,{au!!!>,{o!!!>!>},!o>},{<,!!e!a!!o'!!o!!a!>!!!>>}}},{{{!!!!o}},{{},{{{}},!!!>!>!!!>{o,u>}},{{!!>}}},{{{<>,{o!>!>},,!!},!>},!!!>>}},{<{oo>,{}}},{{{!!!>},<>},{{},<"'a!e!!o!>},<{!>{>},{!!!>!>,<>}}},{{{<}",!!>}}},{},{uae!!i,!!!>!>},,<>,{}}}},{{{{}},{{,!>,,}},{{},{}}},{{"}{!!,}!!!!i'e>}},{{},{{{a!!a!>},<"{o!>},,{i<}!ia<{!!}!o!!!>,,>}},{iu!>{,{!'>}},{<}!>,<<,!!ia!!!uo!!>},{{{<},<'!>!>,!!!!}o!!!i!!!!!!o<>},{,<}>}},{}}},{{{{{,},},,},},{},{}},{<'!!!>!u{!!!>,!>,!!!>},},<''"!u!>},<<>,!>!!!>!!uoa,ou>},{}}}},{{{{},{{},{{},},<'!!!>au'>}}}},{{{{}},{,,!>,,<,!!iao>},{}},{{{},}},{{,<,!!i!u!>,}!!,<>,{{,>}}}},{{{<>,{}},{{{<},u!>},!>},>,{}}}}},{{},{{{{!>!!!!!>">},},{{<{eo}!!!!!>},,},!{!!o!>},,,,>}},{}},{<<{aii,o}o,<""o'}u>}}},{{{{,},},},,}!!'"{!'a!!!>>},{{{{<}"}!>,<'!>>}},,'!>,<',u,u">},{}}},{{{'!!,u,!>u!",e"!>,>}},{}},{{}}}}},{{},{}},{{{<'!!{!>!>},ii!'"!!!>>}}}}}},{{{,,<,i>},{{{<{{,!>},},<>},},<!!i,"!>a!"!!!>!>!!!>}!!!>!>>}},{{<{'"a"'io,i{!!}{!!!>,u!!"i>},{<{!!!>!>,<}{u!>!>},!!!e<>,{}}}}},{{{!>},<"oei}u'{!>,,<<>,,},<>},{,}{!>,<}!!!>>,{,<>}}},{{{{<{!'!>},,>},{{<,!>,<'!!!>,<"o!!o'e'"oieui>},{{{}}}}},{,"'}aa>}},{{},{}}},{{{},,'!<}!>},<{!!!>e}u}>}},{<{,''!>,<,},>,{}},{}},{{,<,,}!!!!a>}}},{{{{},{,<}!!,,},{i!a!>>,ua">}},{{{<>},'!!,!!!>,},{{}}i,<"}o!>u!!o,!{i!>,<>}},{{<}'!!>,{}},{{},{{},,!>},<",a!!!>ue!>,},{>}}},{}}},{{{{<,!>},<'}e!>,,<{{!!!>>,u'}!>},,au>},{!>},<"!!!>,!><"'!>,<<},<"!>,<>,{}}},{{!"{,i"!i!>,<,!>},<>,{,!>},},}},{{{,},<<>,{<{,!!!u}}},{{{},{}},{{!!!!!>!!!>u>},<"!!i!!uia>},{{<{i}!u'}!>,,<,">,{}},{{,<'a!!i}!!!!!,>}},{{,o!>!!}!!!!',>,{,<>,<>}},{{{},,},{<}!>,<}u!>{o{!i>,{{}}}},{{{<{!a}>},{{<"}o!>}"!o,,!>,},,{<"!>},<"}}!>!>},},<>}}}},{},{>,{}}},{{{<,ee!>!>,,{}}},{}}},{{},{{{<"'a,>}},{<>}}}}}},{}}},{{<'!>},},<,}'>},{},,},,,{,<{'}!!!>i{!!!>!>},}}},{}},{{{{<>}}},{{},{<'!"!!!>!!!>e,<>}},{{}}}},{{{{,<"'>},{{<<>}}},{{{<{{!!!!!>!!e!!{!>,<}!>},<"e,<,!>,!!!!!>,<,>},<>},{{{}},{{{,,<}}!e!!!>,}},{}},{{}}}}},{{{{},{{<}!>!!'!!'!!!}!>},}}}},{{<,!!'!>'i!<>}}},{{{<"}e!!!{!>,,},},<'!!!>>}}},{{{}}}},{{{<}a},o!>},<"!>},<"!!}u!!"!!!!>},{,!!"e',',<},{{!!!'!>}>},{<>},{{!>},},{{<i!!!>a!u}!!a>}}}}},{{{{},>,<',!!u},},{{},},{<"!>aiu>,},"{!!!>{>}},{{{},{}}}},{{{,<<,e!u!i!>!>},},},{{{>},{!!!a!,!!!>i!!!>!>!!!!{aa!!'>},{{}},{},!!!>,},<}!>,,{u!>,<'e!!!>i!>!!!!!{!!!!!>!!!!<>}}}}},{{{{<>}},},{>,<''!!!!e!>,<<<,>},{{{{<,!>,i}>},{{}}}}}},{{{},},!>u,!!!>,},<>},{{<'!!,!>,,,!>a!>},}}},{},{{},<!>},e}>}},{{<"ou!>!!!>eae>,{{},{}}},{{,<"!"!!,{{<>}}},{!''iuu"!!!>,>}},{{}}}},{{,<,a!!!>a}o{i{">,!!o!>},<'{ei!!!!!!a!>},},<>},{,"},,},,{<,!!!>!o"}>}}}}}}},{{},{{{}},{{{},<"}!!{i!i!>,!>,,{{}}},{<},},},}},{{},{{},},}}}},{{<>}}},{{{{<{!>oa!!u!>!>!!u>},},a}'!!!>u!!e!o!!!!o!>},<>}},{{{{},{{<,o"i!!o!!!>!!!!'o!{!>,,},},<,i!!!>!>,<,!!<"!!!>ei!!!!!>e>}},{{{}}}}},{{{{,},>}},{}},{{{<"'!>},,},>,{{},},",eoa!!!>},,<''!!!>>}}},{{{{<"!!'"!{!!!>"{!>},}},{{!}ei}!e}!!!!}{a!!!>>}},{{},},},<,!>},<"}!>u!!!>o<>},{{}}}},{{{<<},{{,e>,},,,!>},{!!!>!{,>}}},{{{<!!!>u>,{<,<{<>}}},{{},{<{,}!!!>!!",<>}},{},''"!!i!>!>{!!{ia!!e!eu!!o>,{!!!>i>}}},{{},},}}}},{{{{{{},>},{,<>,{},}},{!>u!e!"o!ui},!!>,{<}'{!!,!!!!ei!>!>},}}},{{{},{}},{<"!o,"e}o!"ue!>,<}},{,{}}},{{e!!!>,!!'>,{!!'!!!>},<,ae,{!>!!!>ee!!o!!!>uo">}},{,},{{},<{"!>oeuo'a!!}!>},<">}}}}},{{{,,{!>!!,}'',!>a!>,<'!!!>>,{}!>},<{!>a!!o}!>}{!>},ao!>>}},{{{<'!!!,<,u!!!>},,{}}},{{<u}!!{e!"a!!!>},<>},{<}>}}},{}},{{{{},{,}}}},{{{}},{{}},{{{},{<,"!>,!!'"uu!o!>,<">}},,},<',!>!>},}}},{{{<,}>},{}}},{{{},{>,{}}},{}}}},{{{},,!!'e!!!>u!e!!!!u!!!!{!!!>},<{!>,},{{{<','o!!!'<,,u!>,},{{},<"i!>,!!"{u!!!>i!<>},!>i!!"a!!i!!!!!!!>"o!>,<>}},{,},e!>,{!{!!,>}},{{,<'!>},>},{{{!!!>,},},,{'!>,>}},{},}}},{{}}}},{{{{{{{{},{<u!!e}!>e!,!!!!!>o{,>}},{<{i''!!!>",ae<'!>>,{<'!'e{>}}},{},,<{!>{!i,e!!u!a<>}},{{{{!!!!!>",i!!!!!!!>,,a!>},},<>}}}},{}},{{{>,<'u!!!!o!!!,!!!!>},{{e!>},!!{{,,!>>},{<{!>!{{u!!}}!!!>!>,}},{,u!!!>'i<>,<"i},}}},{{{{}},{},{{{},}a!>,,},<,!!{>},}},{{{{},"{!>i>},{!>},io!!!!!>e>}},{{!!{{u!>!!e!"{'!!!!>,{<{!>e}u>}}},{{},{{<'!"}>},},}},{},!>'!>,},<{<{>,<>}},{{{{<{'eao>}},{{{},{{{},{{{{},{<'!!!>},!'>}},<"u{>},{{},{<"o,!'>}}}},{{!'!!,>}}}},!>}i!!"!>,<}e{>}},{{{{},!!u},,!>},,<},{,,<"!!!>},<{!!!>!i!!!>},<>}},{{,<<{!!'!>,,<,!!i"!>,}}},{{{<'<"!!!>},>,{}}},{{},<,!!{i>},{}}}},{{{eoo{{{!!!!"!>!>a!<>},<}!!!>!>{!>o!!!>a}"'>}},{{{{<"'}!>},>}}},{{{},{{!!",a!!'!>u!!!>>},<,!>,>},{{<}e!>,,}!!!!!>!!!>,i!!!>,,oo>},{{},}!!"!>,>}}},{{{},!>!!!!oi!!,>,{{,}}}},{,e!u!!!!!>!!!>!!>,<""e!>,!!!>e'!!!!!>,{!!!!!>,">},{},},,{}}},{{{{<>}},{{}!o"!!,e!!!>!>{!>,<}a<>},{{},{}}},{}},{{{},<{'},"<>,{{>}},{{{{<}<}i!>!>},<,"{a">}}},{},{{<}!>!!!>},},{}a!>},,!!!>i!!,!!>,<"o>}}},{{{<,}}ae"{!!!>{!""!!i!>,<{u!>},},<>}}},{{{{<{!>!>},,<}i!>,<,!>},}!>},{>}},a''!!!>a!,ue>}},{{{{<>},{,,<,}!!{!>},<,u!!!!!>o}!!ea>}},{,<!!!{",ia!!!!!>},<,>}},{,!>},},},}},{{!>o!!!>,>},{}}}}},{{{,!>},,e'!!u!!"!!!!!>uo!!!>!},{<}{!e'"a{>}}},{{{}}}}},{{{{,e>}},{{}}},{{{},}},{{},},},<<}''o!!au!>},<{!>!!>}},{oo'!!!!!>!>},,}}},{{{{},!!',<>,{a'u!'!!!>},<>}},{},{<}!i}i{}!>,<,o!>!!u,!!!>,<"a>}},{{{}},{{}}}},{},{},{{{{}},{}},{,{<{>}},{{<',!a!!}!!'i>}}}},{{{,!!!!!>"!>!!'{,a!!,!>!>>},<}!e!>},{,<},{{{!>,,,a>},{{{!!i!!"!!>},{}}}},{{<<{'!>},i'a!>},},<>}}},{{{},{}},{},,,"{>,{},},!!}>}}}}},{{{e>,{<'!>,},,<'!u{>}}},{{{{},<',<,{}},{{!>!!}ii>},{o!!!'!!{},!!!u!!'>}},{{},{{{{{{}}}},{<{!u!i'!!}!!!>!>!!e>}},{}},{},{{{!!!!!>!>},!!!>a}ii<<,u!!'!>,<>},{{<'"'ua!>},<,!a>},<{!a"!,},},},{{},<'eu!!}},!!!>,}}},{{}}}}},{{{{>},},!o!!!>>},{{},{}},{{{{,!!oi!>"!>,<{!!!>},>}},{{<"!!{!'>}}},{{{}},,!!!>!>,<'o!>>},{<"{u{{}<},},}}},{{},{{}}},{{{{}}},{{<!!!!!>{a!>},<}!!!{!>'!>,<>},{u!,<"!>},,,{{},<,!}>}},{{i!!!>!>},,,,},}}}},{{{,<'{,}{{o}!>>,,a!!!>o{"!>,<"'>},{{!>,<>},{{<>}}},{{},{,{},!!}{!a!!uo>}}}},{{},{{,{{<">},{iu}'>}}},{<}!>},},<'"">}},{{!>!>},<}!<>},<<}!!!>!!,"!!!!!!>}},{}}},{{},{{<,"!>,,<}"'}!>{!!!>oa!,auo!>,!>,<>},{{{i'">,!",!>},},{{{{},{{<,!>,,!!!>!>,},,!!{oo>},{{{,{{},<,e!>,<,!!!!o},>,{}}}},{{},}},{{}}}}}},{o!!>}},{{,{{",>}}},{,{},<>}},{},}}},{}}},{{{{{oou<>,{}},},},,"!!!>>},{<{{,,<'>}},{},{{{{}},{<<}!>,!"!i!e'}}},{{,},!a""!>,<>},},{},!>!!!!!>!>},!>},<',<<>}}},{{{},{{},ueo>},,<,!}>},{},!>,!>},<{>,{{<e<",!"}}}}},{{{{<'!>,},{,}<""i!!">},{{,<"'!e'!>},},{{{<{!!!>""e'}!aa!>,<,'!>{},<>}}}}},{}},{{{{},{{<>,>},{{<'e!>},!!u'!>!>'!!!>,<{oi>},{<{uee!!!!!!!>,>}},{{!!!>o,<<,'!!!>,<}>}}},{{}}},{{{}},{{},},<{!!>}},{{{},!>,},<'>,{{<>},{{ea!>,!!>,'<,,!>,<{>}}}},{{{{}ee>}},{{oa!!>},{},>,{,,,,,}}}}}},{{{{{},{<'o>}},{{}},{{{<}!>},,,e!>,<>},{}},{<'!!!'!!"!!}o!}!>},,!!!!!>'i!>},},<{>,{}}}},{{{{{{}},{},,,,,{},u!!!>!!,'i}!!!>"!!{i>}}},{{{{<"u!>},,}},{>}},{}},{{{{{{,<,!}",oi!>,<>},{<!u{oo!!!!"!!!>!<>}}},{,,},,<{,,ia>}},{{,{<'!>,!!!!a>,}},{{>},{{},{{,,'!>o>}}}}}},{{{},{}},{{}},{{a"{!>},,!>!>!!i!"i}!{u!>,<{>}}}},{{{},,},,<},{{<},{>}}},{"!!e>},{,{{}}}},{{{<'{!!oa!!!>!!!>,,<,i,!!u,>,{}},{}},{{{{{}}}},{{{<<},!>u!>},!>>},{,<'!">}},{},,,<"!!!>!,},>},{{,,<"!>,!o!!,!>,,,{i"ui<{>}}},{{,"u>},{},i!!!!!>},,{}}}},{{},{}}},{{{{}},{{{<>}},{}},{{{<>},>},{},,<'!,}!">}}}}}}},{{{{,},},<,!!u<{e!!!>"ui>},{,i!!!>">,{{!!'}e<>},{}}}},{}},{!>,o>,e>},{},<,{i!>>,{<'!!"!"e!!!!u}e!>},}}}},{{},{},},}}}},{{{<'!>}!>,,<}!>},},,{<{"!>oe,!!,<'>}},{{{{},{{<{i<,{!!i'>},{},,},!!!!>}}},{},{{{{},ue}{'u!>!>,<>}}}}},{',''!!u<>,{}}},{{<},{,{!>{!!!>}!>,<,<>}}}},{{},{<'>,{,,!>,},}},{{{},},{{{<,{!>,<uaoa'>},{{i!>,<{i!>},>}}},{}}},{{},i',u!>},},},{>}}},{{{,},<{i!>,<',!>,<"!>!}!!u"},{},{}},{{{{,{<{!!!!e!>e>}}}},{{{},<",!>,},e!!!>!!e>},{{<>,,{{'!!!>ee!>,},!">}},{{<,!>,<>,<"!!!>},<},!!!>a'!}u!!ii>},{<}!!o!>!>,,<">,}},{{,<,,o!i!!!!!>'!!!>a>}}}},{{{}},{{{{},},<,},{<'oi!!a}!>,},,<,>}}},{{},au!!!!!!'}},{{},<'!>,!!<>},}},{{{{{<{!>,,<}aa{{">,{},},<>}}},{}}}},{{{{uuu,>}}}}},{{{<''!>!!!>!>,!}ee>,,{!!!>oua!>!i!>,<,!>,<{>},{{i">}},{<},<{!!"i!>,<{>,o"u>}},{{{},<"!!!>!!!>{!>'a!,>},{},,}},{<'oau!!>}}}}}},{{{{{{",!>,,<>}},{{{!!e"!>u!>,,,}},{,<}!i!!!!e!!,u!!e>}},{{{e!!"o!>},}},{{{{{{},,}}},{},{{{,>},{}}}},{}},{{},!!!>!!!>'i{a!>>}}},{{<!!!!{!!}a!a!>},},{a{"'""!!u}!>,}}}}},{,},{{}}},{{{o},{,{}},{}},{{,'}}e!!!>,<"io!iu>}},{{},i!!iu>}}},{{{,!!!>"e>}},{{}},{{,{,},<'a',u!>!>,!>},<'o},>}}}}}}} diff --git a/2017/d09/ex2/ex2.py b/2017/d09/ex2/ex2.py deleted file mode 100755 index 60b5a6f..0000000 --- a/2017/d09/ex2/ex2.py +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env python - -import sys -from typing import NamedTuple - - -class Group(NamedTuple): - children: list["Group"] - - -def solve(input: str) -> int: - def parse_group(input: str) -> tuple[Group, str, int]: - garbage = False - cancel = False - stack: list[Group] = [] - total_garbage = 0 - for i, c in enumerate(input): - if cancel: - assert garbage # Sanity check - cancel = False - continue - if garbage: - if c == "!": - cancel = True - elif c == ">": - garbage = False - else: - total_garbage += 1 - continue - if c == "<": - garbage = True - continue - if c == "{": - stack.append(Group([])) - continue - if c == "}": - top = stack.pop() - if stack: - stack[-1].children.append(top) - continue - return top, input[i + 1 :], total_garbage - assert False # Sanity check - - def parse(input: str) -> tuple[Group, int]: - groups, input, total_garbage = parse_group(input) - assert not input # Sanity check - return groups, total_garbage - - _, total_garbage = parse(input.strip()) - return total_garbage - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d09/ex2/input b/2017/d09/ex2/input deleted file mode 100644 index 686a0e1..0000000 --- a/2017/d09/ex2/input +++ /dev/null @@ -1 +0,0 @@ -{{{{{{},{}},{{!>},<>,{}},{},<}!>!>,<<,'u<,"a!!uu!>,<>,{}},{{}",,!!,u!>},o>},{{<{!!<,a''>,u!>eeu,e!>,}},{,<,,"i!>,,o!a!!!!!>'!>},!!!>},<>}}}},{{{,}},{,,<>},{{{!>,<>},,<{o}>},{,,,<'ei!>},,,{,},},<}u!{>,<{!!!><<>}}}},{{},{!}"}{,i!>,<'ue!,e>,{<'"!!!>oa,>}},{{},<"u!!'!!!!{au!>,,}}}},{{{{{,{<}{'iu>}}},{{},{{{}},{{{{},,<,uu!>"!!!>a!u>},<{a!!''!!!>,<{',{"!!!><'<{,>},{}},{!>,<<{!a!>>,,,},<>}}},{{<'a'>,{<}!>,'},}!>!'!>},<>,{<,{!>!!!!!>},e!>,,<"!a,!!!!!>!!e{<,!>,<>}}},{},{}}},{},{{{!!{!"!}!!eu{!>!!'">},}}},{{{{}},{{},!!!>},<},!!o!!!!!>!>a!!{>},{{},},,},<>}}},{{{{!{}!>},,},{ou!!!<"{{!!!>,,!!}">}},{{,o!>!>,},<>}},{!{!!'>,},,!>},!!!!!!>}}},{{{{,},<",e{>}},{}},{{},{<'',{{o!!!>>}}},{{<,{{,!u!!e!!}u!!!>ia!!!>u!!!>>}},{{},<},{,}ei,{eo>}}}},{{{,{},,!>,!>!!!!!>!>,}},{},{}},{{{{{!>,},<<{!!!>io!>},"!!!<}>},{,<,<}!>,{!!'{!>,<,!},{<{o!!"<,!!"!>,a!'a>,{,"!!!>,!>},o!>},!'"{>}}},{{{{""!!!!!!,}!>,!!!!!}!!ua!{!>",>},{"!>,,<,{!'">}}}},{}},{{{{,<>}},<{e<'"{!'!!!!!!!>!!!>>},{},{{<<,!>},,},}},{{},{{},{!!{,!>'!>{}'!u!!>,{{{,{{},},},,<{!!!>!>>}}},,<>}}},{{<">},{,!}!!o!>},}}},{{ao{}ae!!{!!>}}},{{},<}!>,},<>},{!>"'ao!>,a!,!!}aa!!!>,<<}<>,},},ua!!!!!>}u!>,<,!!!<>},{,<"},!!!>ue{!",!>,<>,{!>,<}"i!>!>,<>}}},{{{<,a!!!!!!!!!!'!,!>!!!>{!eu!!!>!e{>,},,<>}},{},,<}o!>},<{!!!>!!"e!>>}}},{{{{{{},eua{i>}},{,}i'{a}>}},{{{},{},<{ea!!!>}!>},<>}},{{<,>},{}}}}},{{{{<,!!}!>}}}!>,<<}>}},{{{{!!!!!!!>!>}!>,,}},{{<}>},{}},{{{<>},},},!!{!!!o!!!>{{!}"!">},{{<>},{}}}},{{{},{{<'!!,!>,>,{<"!!u!!,<,ou,!!{!!!>!!{!ua{,{!!>}}},{{{,,},!!{{!!}"!!{e!>,,<'o>}},{}}}}},{{auu>}},{{{},{{!>,o!!u!>},!!!>},},}}},{{},},<'a!>!!!>>}}},{{{{{},!<"!>!>}>}},{{{},}},{"}!>},,o!!!!!>u{!!,!!">}},{{<>},{{}"a!>,<>,{{{},{<'!!!>!!"!i!<>}}}},{,!i'!!'!!!>},},<{e{>,!,!>,},<'!>},}},{,{}}}}}},{{{{},<>},{}},{{{<}!<"a!a!!!u!>,}!>,<{i{a<>},{{{{},},<,>,{},e}}>,,<'>}}},{{<}!!o!!o!!>eo!!"!!!>,<>}}}},{<{!>},}},{<,,u}!!'!>!'<'ou!""a>},{<"!!!!>o!>},}},{<}!!!!!!{e"}oi!!>,{!!u>}}},{{,i!>,<,"!!},<,!>>,<>}},{{{{},{{{{{<,"'{!>,e!i!!!>,!>"}i!!!>!>},,<<,>}}},{{<"!!'!!{u"!>},}!>i!!!>!>,<,>,{>}}},{},{{},},{}}},{<!>uo!!{'!>,<<>,{{,<'e>},{}}}}},{{{,},},},},<>},<}!>e}},{{!"!>!!>}}},{{{{<}oia!!!>"o>},{<}{,}o!!,e!,},,,<<'!!!>e!!o,e!>!!i!!!>!!!>},}}},{{,},{{{,},}}}}},{{{{{},eii!!!>!>},<,>}}},{{{},{{'!!},>}},{{{{<}>,<<"u{eo<>}}},{{{},{{,<{!>!!!!"!>,},!>,<>},{{<{{!!<"u!>,},,!!},},<>},{<'u!>>}},{{!!{!!!>!>},}}},{{<,!u"!!!!!!eu}!!>},{}}},{{{<>}},{,<"!!>,{<>}},{{},<'!!!!",!u,,>}}},{{},,,"u!i,<>},{!!!>u!!!>uu!!i!>,<}}}},{{},},<>},{{},},},<<,o>}}}},{{{,<"!!!>a!>,<'!>,,{,,>,},"'a!>,<>}},{}},{{{'!!!!",!!!!!!'{o!>},},<<>},{{{}},{!>>,{{,,>},{}}},{}},{},<"!>e{!>},,,<,,>,{}}},{{{{,},}},{<},}},{{{!i{{!e"e,!!'i!!!>,,<>,{}},{!>},<'{ue!!,!!}}!!!!!>{!{>,{}},{<'{!}!>{i!>},<},{'eo>}},{{},{{},<}!ae!>!>,<{i!!!>,},{},o!!!>,<>}}}}},{{{{{},<,>},{}},{{{!!!>!!i{!>},oui!,>,{}},{{{{{}}}}},{}}},{{{{{}},},},,<}!>},!>},,<>},{},,<>}},<,!>!>,},<"}"!!!>!!!>,!>},,}},{{!!{u'{,!''e}!!}o{}!>},<>},{{}}}}},{}}},{{{{'<,!>,<>}},{{a>},{{,ii,!>!>},<"o!!{!!!!!>,!>,}}}},{{{<'"'!>},},>,,<,!ao,!>,<}i!!!>},}!!o'!!!>!!!>>},{{{},},}},>},{{},e!>},u!>},<}!>"!!!!!!!!i!>,,!!!>'e!>!>},<,u"{<>}}},{{{<}!!!>},},<}!>},},!>},<>,{},!>,},}},{{<'i!>!i!>},},!>!!io!>},!>e>,{>}},},},},{}},{{},{{}},{{u!o<"!>a!!!>!>},,{{},{<,!!a!}"a!!}}}},{{{},{{,},,}},{{{},,<}!>},},}},{{{<,},<{!e!'>},<'u{u!!,>}},{{{},<},<{>},"{!>},,uu!!o,>},<"!>,{!>,}},{{{{},{<{>}},{},{,<,u!>},}},{{{<>},{{<}'},<,a!>,<>},,!!"!!i!>},}},{{}},{}},{,{<}{{i{a!i'!i!!!>!!eau,!!<>}}}},{{!>!!',{{},!>!>},},{>}}}},{{{{{{<<''!!}e<!>},},<>},{,<>}},{{{},<'!!!>ae>},<,,,i!!,'!!!!e!!o,}}u!!u!!!!e,e!>>},{}},{{>},{{},<}i>}}}}},{{{,}},{{}}},{}},{{{{,<<}oa<>},{}},{{<}{,},eo"!!!>,,!>,},{},<,!!!>"i!!a{!>},}ii>,<{o>}},{{a!!'!>,}e!>},},a>}},{{{},},,!"o,!!!}!!u>},{{{<>}}}},{{{>}},{},{u,"!>},<>}}}},{}}},{{{},{},<{!>!!!!i!!!>!>},},},{}!>},>}},{{},{}},{ie'i{!!!>ei},<{i,},<>}},{{{{,<>}},{,},<"!!!o!!{!!!>!>,<>}},{,,{,<"!>,<{!!!>o!!u<",!!!>!>,<,"!!e!!,>}},{{},{}}}}},{{{{{,,<,oau!>,,,,!!u>},{{},{!!!>u!>},>},},{{{{,>},{}},<">},{{<'<>}},{{<<"!>,,'!>a}!!!>!!<>},}!!i!>o{>}}},{{},},,<>,,"{e!!!>,<'>},{{{{{o}>},{{<''io{>}}},{}},{}}},{{{},{,},<>}},{{},,{<{<{!!{i!>,,},<>,{}}},{},!'!>},,},}},{<},<"a!>"!!{<"!!!>}e!>,ea>}}},{{},<,{au!!!>,{o!!!>!>},!o>},{<,!!e!a!!o'!!o!!a!>!!!>>}}},{{{!!!!o}},{{},{{{}},!!!>!>!!!>{o,u>}},{{!!>}}},{{{<>,{o!>!>},,!!},!>},!!!>>}},{<{oo>,{}}},{{{!!!>},<>},{{},<"'a!e!!o!>},<{!>{>},{!!!>!>,<>}}},{{{<}",!!>}}},{},{uae!!i,!!!>!>},,<>,{}}}},{{{{}},{{,!>,,}},{{},{}}},{{"}{!!,}!!!!i'e>}},{{},{{{a!!a!>},<"{o!>},,{i<}!ia<{!!}!o!!!>,,>}},{iu!>{,{!'>}},{<}!>,<<,!!ia!!!uo!!>},{{{<},<'!>!>,!!!!}o!!!i!!!!!!o<>},{,<}>}},{}}},{{{{{,},},,},},{},{}},{<'!!!>!u{!!!>,!>,!!!>},},<''"!u!>},<<>,!>!!!>!!uoa,ou>},{}}}},{{{{},{{},{{},},<'!!!>au'>}}}},{{{{}},{,,!>,,<,!!iao>},{}},{{{},}},{{,<,!!i!u!>,}!!,<>,{{,>}}}},{{{<>,{}},{{{<},u!>},!>},>,{}}}}},{{},{{{{!>!!!!!>">},},{{<{eo}!!!!!>},,},!{!!o!>},,,,>}},{}},{<<{aii,o}o,<""o'}u>}}},{{{{,},},},,}!!'"{!'a!!!>>},{{{{<}"}!>,<'!>>}},,'!>,<',u,u">},{}}},{{{'!!,u,!>u!",e"!>,>}},{}},{{}}}}},{{},{}},{{{<'!!{!>!>},ii!'"!!!>>}}}}}},{{{,,<,i>},{{{<{{,!>},},<>},},<!!i,"!>a!"!!!>!>!!!>}!!!>!>>}},{{<{'"a"'io,i{!!}{!!!>,u!!"i>},{<{!!!>!>,<}{u!>!>},!!!e<>,{}}}}},{{{!>},<"oei}u'{!>,,<<>,,},<>},{,}{!>,<}!!!>>,{,<>}}},{{{{<{!'!>},,>},{{<,!>,<'!!!>,<"o!!o'e'"oieui>},{{{}}}}},{,"'}aa>}},{{},{}}},{{{},,'!<}!>},<{!!!>e}u}>}},{<{,''!>,<,},>,{}},{}},{{,<,,}!!!!a>}}},{{{{},{,<}!!,,},{i!a!>>,ua">}},{{{<>},'!!,!!!>,},{{}}i,<"}o!>u!!o,!{i!>,<>}},{{<}'!!>,{}},{{},{{},,!>},<",a!!!>ue!>,},{>}}},{}}},{{{{<,!>},<'}e!>,,<{{!!!>>,u'}!>},,au>},{!>},<"!!!>,!><"'!>,<<},<"!>,<>,{}}},{{!"{,i"!i!>,<,!>},<>,{,!>},},}},{{{,},<<>,{<{,!!!u}}},{{{},{}},{{!!!!!>!!!>u>},<"!!i!!uia>},{{<{i}!u'}!>,,<,">,{}},{{,<'a!!i}!!!!!,>}},{{,o!>!!}!!!!',>,{,<>,<>}},{{{},,},{<}!>,<}u!>{o{!i>,{{}}}},{{{<{!a}>},{{<"}o!>}"!o,,!>,},,{<"!>},<"}}!>!>},},<>}}}},{},{>,{}}},{{{<,ee!>!>,,{}}},{}}},{{},{{{<"'a,>}},{<>}}}}}},{}}},{{<'!>},},<,}'>},{},,},,,{,<{'}!!!>i{!!!>!>},}}},{}},{{{{<>}}},{{},{<'!"!!!>!!!>e,<>}},{{}}}},{{{{,<"'>},{{<<>}}},{{{<{{!!!!!>!!e!!{!>,<}!>},<"e,<,!>,!!!!!>,<,>},<>},{{{}},{{{,,<}}!e!!!>,}},{}},{{}}}}},{{{{},{{<}!>!!'!!'!!!}!>},}}}},{{<,!!'!>'i!<>}}},{{{<"}e!!!{!>,,},},<'!!!>>}}},{{{}}}},{{{<}a},o!>},<"!>},<"!!}u!!"!!!!>},{,!!"e',',<},{{!!!'!>}>},{<>},{{!>},},{{<i!!!>a!u}!!a>}}}}},{{{{},>,<',!!u},},{{},},{<"!>aiu>,},"{!!!>{>}},{{{},{}}}},{{{,<<,e!u!i!>!>},},},{{{>},{!!!a!,!!!>i!!!>!>!!!!{aa!!'>},{{}},{},!!!>,},<}!>,,{u!>,<'e!!!>i!>!!!!!{!!!!!>!!!!<>}}}}},{{{{<>}},},{>,<''!!!!e!>,<<<,>},{{{{<,!>,i}>},{{}}}}}},{{{},},!>u,!!!>,},<>},{{<'!!,!>,,,!>a!>},}}},{},{{},<!>},e}>}},{{<"ou!>!!!>eae>,{{},{}}},{{,<"!"!!,{{<>}}},{!''iuu"!!!>,>}},{{}}}},{{,<,a!!!>a}o{i{">,!!o!>},<'{ei!!!!!!a!>},},<>},{,"},,},,{<,!!!>!o"}>}}}}}}},{{},{{{}},{{{},<"}!!{i!i!>,!>,,{{}}},{<},},},}},{{},{{},},}}}},{{<>}}},{{{{<{!>oa!!u!>!>!!u>},},a}'!!!>u!!e!o!!!!o!>},<>}},{{{{},{{<,o"i!!o!!!>!!!!'o!{!>,,},},<,i!!!>!>,<,!!<"!!!>ei!!!!!>e>}},{{{}}}}},{{{{,},>}},{}},{{{<"'!>},,},>,{{},},",eoa!!!>},,<''!!!>>}}},{{{{<"!!'"!{!!!>"{!>},}},{{!}ei}!e}!!!!}{a!!!>>}},{{},},},<,!>},<"}!>u!!!>o<>},{{}}}},{{{<<},{{,e>,},,,!>},{!!!>!{,>}}},{{{<!!!>u>,{<,<{<>}}},{{},{<{,}!!!>!!",<>}},{},''"!!i!>!>{!!{ia!!e!eu!!o>,{!!!>i>}}},{{},},}}}},{{{{{{},>},{,<>,{},}},{!>u!e!"o!ui},!!>,{<}'{!!,!!!!ei!>!>},}}},{{{},{}},{<"!o,"e}o!"ue!>,<}},{,{}}},{{e!!!>,!!'>,{!!'!!!>},<,ae,{!>!!!>ee!!o!!!>uo">}},{,},{{},<{"!>oeuo'a!!}!>},<">}}}}},{{{,,{!>!!,}'',!>a!>,<'!!!>>,{}!>},<{!>a!!o}!>}{!>},ao!>>}},{{{<'!!!,<,u!!!>},,{}}},{{<u}!!{e!"a!!!>},<>},{<}>}}},{}},{{{{},{,}}}},{{{}},{{}},{{{},{<,"!>,!!'"uu!o!>,<">}},,},<',!>!>},}}},{{{<,}>},{}}},{{{},{>,{}}},{}}}},{{{},,!!'e!!!>u!e!!!!u!!!!{!!!>},<{!>,},{{{<','o!!!'<,,u!>,},{{},<"i!>,!!"{u!!!>i!<>},!>i!!"a!!i!!!!!!!>"o!>,<>}},{,},e!>,{!{!!,>}},{{,<'!>},>},{{{!!!>,},},,{'!>,>}},{},}}},{{}}}},{{{{{{{{},{<u!!e}!>e!,!!!!!>o{,>}},{<{i''!!!>",ae<'!>>,{<'!'e{>}}},{},,<{!>{!i,e!!u!a<>}},{{{{!!!!!>",i!!!!!!!>,,a!>},},<>}}}},{}},{{{>,<'u!!!!o!!!,!!!!>},{{e!>},!!{{,,!>>},{<{!>!{{u!!}}!!!>!>,}},{,u!!!>'i<>,<"i},}}},{{{{}},{},{{{},}a!>,,},<,!!{>},}},{{{{},"{!>i>},{!>},io!!!!!>e>}},{{!!{{u!>!!e!"{'!!!!>,{<{!>e}u>}}},{{},{{<'!"}>},},}},{},!>'!>,},<{<{>,<>}},{{{{<{'eao>}},{{{},{{{},{{{{},{<'!!!>},!'>}},<"u{>},{{},{<"o,!'>}}}},{{!'!!,>}}}},!>}i!!"!>,<}e{>}},{{{{},!!u},,!>},,<},{,,<"!!!>},<{!!!>!i!!!>},<>}},{{,<<{!!'!>,,<,!!i"!>,}}},{{{<'<"!!!>},>,{}}},{{},<,!!{i>},{}}}},{{{eoo{{{!!!!"!>!>a!<>},<}!!!>!>{!>o!!!>a}"'>}},{{{{<"'}!>},>}}},{{{},{{!!",a!!'!>u!!!>>},<,!>,>},{{<}e!>,,}!!!!!>!!!>,i!!!>,,oo>},{{},}!!"!>,>}}},{{{},!>!!!!oi!!,>,{{,}}}},{,e!u!!!!!>!!!>!!>,<""e!>,!!!>e'!!!!!>,{!!!!!>,">},{},},,{}}},{{{{<>}},{{}!o"!!,e!!!>!>{!>,<}a<>},{{},{}}},{}},{{{},<{'},"<>,{{>}},{{{{<}<}i!>!>},<,"{a">}}},{},{{<}!>!!!>},},{}a!>},,!!!>i!!,!!>,<"o>}}},{{{<,}}ae"{!!!>{!""!!i!>,<{u!>},},<>}}},{{{{<{!>!>},,<}i!>,<,!>},}!>},{>}},a''!!!>a!,ue>}},{{{{<>},{,,<,}!!{!>},<,u!!!!!>o}!!ea>}},{,<!!!{",ia!!!!!>},<,>}},{,!>},},},}},{{!>o!!!>,>},{}}}}},{{{,!>},,e'!!u!!"!!!!!>uo!!!>!},{<}{!e'"a{>}}},{{{}}}}},{{{{,e>}},{{}}},{{{},}},{{},},},<<}''o!!au!>},<{!>!!>}},{oo'!!!!!>!>},,}}},{{{{},!!',<>,{a'u!'!!!>},<>}},{},{<}!i}i{}!>,<,o!>!!u,!!!>,<"a>}},{{{}},{{}}}},{},{},{{{{}},{}},{,{<{>}},{{<',!a!!}!!'i>}}}},{{{,!!!!!>"!>!!'{,a!!,!>!>>},<}!e!>},{,<},{{{!>,,,a>},{{{!!i!!"!!>},{}}}},{{<<{'!>},i'a!>},},<>}}},{{{},{}},{},,,"{>,{},},!!}>}}}}},{{{e>,{<'!>,},,<'!u{>}}},{{{{},<',<,{}},{{!>!!}ii>},{o!!!'!!{},!!!u!!'>}},{{},{{{{{{}}}},{<{!u!i'!!}!!!>!>!!e>}},{}},{},{{{!!!!!>!>},!!!>a}ii<<,u!!'!>,<>},{{<'"'ua!>},<,!a>},<{!a"!,},},},{{},<'eu!!}},!!!>,}}},{{}}}}},{{{{>},},!o!!!>>},{{},{}},{{{{,!!oi!>"!>,<{!!!>},>}},{{<"!!{!'>}}},{{{}},,!!!>!>,<'o!>>},{<"{u{{}<},},}}},{{},{{}}},{{{{}}},{{<!!!!!>{a!>},<}!!!{!>'!>,<>},{u!,<"!>},,,{{},<,!}>}},{{i!!!>!>},,,,},}}}},{{{,<'{,}{{o}!>>,,a!!!>o{"!>,<"'>},{{!>,<>},{{<>}}},{{},{,{},!!}{!a!!uo>}}}},{{},{{,{{<">},{iu}'>}}},{<}!>},},<'"">}},{{!>!>},<}!<>},<<}!!!>!!,"!!!!!!>}},{}}},{{},{{<,"!>,,<}"'}!>{!!!>oa!,auo!>,!>,<>},{{{i'">,!",!>},},{{{{},{{<,!>,,!!!>!>,},,!!{oo>},{{{,{{},<,e!>,<,!!!!o},>,{}}}},{{},}},{{}}}}}},{o!!>}},{{,{{",>}}},{,{},<>}},{},}}},{}}},{{{{{oou<>,{}},},},,"!!!>>},{<{{,,<'>}},{},{{{{}},{<<}!>,!"!i!e'}}},{{,},!a""!>,<>},},{},!>!!!!!>!>},!>},<',<<>}}},{{{},{{},ueo>},,<,!}>},{},!>,!>},<{>,{{<e<",!"}}}}},{{{{<'!>,},{,}<""i!!">},{{,<"'!e'!>},},{{{<{!!!>""e'}!aa!>,<,'!>{},<>}}}}},{}},{{{{},{{<>,>},{{<'e!>},!!u'!>!>'!!!>,<{oi>},{<{uee!!!!!!!>,>}},{{!!!>o,<<,'!!!>,<}>}}},{{}}},{{{}},{{},},<{!!>}},{{{},!>,},<'>,{{<>},{{ea!>,!!>,'<,,!>,<{>}}}},{{{{}ee>}},{{oa!!>},{},>,{,,,,,}}}}}},{{{{{},{<'o>}},{{}},{{{<}!>},,,e!>,<>},{}},{<'!!!'!!"!!}o!}!>},,!!!!!>'i!>},},<{>,{}}}},{{{{{{}},{},,,,,{},u!!!>!!,'i}!!!>"!!{i>}}},{{{{<"u!>},,}},{>}},{}},{{{{{{,<,!}",oi!>,<>},{<!u{oo!!!!"!!!>!<>}}},{,,},,<{,,ia>}},{{,{<'!>,!!!!a>,}},{{>},{{},{{,,'!>o>}}}}}},{{{},{}},{{}},{{a"{!>},,!>!>!!i!"i}!{u!>,<{>}}}},{{{},,},,<},{{<},{>}}},{"!!e>},{,{{}}}},{{{<'{!!oa!!!>!!!>,,<,i,!!u,>,{}},{}},{{{{{}}}},{{{<<},!>u!>},!>>},{,<'!">}},{},,,<"!!!>!,},>},{{,,<"!>,!o!!,!>,,,{i"ui<{>}}},{{,"u>},{},i!!!!!>},,{}}}},{{},{}}},{{{{}},{{{<>}},{}},{{{<>},>},{},,<'!,}!">}}}}}}},{{{{,},},<,!!u<{e!!!>"ui>},{,i!!!>">,{{!!'}e<>},{}}}},{}},{!>,o>,e>},{},<,{i!>>,{<'!!"!"e!!!!u}e!>},}}}},{{},{},},}}}},{{{<'!>}!>,,<}!>},},,{<{"!>oe,!!,<'>}},{{{{},{{<{i<,{!!i'>},{},,},!!!!>}}},{},{{{{},ue}{'u!>!>,<>}}}}},{',''!!u<>,{}}},{{<},{,{!>{!!!>}!>,<,<>}}}},{{},{<'>,{,,!>,},}},{{{},},{{{<,{!>,<uaoa'>},{{i!>,<{i!>},>}}},{}}},{{},i',u!>},},},{>}}},{{{,},<{i!>,<',!>,<"!>!}!!u"},{},{}},{{{{,{<{!!!!e!>e>}}}},{{{},<",!>,},e!!!>!!e>},{{<>,,{{'!!!>ee!>,},!">}},{{<,!>,<>,<"!!!>},<},!!!>a'!}u!!ii>},{<}!!o!>!>,,<">,}},{{,<,,o!i!!!!!>'!!!>a>}}}},{{{}},{{{{},},<,},{<'oi!!a}!>,},,<,>}}},{{},au!!!!!!'}},{{},<'!>,!!<>},}},{{{{{<{!>,,<}aa{{">,{},},<>}}},{}}}},{{{{uuu,>}}}}},{{{<''!>!!!>!>,!}ee>,,{!!!>oua!>!i!>,<,!>,<{>},{{i">}},{<},<{!!"i!>,<{>,o"u>}},{{{},<"!!!>!!!>{!>'a!,>},{},,}},{<'oau!!>}}}}}},{{{{{{",!>,,<>}},{{{!!e"!>u!>,,,}},{,<}!i!!!!e!!,u!!e>}},{{{e!!"o!>},}},{{{{{{},,}}},{},{{{,>},{}}}},{}},{{},!!!>!!!>'i{a!>>}}},{{<!!!!{!!}a!a!>},},{a{"'""!!u}!>,}}}}},{,},{{}}},{{{o},{,{}},{}},{{,'}}e!!!>,<"io!iu>}},{{},i!!iu>}}},{{{,!!!>"e>}},{{}},{{,{,},<'a',u!>!>,!>},<'o},>}}}}}}} diff --git a/2017/d10/ex1/ex1.py b/2017/d10/ex1/ex1.py deleted file mode 100755 index 6e8576c..0000000 --- a/2017/d10/ex1/ex1.py +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python - -import copy -import sys - - -def solve(input: str) -> int: - def parse(input: str) -> list[int]: - return [int(n) for n in input.split(",")] - - def run_round(lengths: list[int], circle: list[int]) -> list[int]: - circle = copy.deepcopy(circle) - cur_pos = 0 - skip_size = 0 - for n in lengths: - # Invalid length - if n > len(circle): - continue - # Reverse - for i, j in zip( - range(cur_pos, cur_pos + n // 2), - # Avoid off-by-one by going further than necessary - range(cur_pos + n - 1, cur_pos, -1), - ): - i %= len(circle) - j %= len(circle) - circle[i], circle[j] = circle[j], circle[i] - # Move - cur_pos += n + skip_size - # Increase - skip_size += 1 - return circle - - lengths = parse(input) - circle = list(range(256)) - circle = run_round(lengths, circle) - return circle[0] * circle[1] - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d10/ex1/input b/2017/d10/ex1/input deleted file mode 100644 index c4486d6..0000000 --- a/2017/d10/ex1/input +++ /dev/null @@ -1 +0,0 @@ -83,0,193,1,254,237,187,40,88,27,2,255,149,29,42,100 diff --git a/2017/d10/ex2/ex2.py b/2017/d10/ex2/ex2.py deleted file mode 100755 index f547893..0000000 --- a/2017/d10/ex2/ex2.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python - -import functools -import itertools -import operator -import sys - - -def solve(input: str) -> str: - def parse(input: str) -> list[int]: - return [ord(c) for c in input.strip()] - - def compute_sparse_hash(lengths: list[int]) -> list[int]: - circle = list(range(256)) - cur_pos, skip_size = 0, 0 - for _ in range(64): - for n in lengths: - # Invalid length - assert n < len(circle) # Sanity check - # Reverse - for i, j in zip( - range(cur_pos, cur_pos + n // 2), - # Avoid off-by-one by going further than necessary - range(cur_pos + n - 1, cur_pos, -1), - ): - i %= len(circle) - j %= len(circle) - circle[i], circle[j] = circle[j], circle[i] - # Move - cur_pos += n + skip_size - # Increase - skip_size += 1 - return circle - - def compute_dense_hash(sparse_hash: list[int]) -> list[int]: - assert len(sparse_hash) == 256 # Sanity check - return [ - functools.reduce(operator.xor, chunk) - for chunk in itertools.batched(sparse_hash, 16) - ] - - lengths = parse(input) - lengths += [17, 31, 73, 47, 23] # Additional lengths - sparse_hash = compute_sparse_hash(lengths) - dense_hash = compute_dense_hash(sparse_hash) - return "".join(f"{n:02x}" for n in dense_hash) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d10/ex2/input b/2017/d10/ex2/input deleted file mode 100644 index c4486d6..0000000 --- a/2017/d10/ex2/input +++ /dev/null @@ -1 +0,0 @@ -83,0,193,1,254,237,187,40,88,27,2,255,149,29,42,100 diff --git a/2017/d11/ex1/ex1.py b/2017/d11/ex1/ex1.py deleted file mode 100755 index bb0ef3f..0000000 --- a/2017/d11/ex1/ex1.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env python - -import enum -import sys -from typing import NamedTuple - - -class Point(NamedTuple): - x: int - y: int - - -class Direction(enum.StrEnum): - NORTH_WEST = "nw" - NORTH = "n" - NORTH_EAST = "ne" - SOUTH_EAST = "se" - SOUTH = "s" - SOUTH_WEST = "sw" - - # https://www.redblobgames.com/grids/hexagons/#coordinates-axial - def apply(self, p: Point) -> Point: - # (x, y) <=> (q, r) - match self: - case Direction.NORTH_WEST: - dx, dy = -1, 0 - case Direction.NORTH: - dx, dy = 0, -1 - case Direction.NORTH_EAST: - dx, dy = 1, -1 - case Direction.SOUTH_EAST: - dx, dy = 1, 0 - case Direction.SOUTH: - dx, dy = 0, 1 - case Direction.SOUTH_WEST: - dx, dy = -1, 1 - return Point(p.x + dx, p.y + dy) - - -def solve(input: str) -> int: - def parse(input: str) -> list[Direction]: - return [Direction(dir) for dir in input.strip().split(",")] - - # https://www.redblobgames.com/grids/hexagons/#distances-axial - def hex_dist(a: Point, b: Point) -> int: - dx, dy = a.x - b.x, a.y - b.y - return (abs(dx) + abs(dx + dy) + abs(dy)) // 2 - - directions = parse(input) - pos = Point(0, 0) - for dir in directions: - pos = dir.apply(pos) - return hex_dist(Point(0, 0), pos) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d11/ex1/input b/2017/d11/ex1/input deleted file mode 100644 index 093ccc2..0000000 --- a/2017/d11/ex1/input +++ /dev/null @@ -1 +0,0 @@ -nw,n,ne,sw,s,s,se,se,ne,s,se,se,ne,ne,s,se,s,ne,sw,ne,ne,s,se,nw,n,ne,nw,n,n,ne,n,n,ne,n,ne,n,n,n,n,nw,n,n,nw,n,nw,n,s,sw,sw,sw,n,nw,n,nw,nw,n,nw,nw,nw,nw,nw,nw,se,nw,nw,nw,se,sw,sw,nw,nw,sw,sw,nw,nw,nw,nw,nw,s,sw,nw,s,sw,sw,nw,sw,sw,nw,sw,sw,nw,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,s,se,sw,sw,nw,sw,sw,se,sw,sw,s,sw,sw,sw,s,n,s,sw,sw,s,sw,s,sw,ne,sw,s,s,s,n,sw,s,s,sw,s,s,s,nw,s,s,n,nw,ne,n,s,se,n,s,s,s,s,ne,s,s,s,sw,s,ne,n,s,se,s,se,s,s,s,s,ne,s,nw,se,se,ne,nw,se,s,nw,s,s,s,nw,s,sw,s,s,se,nw,se,sw,se,sw,s,s,sw,se,se,s,n,se,se,se,se,se,se,s,se,s,se,se,nw,s,n,se,se,se,se,n,nw,se,se,se,se,se,se,se,se,se,se,se,ne,se,se,sw,se,s,se,ne,se,n,se,ne,se,se,se,se,se,n,se,se,ne,ne,ne,ne,se,se,ne,se,se,s,ne,se,se,n,se,sw,s,se,se,ne,ne,ne,s,s,ne,se,nw,nw,s,se,ne,ne,ne,se,sw,ne,se,ne,ne,ne,se,n,s,n,se,ne,ne,se,se,nw,ne,se,ne,nw,ne,se,ne,ne,n,ne,ne,ne,ne,ne,se,ne,nw,se,ne,ne,ne,s,ne,ne,ne,ne,ne,sw,ne,ne,ne,se,ne,ne,ne,ne,nw,ne,ne,s,sw,ne,ne,ne,ne,ne,n,s,sw,n,ne,s,ne,nw,sw,sw,s,ne,ne,ne,ne,sw,n,ne,ne,nw,n,ne,n,n,s,n,ne,nw,ne,n,ne,ne,ne,ne,sw,n,ne,sw,sw,ne,nw,ne,ne,n,ne,ne,ne,n,n,s,ne,ne,ne,n,ne,ne,n,n,n,n,nw,n,n,ne,n,ne,ne,n,ne,ne,ne,ne,ne,n,n,n,ne,n,n,n,n,n,n,n,n,n,n,ne,n,n,nw,ne,n,s,nw,se,ne,se,n,n,n,sw,n,n,ne,sw,n,n,s,s,n,n,n,ne,nw,nw,n,n,n,s,se,n,n,n,nw,n,nw,n,n,n,n,n,se,n,n,n,s,sw,n,n,n,n,n,n,n,n,n,n,n,se,n,n,n,nw,n,n,se,ne,ne,nw,n,n,n,nw,n,n,n,ne,s,n,nw,ne,n,s,n,n,n,n,sw,n,nw,n,n,n,ne,s,n,s,se,n,n,n,nw,nw,n,nw,sw,n,n,nw,n,n,nw,nw,n,n,sw,nw,nw,nw,n,se,nw,n,nw,nw,nw,n,n,nw,n,n,nw,nw,n,ne,nw,nw,sw,n,n,n,nw,nw,n,n,n,n,n,sw,nw,nw,n,nw,n,nw,nw,nw,n,nw,n,n,n,n,nw,nw,nw,s,s,n,nw,sw,nw,n,nw,ne,n,nw,ne,ne,sw,n,se,nw,sw,s,nw,nw,nw,nw,nw,ne,nw,nw,nw,ne,nw,se,n,n,nw,se,nw,nw,nw,n,nw,se,nw,nw,nw,nw,nw,nw,nw,nw,nw,ne,nw,nw,nw,se,nw,nw,nw,nw,s,s,s,nw,nw,nw,nw,s,n,nw,nw,se,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,nw,ne,sw,sw,sw,nw,nw,sw,nw,nw,ne,sw,ne,nw,nw,nw,nw,nw,s,nw,nw,nw,nw,nw,se,sw,nw,n,sw,ne,nw,nw,nw,nw,nw,sw,nw,se,sw,sw,sw,nw,s,nw,nw,s,ne,nw,nw,nw,nw,nw,sw,nw,s,sw,nw,nw,se,sw,sw,nw,nw,sw,sw,n,sw,nw,ne,se,nw,nw,ne,nw,nw,sw,nw,nw,se,sw,nw,sw,nw,nw,ne,nw,s,nw,nw,nw,nw,nw,nw,nw,nw,nw,sw,n,sw,sw,se,sw,nw,nw,nw,nw,nw,sw,nw,nw,nw,sw,nw,nw,se,sw,nw,nw,n,nw,sw,nw,nw,nw,nw,n,sw,sw,sw,se,nw,nw,sw,sw,sw,sw,nw,nw,sw,sw,sw,nw,sw,sw,se,sw,sw,ne,sw,nw,s,s,se,ne,sw,sw,sw,sw,nw,nw,nw,sw,nw,nw,nw,s,nw,nw,nw,sw,s,s,nw,sw,sw,ne,n,s,nw,nw,sw,nw,nw,nw,sw,sw,ne,sw,sw,nw,n,sw,sw,nw,se,sw,sw,se,ne,sw,sw,sw,nw,sw,sw,sw,sw,nw,nw,nw,nw,n,sw,sw,se,n,nw,nw,sw,sw,sw,sw,nw,se,sw,sw,se,n,s,sw,sw,n,n,sw,sw,n,sw,sw,sw,sw,sw,se,sw,sw,sw,se,nw,sw,s,sw,sw,sw,ne,sw,sw,sw,sw,sw,sw,sw,n,sw,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,ne,sw,s,sw,sw,sw,sw,sw,sw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,n,s,s,sw,n,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,n,sw,s,sw,sw,sw,sw,sw,sw,ne,sw,se,sw,sw,nw,sw,sw,sw,s,sw,sw,sw,sw,sw,s,sw,sw,ne,sw,sw,sw,sw,n,sw,n,sw,n,sw,sw,sw,sw,sw,sw,n,s,se,s,ne,sw,sw,s,s,s,se,s,nw,s,sw,s,s,s,se,s,sw,sw,se,sw,sw,sw,s,se,nw,sw,sw,se,s,s,sw,sw,s,sw,sw,s,sw,sw,ne,n,sw,sw,nw,ne,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,n,sw,s,n,s,s,sw,sw,nw,se,n,sw,sw,sw,nw,s,sw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,s,s,sw,s,n,s,sw,sw,sw,s,s,nw,s,sw,s,s,s,sw,sw,s,se,se,nw,sw,sw,sw,s,s,sw,sw,ne,sw,s,sw,s,s,s,sw,s,s,sw,sw,sw,nw,sw,s,sw,sw,n,sw,sw,sw,s,sw,sw,sw,sw,s,nw,nw,sw,sw,s,s,n,sw,sw,se,s,sw,s,n,s,sw,s,sw,s,sw,sw,sw,sw,sw,n,s,se,s,s,s,s,s,ne,s,sw,n,sw,s,s,sw,s,sw,s,sw,ne,s,s,nw,n,s,s,n,se,sw,sw,s,s,s,s,s,s,s,s,sw,se,sw,s,nw,s,s,s,s,s,se,s,s,sw,sw,ne,s,s,s,sw,ne,s,sw,s,s,s,s,s,s,n,s,s,s,s,sw,s,s,s,sw,sw,s,sw,sw,nw,s,ne,s,s,s,se,sw,se,s,s,s,sw,sw,s,sw,s,s,s,n,s,sw,s,sw,s,s,nw,s,s,n,nw,s,ne,s,sw,s,s,s,s,ne,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,nw,s,s,sw,nw,s,n,s,s,nw,sw,s,se,s,s,s,s,sw,s,ne,s,s,s,s,s,s,s,s,s,sw,se,s,s,s,s,s,s,s,s,n,s,s,s,s,ne,n,ne,s,sw,n,s,s,s,s,s,s,s,s,ne,s,s,nw,se,s,s,s,s,s,s,ne,s,s,s,ne,s,s,s,s,s,se,s,s,s,s,s,s,s,ne,s,s,s,s,s,s,s,se,s,s,s,s,se,s,s,ne,s,n,ne,s,s,s,nw,ne,se,s,s,s,n,sw,s,s,s,s,s,s,s,sw,s,s,se,s,s,s,s,n,s,se,s,s,nw,s,s,sw,s,sw,se,s,s,s,s,s,s,s,s,se,se,se,s,se,s,s,s,s,se,s,s,se,s,se,s,n,s,s,se,s,sw,se,s,s,se,se,s,s,se,s,se,se,nw,n,s,nw,ne,ne,s,s,sw,s,se,nw,ne,s,s,se,s,s,s,s,s,s,s,se,s,s,se,s,se,s,ne,se,se,s,se,se,s,nw,s,ne,sw,s,s,se,s,s,se,s,sw,s,s,se,s,sw,n,s,nw,se,s,n,nw,s,s,se,s,s,nw,s,se,s,ne,s,s,se,s,se,s,nw,se,ne,s,nw,se,s,se,ne,s,s,sw,s,s,s,se,se,se,s,s,s,s,se,nw,s,se,s,s,s,s,n,se,s,n,se,se,se,se,nw,sw,nw,se,se,se,s,se,n,s,se,s,nw,ne,se,s,se,s,se,s,ne,se,nw,se,se,ne,s,nw,sw,n,se,se,se,n,se,se,se,nw,se,sw,s,n,se,s,sw,se,s,s,se,s,se,se,se,nw,se,se,s,nw,se,n,se,se,se,s,nw,se,se,s,ne,se,se,s,s,s,se,se,ne,s,nw,s,se,se,sw,se,se,se,se,s,se,se,se,s,s,se,nw,se,se,se,s,se,s,nw,se,se,se,ne,se,se,se,se,se,se,se,se,se,se,s,ne,se,ne,se,n,sw,s,sw,se,sw,se,se,se,sw,se,se,s,se,se,s,nw,se,nw,se,se,se,se,se,se,n,se,se,se,se,s,se,nw,se,se,se,se,se,nw,nw,se,se,se,se,s,sw,s,s,se,se,s,se,se,nw,se,se,se,s,s,s,se,se,n,se,nw,sw,n,se,se,se,se,se,se,se,se,s,ne,se,ne,se,se,se,se,nw,se,se,s,se,n,se,se,se,se,se,se,s,se,s,s,ne,s,se,sw,ne,se,se,se,sw,se,se,se,se,s,nw,n,se,se,se,se,s,se,se,se,se,n,se,se,se,se,se,nw,ne,se,se,n,se,s,se,se,s,se,n,se,se,ne,se,s,s,ne,s,se,se,se,se,se,se,nw,nw,se,se,se,se,n,se,se,se,se,s,se,s,se,se,se,se,se,n,se,se,se,se,se,se,se,n,n,sw,se,n,se,se,se,se,se,se,se,se,s,sw,se,nw,nw,ne,se,se,se,se,se,se,ne,se,ne,se,se,ne,ne,se,sw,se,se,se,ne,se,se,se,ne,se,nw,se,se,se,sw,se,nw,se,se,se,se,ne,sw,se,se,se,se,se,se,s,ne,sw,se,s,s,se,se,nw,se,ne,se,se,se,se,se,se,s,se,se,se,se,se,se,se,se,sw,ne,sw,se,se,se,se,nw,se,se,se,se,ne,se,se,se,n,se,ne,nw,se,se,se,sw,se,se,se,se,se,ne,se,se,sw,se,se,n,n,se,se,se,se,se,se,se,se,nw,se,s,s,se,se,s,se,ne,se,n,n,se,nw,se,se,se,se,nw,sw,s,ne,nw,se,ne,se,n,se,se,se,ne,se,se,sw,s,se,se,n,ne,se,se,ne,se,se,ne,se,se,se,se,se,se,se,se,se,nw,n,sw,se,se,se,se,ne,se,se,se,se,se,se,se,ne,se,ne,se,se,n,se,se,n,ne,n,se,se,se,se,ne,se,se,se,sw,se,se,ne,se,s,se,ne,se,n,se,se,se,se,sw,se,ne,se,s,se,se,ne,n,se,se,nw,se,se,nw,nw,ne,se,se,sw,se,se,n,ne,n,ne,s,se,se,se,se,ne,s,nw,se,se,se,ne,se,se,sw,ne,s,se,ne,se,se,se,se,sw,se,se,sw,ne,ne,ne,se,se,se,ne,ne,ne,ne,se,se,ne,ne,se,s,nw,se,se,se,se,ne,se,se,se,se,se,n,se,se,ne,se,se,se,se,se,se,s,se,n,se,ne,ne,se,s,ne,ne,s,ne,ne,se,se,se,ne,se,ne,se,se,ne,sw,ne,ne,ne,se,se,ne,ne,se,n,se,nw,se,n,ne,ne,ne,se,se,se,ne,ne,se,s,ne,ne,se,ne,se,nw,ne,ne,ne,ne,n,se,ne,se,ne,se,se,ne,ne,s,ne,ne,ne,ne,se,ne,ne,se,ne,ne,se,sw,s,s,se,se,se,ne,se,ne,ne,ne,ne,ne,se,se,ne,se,se,se,ne,ne,nw,sw,se,se,sw,sw,ne,se,se,se,se,s,nw,sw,ne,se,se,ne,ne,ne,ne,se,se,se,se,se,ne,se,ne,ne,ne,s,ne,ne,n,ne,ne,ne,s,n,se,se,nw,nw,ne,ne,n,ne,ne,ne,se,se,ne,se,se,sw,ne,se,ne,ne,se,se,ne,se,s,ne,ne,ne,n,sw,ne,ne,ne,ne,ne,se,se,s,nw,se,ne,ne,ne,n,ne,ne,n,ne,se,sw,ne,ne,se,sw,ne,ne,s,ne,ne,nw,sw,se,ne,ne,sw,n,ne,ne,ne,sw,ne,s,ne,ne,se,ne,nw,ne,ne,ne,se,n,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,se,se,ne,ne,ne,ne,ne,s,ne,ne,ne,ne,se,ne,ne,ne,ne,ne,ne,ne,ne,ne,n,n,se,ne,ne,ne,ne,ne,sw,s,ne,ne,sw,n,ne,n,nw,se,ne,se,ne,ne,ne,ne,se,ne,ne,se,ne,se,se,ne,ne,s,n,sw,se,sw,se,ne,ne,nw,ne,se,ne,ne,ne,se,ne,ne,se,nw,ne,ne,ne,ne,ne,ne,se,se,ne,se,ne,s,se,nw,se,ne,ne,ne,se,s,ne,ne,ne,se,se,se,se,se,ne,se,nw,se,ne,ne,ne,n,n,n,nw,ne,s,ne,se,ne,ne,nw,s,ne,nw,ne,nw,se,ne,ne,n,ne,ne,ne,sw,ne,se,n,ne,ne,ne,ne,se,s,ne,ne,sw,ne,ne,s,ne,se,ne,ne,ne,ne,ne,ne,ne,se,ne,nw,ne,n,ne,s,ne,ne,ne,nw,ne,n,ne,nw,ne,ne,ne,ne,s,ne,ne,n,ne,ne,ne,ne,sw,ne,ne,ne,se,ne,se,ne,se,nw,ne,ne,ne,sw,n,n,nw,nw,ne,ne,ne,ne,se,ne,ne,ne,ne,ne,s,ne,ne,sw,ne,ne,s,ne,ne,ne,ne,s,ne,ne,ne,ne,ne,ne,ne,ne,ne,s,ne,ne,s,sw,ne,nw,ne,ne,ne,ne,ne,ne,ne,ne,s,ne,sw,se,ne,se,ne,ne,n,ne,s,ne,ne,ne,n,ne,n,n,ne,ne,ne,ne,ne,n,ne,se,ne,se,ne,ne,s,ne,n,ne,ne,ne,ne,se,ne,nw,ne,s,sw,ne,ne,ne,sw,ne,ne,s,ne,ne,s,se,ne,s,n,ne,ne,ne,ne,ne,se,ne,ne,n,ne,ne,nw,nw,ne,ne,ne,ne,nw,ne,n,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,s,n,ne,n,n,ne,nw,nw,ne,n,nw,ne,ne,n,ne,ne,s,s,ne,se,ne,ne,ne,n,ne,ne,ne,ne,ne,n,s,se,ne,ne,s,ne,ne,se,ne,ne,n,n,ne,ne,se,n,ne,s,ne,ne,n,ne,nw,ne,nw,nw,ne,se,ne,ne,ne,ne,se,ne,se,ne,ne,ne,n,ne,nw,n,ne,ne,nw,ne,ne,ne,nw,ne,ne,sw,n,ne,ne,ne,ne,ne,ne,ne,n,ne,sw,n,ne,nw,ne,ne,ne,ne,ne,sw,sw,nw,ne,ne,ne,se,nw,sw,n,ne,n,nw,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,sw,ne,ne,ne,ne,s,ne,ne,se,ne,ne,n,ne,n,ne,ne,ne,s,ne,ne,se,ne,ne,ne,ne,ne,ne,se,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,s,se,se,n,s,ne,s,s,ne,ne,n,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,sw,ne,ne,n,ne,ne,se,se,nw,n,ne,se,sw,ne,ne,ne,ne,n,sw,se,ne,n,se,n,sw,ne,se,ne,ne,ne,ne,s,ne,ne,n,s,n,ne,ne,ne,s,ne,n,n,ne,ne,s,ne,n,ne,ne,ne,n,n,n,n,ne,ne,s,ne,ne,ne,ne,ne,ne,s,ne,ne,ne,ne,s,n,ne,se,ne,n,n,n,nw,ne,ne,n,n,ne,n,se,ne,n,ne,ne,ne,ne,n,nw,ne,s,ne,n,ne,n,ne,s,n,ne,n,ne,ne,n,n,se,n,ne,nw,ne,ne,se,n,ne,n,ne,ne,ne,ne,n,ne,n,ne,sw,ne,ne,ne,n,ne,ne,ne,s,n,n,ne,ne,ne,se,ne,nw,ne,ne,nw,n,ne,ne,ne,n,ne,ne,se,ne,n,nw,s,n,ne,nw,ne,n,ne,nw,s,ne,s,n,n,se,n,ne,ne,ne,ne,n,s,se,sw,n,n,ne,nw,n,ne,sw,ne,ne,n,ne,n,ne,n,se,sw,n,nw,ne,ne,ne,n,ne,n,n,ne,n,ne,ne,n,n,n,sw,ne,ne,n,ne,nw,n,n,ne,n,n,n,nw,n,se,n,ne,ne,sw,ne,ne,ne,ne,n,s,ne,se,n,ne,n,ne,ne,se,ne,ne,n,ne,n,se,ne,n,ne,ne,n,n,s,n,se,n,ne,n,ne,n,ne,n,ne,ne,se,ne,se,ne,sw,n,n,n,se,ne,ne,se,ne,n,ne,n,nw,ne,n,ne,n,ne,sw,n,sw,s,n,n,ne,ne,ne,ne,ne,n,s,n,n,nw,n,ne,n,n,sw,n,n,ne,n,nw,n,n,se,n,ne,ne,ne,ne,n,ne,ne,ne,n,ne,n,n,n,n,ne,n,n,n,n,sw,n,n,ne,n,ne,n,n,n,n,sw,ne,n,s,ne,n,se,ne,ne,ne,sw,n,n,ne,se,n,sw,se,ne,nw,n,sw,n,n,n,n,n,n,ne,se,ne,n,n,n,n,n,s,n,n,n,ne,ne,nw,n,se,s,s,ne,ne,ne,s,ne,ne,ne,s,se,s,n,ne,ne,n,sw,n,ne,n,ne,s,n,ne,n,s,n,ne,n,ne,ne,sw,n,s,ne,ne,n,ne,sw,n,ne,ne,ne,n,sw,n,ne,sw,n,ne,ne,ne,n,ne,ne,n,n,s,ne,ne,sw,n,n,n,ne,n,s,n,n,n,n,sw,n,ne,n,n,n,n,n,ne,s,n,ne,se,ne,ne,n,ne,n,n,s,n,n,n,n,ne,se,sw,n,n,n,n,nw,n,nw,ne,n,n,ne,n,n,sw,s,n,ne,sw,n,s,n,s,n,ne,n,n,n,n,n,n,n,ne,ne,n,ne,sw,ne,ne,n,n,n,n,sw,ne,se,se,s,n,n,se,ne,n,ne,se,n,n,n,n,ne,ne,n,n,n,n,ne,n,s,ne,ne,n,n,n,se,ne,s,nw,n,ne,se,ne,n,sw,n,sw,ne,sw,ne,ne,n,nw,n,n,n,n,n,ne,n,s,s,n,ne,n,ne,n,ne,s,ne,ne,n,n,sw,ne,n,n,n,n,n,n,n,n,ne,se,sw,n,n,s,nw,n,n,n,n,ne,n,ne,sw,n,n,n,ne,nw,sw,nw,s,n,n,s,se,n,n,n,ne,n,ne,n,nw,se,n,n,n,n,nw,n,ne,sw,n,ne,se,n,n,ne,n,n,ne,n,n,n,n,ne,n,nw,n,n,n,n,n,n,n,n,n,n,s,s,n,n,n,ne,sw,n,sw,s,n,n,n,n,n,s,ne,n,se,n,n,s,n,sw,n,n,n,n,n,nw,n,n,n,n,se,s,nw,n,n,ne,n,n,n,sw,n,ne,ne,n,n,s,sw,nw,n,sw,n,se,n,n,s,n,n,sw,n,n,n,n,nw,n,n,ne,n,ne,s,n,ne,sw,n,n,n,n,n,nw,n,s,n,nw,n,n,n,ne,sw,n,n,s,nw,n,nw,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,ne,n,ne,n,n,n,nw,sw,se,n,n,n,n,ne,ne,n,n,n,n,ne,ne,n,ne,n,n,ne,n,n,n,n,nw,n,n,n,sw,n,n,n,n,s,nw,ne,se,nw,s,n,n,n,n,n,se,n,n,sw,ne,n,n,n,n,n,se,n,n,n,n,n,n,n,n,nw,n,n,n,n,n,s,sw,n,n,s,n,s,n,n,n,n,ne,nw,nw,n,ne,n,n,n,n,n,n,n,s,n,n,n,nw,n,n,n,n,n,n,n,se,sw,n,n,nw,nw,n,n,s,s,n,nw,n,n,n,n,n,ne,n,n,n,n,ne,n,n,n,n,n,n,n,n,sw,n,n,n,n,sw,n,n,n,n,n,n,nw,n,sw,nw,sw,se,n,sw,se,sw,se,n,se,n,n,n,s,n,n,ne,nw,n,se,n,ne,n,n,nw,sw,n,n,ne,n,n,n,se,nw,nw,n,n,n,n,ne,n,n,n,s,se,n,n,n,n,se,n,ne,sw,s,n,s,n,n,ne,se,n,sw,nw,n,n,n,nw,sw,n,n,ne,s,sw,nw,n,sw,ne,n,n,nw,n,n,n,nw,n,n,nw,n,n,n,s,n,n,nw,n,n,se,n,n,n,ne,n,ne,n,nw,n,n,ne,n,n,n,sw,ne,sw,n,n,sw,n,n,n,ne,n,n,n,n,nw,n,n,s,n,nw,n,n,n,n,nw,n,n,n,nw,n,n,s,n,n,n,n,n,nw,se,n,n,nw,sw,n,n,n,n,sw,n,se,n,n,s,n,n,n,n,n,n,n,n,n,n,n,nw,nw,n,nw,nw,n,n,nw,n,n,n,n,n,n,n,n,n,nw,n,n,ne,nw,n,sw,nw,n,n,sw,n,n,nw,n,n,ne,n,se,sw,sw,n,n,n,nw,se,se,s,n,n,n,s,n,n,n,n,n,s,n,n,n,n,n,n,n,se,n,n,se,sw,n,n,nw,n,n,n,sw,ne,n,n,n,s,n,n,n,s,s,n,n,s,n,nw,ne,nw,ne,nw,nw,n,ne,n,n,sw,n,n,se,nw,n,se,nw,n,n,n,nw,nw,n,n,nw,s,nw,n,ne,n,nw,n,nw,nw,n,n,n,n,n,sw,nw,ne,n,s,n,nw,n,nw,n,n,n,n,nw,nw,n,nw,n,n,n,n,n,n,n,n,n,n,sw,nw,s,n,n,se,se,n,nw,n,n,s,n,se,nw,n,n,nw,n,sw,se,sw,nw,nw,n,n,n,n,sw,n,se,n,n,sw,sw,nw,nw,n,nw,n,nw,n,se,se,n,ne,n,n,n,sw,n,n,sw,n,s,n,nw,n,n,n,s,n,nw,n,ne,sw,n,s,s,nw,sw,ne,n,ne,ne,n,n,nw,nw,nw,nw,s,nw,nw,n,n,n,n,n,n,n,nw,ne,n,n,n,n,sw,n,n,n,ne,sw,sw,n,ne,n,n,nw,ne,n,nw,n,n,n,n,n,n,n,nw,ne,se,n,n,nw,ne,n,s,s,n,s,nw,n,ne,n,nw,n,n,sw,nw,s,s,nw,nw,n,nw,n,se,n,n,n,n,nw,sw,nw,se,nw,sw,n,nw,nw,n,n,n,nw,n,ne,n,n,nw,nw,nw,se,s,nw,n,nw,nw,n,nw,n,n,n,nw,sw,n,n,n,ne,nw,n,n,n,nw,n,n,n,n,nw,n,nw,n,n,n,n,n,s,n,n,n,n,se,n,n,nw,n,n,nw,nw,se,n,nw,n,n,n,nw,se,nw,s,nw,n,nw,nw,n,nw,n,nw,nw,nw,sw,nw,ne,nw,sw,n,ne,ne,n,n,n,sw,n,n,nw,s,n,nw,ne,nw,sw,nw,sw,n,nw,nw,n,nw,nw,nw,sw,nw,n,nw,nw,n,nw,nw,sw,nw,s,n,nw,nw,n,n,nw,nw,n,n,sw,n,se,n,n,n,n,n,nw,nw,n,nw,nw,nw,nw,n,nw,s,se,nw,s,nw,ne,n,nw,nw,n,n,s,n,s,n,nw,s,n,nw,n,ne,s,n,nw,n,n,s,n,n,n,n,n,se,nw,n,n,sw,se,n,nw,n,n,nw,n,n,n,n,nw,ne,s,n,nw,n,n,nw,n,n,sw,n,n,nw,nw,nw,nw,nw,n,sw,se,nw,n,n,nw,nw,sw,s,nw,n,nw,n,n,n,ne,nw,n,nw,nw,n,n,nw,s,nw,nw,nw,ne,nw,nw,nw,nw,s,nw,n,n,nw,n,nw,n,nw,nw,nw,nw,nw,ne,nw,n,nw,nw,n,n,nw,nw,se,n,s,nw,sw,nw,nw,n,n,nw,ne,nw,nw,n,n,se,ne,nw,s,n,n,n,n,sw,se,nw,n,nw,nw,ne,n,nw,n,n,n,n,n,n,n,se,nw,nw,nw,ne,nw,nw,nw,s,n,nw,sw,se,nw,nw,n,nw,nw,n,nw,nw,nw,nw,ne,sw,se,n,sw,s,nw,n,n,se,nw,nw,ne,nw,n,n,nw,ne,s,n,nw,nw,nw,se,n,s,se,s,nw,n,s,nw,nw,nw,sw,n,n,nw,nw,n,nw,nw,n,nw,n,sw,ne,nw,n,s,n,nw,nw,sw,nw,n,sw,nw,n,nw,s,nw,n,nw,nw,sw,nw,nw,nw,nw,nw,n,n,n,nw,nw,nw,nw,n,nw,n,n,n,n,n,se,n,se,nw,nw,nw,nw,n,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,nw,sw,n,ne,n,se,nw,s,n,nw,nw,n,nw,nw,s,n,nw,nw,nw,nw,nw,se,nw,nw,n,nw,n,nw,se,nw,n,n,n,nw,n,nw,n,sw,n,n,nw,nw,n,nw,sw,nw,n,n,nw,nw,n,sw,nw,n,nw,nw,nw,nw,nw,nw,nw,s,nw,nw,nw,n,nw,n,nw,nw,nw,nw,nw,nw,nw,se,n,se,nw,s,nw,nw,n,nw,n,nw,n,ne,nw,nw,s,n,nw,n,se,n,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,n,n,se,n,nw,nw,nw,nw,ne,se,nw,ne,ne,nw,nw,nw,nw,nw,n,sw,s,sw,nw,n,sw,nw,nw,nw,s,nw,nw,sw,sw,n,nw,nw,nw,n,nw,ne,nw,nw,nw,n,n,nw,nw,nw,se,n,nw,n,n,n,se,nw,n,n,nw,nw,nw,nw,nw,nw,nw,ne,n,nw,nw,nw,nw,nw,ne,se,s,nw,nw,nw,sw,nw,nw,nw,n,nw,nw,nw,nw,s,nw,nw,nw,nw,nw,se,nw,s,nw,se,se,s,nw,nw,n,n,nw,nw,nw,nw,nw,n,nw,nw,nw,nw,nw,n,s,nw,n,n,nw,nw,n,nw,n,s,sw,nw,s,nw,nw,n,se,nw,ne,nw,n,sw,ne,sw,s,sw,n,n,nw,se,nw,nw,nw,n,ne,se,ne,nw,nw,nw,s,sw,n,nw,nw,s,nw,nw,nw,nw,nw,n,nw,nw,nw,s,nw,se,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,n,sw,nw,ne,nw,n,nw,se,n,se,sw,nw,nw,nw,se,n,n,nw,nw,nw,nw,nw,nw,ne,nw,ne,n,sw,n,nw,s,nw,nw,nw,s,nw,nw,sw,nw,nw,n,n,nw,s,nw,nw,s,nw,se,s,nw,sw,n,se,nw,nw,n,s,n,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,ne,nw,nw,nw,s,nw,sw,nw,nw,nw,n,nw,nw,sw,nw,ne,nw,n,nw,nw,nw,nw,nw,n,nw,n,nw,nw,s,nw,ne,nw,n,nw,nw,ne,n,nw,ne,n,nw,nw,nw,nw,ne,nw,nw,nw,nw,sw,nw,nw,nw,n,n,nw,nw,nw,ne,n,s,s,nw,nw,nw,nw,nw,nw,nw,nw,n,ne,nw,nw,nw,n,sw,nw,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,n,n,nw,s,nw,nw,nw,nw,nw,nw,nw,nw,nw,n,nw,ne,ne,nw,nw,nw,nw,nw,nw,nw,nw,ne,nw,n,nw,se,s,s,nw,se,nw,nw,nw,nw,n,s,nw,s,nw,ne,nw,nw,nw,sw,nw,sw,nw,nw,nw,ne,nw,nw,nw,nw,nw,ne,nw,nw,nw,sw,nw,nw,nw,nw,nw,nw,nw,nw,se,nw,s,nw,nw,se,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,s,n,nw,ne,nw,nw,se,ne,nw,nw,ne,nw,nw,nw,nw,nw,se,nw,nw,nw,s,s,ne,ne,ne,se,se,sw,se,se,s,s,s,s,s,s,sw,sw,sw,sw,ne,ne,sw,nw,sw,nw,nw,sw,ne,sw,sw,nw,sw,nw,sw,nw,ne,nw,nw,nw,nw,n,ne,sw,nw,nw,nw,n,ne,n,n,n,n,se,nw,se,nw,n,n,n,nw,n,n,n,n,s,n,n,ne,n,n,n,n,n,se,n,n,n,se,n,n,ne,ne,n,ne,ne,ne,se,nw,n,n,ne,nw,n,ne,ne,ne,sw,ne,ne,ne,ne,ne,ne,ne,s,nw,ne,ne,se,ne,ne,se,se,ne,nw,ne,ne,ne,sw,ne,ne,ne,se,se,se,ne,se,ne,se,se,se,se,ne,se,se,ne,se,se,se,se,se,se,sw,s,se,se,s,sw,se,se,se,se,se,se,se,se,se,se,ne,ne,se,se,ne,se,s,s,s,se,sw,se,sw,se,se,s,ne,ne,se,n,se,se,s,nw,n,se,s,se,se,se,se,se,se,se,se,s,se,s,s,se,s,s,s,s,ne,s,ne,n,se,s,nw,nw,s,ne,s,s,s,s,n,s,s,s,s,n,s,n,s,n,s,se,s,s,sw,s,s,nw,s,se,s,s,ne,s,s,s,s,n,sw,s,sw,s,s,sw,n,n,s,ne,sw,ne,n,s,s,s,s,sw,sw,s,sw,s,se,sw,se,sw,nw,s,sw,n,sw,sw,sw,s,nw,sw,s,sw,s,ne,sw,s,sw,s,n,ne,sw,ne,sw,sw,se,sw,n,sw,nw,sw,sw,sw,sw,ne,sw,sw,nw,s,n,nw,s,se,sw,sw,s,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,nw,sw,nw,sw,s,s,sw,sw,nw,se,se,sw,sw,nw,sw,s,sw,nw,sw,sw,nw,sw,s,sw,nw,s,se,sw,ne,sw,nw,sw,nw,sw,n,nw,sw,sw,sw,sw,n,sw,nw,n,sw,sw,sw,nw,sw,n,nw,nw,sw,sw,nw,nw,sw,sw,nw,sw,sw,sw,ne,sw,nw,sw,nw,nw,n,nw,ne,n,nw,sw,nw,sw,nw,nw,nw,nw,nw,nw,se,sw,nw,sw,nw,sw,sw,se,sw,sw,s,s,nw,nw,nw,nw,nw,nw,nw,n,sw,nw,nw,s,sw,nw,nw,nw,sw,ne,sw,se,nw,nw,n,nw,nw,nw,nw,sw,nw,nw,nw,nw,sw,nw,se,sw,nw,nw,nw,nw,nw,nw,nw,nw,se,nw,nw,nw,nw,nw,s,nw,ne,nw,n,nw,nw,ne,nw,nw,ne,sw,nw,se,nw,nw,nw,ne,nw,n,nw,nw,ne,sw,nw,nw,nw,n,nw,nw,nw,se,nw,nw,n,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,nw,nw,ne,n,nw,nw,n,nw,n,nw,s,nw,nw,n,nw,nw,se,n,nw,se,nw,nw,nw,ne,n,nw,n,sw,n,nw,nw,n,nw,n,n,nw,nw,s,sw,n,nw,n,nw,nw,n,n,se,nw,nw,nw,nw,nw,n,n,n,n,sw,n,n,n,nw,n,n,n,n,n,n,ne,n,n,ne,nw,sw,ne,s,n,n,n,n,nw,n,ne,nw,nw,n,n,sw,n,ne,n,n,n,s,nw,sw,n,n,n,nw,n,sw,n,nw,se,n,n,se,n,n,n,nw,n,n,n,n,n,n,nw,nw,n,n,n,nw,ne,se,s,n,n,n,n,se,nw,nw,n,n,n,n,n,n,n,n,ne,nw,n,n,n,n,n,n,sw,nw,s,sw,n,n,n,ne,ne,n,n,n,n,n,n,n,ne,n,nw,n,ne,n,n,se,n,n,n,ne,n,nw,n,sw,n,nw,n,n,n,n,n,n,n,n,n,ne,ne,n,n,n,ne,n,se,n,n,se,n,n,n,se,sw,se,n,n,n,nw,se,n,ne,n,ne,n,ne,ne,n,n,se,n,n,n,n,n,ne,ne,nw,n,ne,n,n,n,ne,sw,n,n,s,n,n,s,ne,n,ne,n,n,ne,n,n,ne,se,sw,n,s,ne,n,sw,n,n,n,se,ne,n,n,n,s,sw,se,ne,s,se,ne,n,ne,n,se,n,ne,ne,ne,ne,ne,ne,n,n,ne,ne,ne,nw,nw,ne,ne,ne,sw,n,ne,n,ne,n,ne,sw,n,n,n,s,ne,n,ne,ne,ne,se,sw,ne,se,sw,ne,ne,se,sw,ne,n,n,ne,ne,ne,ne,ne,n,n,n,s,n,n,n,ne,ne,ne,ne,ne,ne,s,ne,ne,ne,ne,ne,ne,n,n,n,ne,se,nw,ne,ne,s,ne,n,n,n,ne,ne,n,ne,n,se,se,n,ne,ne,ne,se,ne,ne,s,s,ne,ne,ne,ne,n,sw,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,n,ne,nw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,ne,s,ne,sw,se,ne,sw,n,n,ne,n,se,ne,ne,ne,se,ne,ne,ne,s,ne,ne,n,se,ne,nw,ne,ne,ne,ne,ne,ne,ne,s,ne,ne,n,se,se,se,se,ne,s,ne,ne,ne,ne,ne,ne,sw,ne,ne,ne,ne,ne,ne,nw,ne,ne,ne,s,se,ne,ne,ne,n,n,ne,se,ne,ne,se,ne,ne,se,se,ne,ne,ne,ne,ne,ne,se,nw,se,sw,ne,ne,ne,nw,ne,ne,ne,n,ne,se,sw,nw,s,ne,se,ne,se,s,ne,ne,ne,ne,ne,s,ne,se,n,ne,ne,se,se,ne,ne,ne,ne,n,ne,ne,se,ne,ne,ne,ne,se,ne,ne,ne,ne,ne,se,ne,ne,ne,nw,ne,ne,se,ne,ne,se,se,sw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,sw,se,ne,n,n,n,se,ne,s,se,sw,sw,ne,ne,ne,sw,ne,se,ne,ne,ne,ne,ne,ne,nw,se,se,se,s,se,ne,s,se,ne,se,s,ne,ne,se,n,se,se,ne,n,ne,ne,se,nw,ne,se,se,nw,sw,s,ne,sw,se,se,ne,ne,s,se,ne,ne,ne,se,nw,ne,se,se,sw,nw,sw,se,ne,ne,se,se,se,se,ne,ne,ne,s,s,se,se,s,se,ne,se,ne,se,ne,ne,se,ne,se,ne,se,se,se,ne,se,se,se,s,se,se,se,n,se,se,ne,ne,se,ne,ne,se,se,se,se,ne,se,se,se,s,ne,se,ne,s,se,se,se,nw,ne,se,n,se,se,se,nw,se,se,nw,s,se,ne,se,nw,se,ne,se,ne,nw,se,se,nw,ne,se,se,n,nw,sw,se,ne,se,n,se,ne,ne,se,nw,se,ne,s,se,ne,se,se,ne,ne,se,n,ne,nw,se,ne,s,se,se,se,s,se,ne,se,se,se,se,se,nw,se,se,se,ne,n,se,ne,se,ne,se,n,se,nw,se,ne,n,nw,ne,ne,se,ne,se,nw,s,se,s,se,se,ne,se,s,se,n,se,se,se,se,se,s,se,s,se,se,se,ne,se,se,ne,se,se,nw,se,se,se,se,se,se,se,se,se,se,se,se,se,ne,s,se,se,se,se,s,se,se,se,n,se,sw,se,nw,se,se,n,ne,sw,se,se,se,se,ne,se,se,se,se,se,se,se,se,se,se,n,se,se,se,n,ne,s,se,se,se,se,se,se,se,se,se,se,se,n,se,s,ne,se,ne,se,se,se,se,se,ne,s,s,se,s,ne,se,se,s,se,se,se,se,se,se,sw,se,se,s,se,se,se,se,se,se,se,se,se,se,se,se,se,se,se,sw,se,se,se,nw,se,se,s,se,n,se,se,se,se,se,se,se,se,se,s,se,n,se,ne,se,s,s,s,se,nw,se,se,se,s,se,se,se,n,ne,se,s,se,nw,se,se,s,s,se,se,se,se,se,se,s,se,nw,se,s,se,s,s,se,se,s,se,se,ne,se,n,se,s,s,s,ne,se,s,se,s,se,se,se,n,se,sw,se,s,se,n,s,se,s,se,se,se,se,s,se,s,se,s,se,s,s,se,se,se,se,se,se,s,se,sw,se,se,nw,s,n,se,sw,s,se,se,sw,ne,sw,nw,s,s,s,s,nw,se,se,se,s,se,se,se,se,ne,s,se,nw,s,se,se,se,s,se,se,s,sw,s,s,se,se,ne,s,se,se,s,se,s,se,s,s,se,se,se,n,se,sw,s,se,s,s,s,se,se,se,ne,se,s,s,s,se,s,ne,se,n,se,s,s,s,s,s,s,se,se,se,se,nw,se,s,s,se,s,se,s,se,s,se,sw,s,nw,se,se,se,se,se,s,s,sw,se,nw,s,se,s,s,s,ne,s,s,s,s,se,s,se,s,nw,se,s,se,s,se,se,nw,nw,se,nw,nw,s,s,nw,se,s,s,nw,se,s,se,se,se,s,s,se,se,ne,s,s,s,s,se,s,se,se,se,se,ne,s,se,se,s,s,se,se,se,nw,s,ne,s,se,s,s,s,s,s,s,ne,s,s,s,s,se,s,s,s,se,sw,se,s,s,se,se,ne,s,se,se,se,s,s,sw,s,s,nw,sw,sw,se,s,s,s,se,s,s,s,se,se,s,s,s,nw,se,se,se,nw,se,s,s,s,s,s,se,ne,se,s,se,s,s,ne,se,se,ne,s,s,s,ne,s,se,ne,se,s,s,s,s,s,s,s,s,s,sw,s,ne,s,s,se,se,se,s,sw,s,sw,s,s,s,n,nw,s,s,s,se,s,nw,se,se,s,s,s,s,s,ne,se,s,s,s,se,s,s,s,s,nw,s,sw,sw,s,s,s,se,ne,s,s,s,ne,s,s,s,n,s,s,s,ne,se,s,s,s,s,s,s,s,s,s,s,nw,s,se,s,s,ne,s,ne,se,s,s,sw,s,ne,s,s,s,se,se,s,s,nw,s,s,s,s,s,nw,s,s,s,nw,s,s,s,s,s,s,s,se,s,sw,s,se,ne,s,n,nw,se,s,s,s,se,s,se,s,n,s,s,ne,s,s,nw,nw,nw,s,s,s,s,nw,s,s,s,s,s,s,s,nw,s,s,s,s,sw,s,s,sw,n,nw,ne,s,s,s,s,n,s,s,s,n,sw,n,s,s,s,s,s,s,nw,s,n,se,s,s,s,ne,s,se,nw,sw,se,sw,s,s,s,s,s,s,sw,s,se,s,n,s,sw,s,s,sw,sw,s,se,s,sw,s,s,s,sw,s,ne,s,s,s,s,sw,s,s,s,s,nw,s,se,sw,se,nw,se,ne,s,s,s,n,sw,s,sw,s,s,s,s,s,s,s,s,s,s,sw,sw,s,se,s,nw,nw,s,ne,nw,s,n,se,n,n,s,s,ne,sw,s,se,s,sw,s,s,s,se,sw,s,sw,nw,sw,sw,s,se,s,n,ne,s,s,sw,sw,s,s,sw,sw,s,n,s,sw,s,sw,s,s,nw,sw,s,s,s,sw,ne,ne,sw,sw,s,sw,se,s,se,s,ne,se,s,s,nw,sw,s,ne,sw,ne,s,sw,s,s,s,s,s,s,s,s,s,n,se,s,s,s,s,s,s,s,sw,sw,s,n,sw,sw,sw,s,s,sw,s,ne,se,s,s,s,sw,s,s,s,sw,s,sw,s,sw,s,s,s,s,s,sw,s,sw,nw,sw,s,se,sw,s,nw,s,s,s,n,ne,sw,sw,s,s,s,s,sw,s,s,s,n,s,sw,n,s,s,sw,s,sw,s,sw,s,s,n,s,n,n,sw,sw,sw,sw,sw,sw,s,ne,ne,s,sw,s,sw,s,sw,se,sw,s,sw,sw,n,s,ne,sw,sw,s,sw,se,se,nw,sw,sw,se,ne,s,s,s,s,s,sw,sw,sw,n,s,se,s,s,n,s,sw,n,sw,sw,sw,ne,s,sw,sw,s,n,sw,n,s,s,s,ne,s,se,s,sw,ne,sw,sw,s,sw,sw,sw,s,s,se,s,sw,s,s,ne,sw,s,sw,sw,s,s,sw,ne,s,sw,sw,sw,sw,n,s,ne,ne,ne,s,sw,s,se,se,sw,s,sw,sw,n,sw,sw,nw,sw,s,sw,s,sw,s,sw,s,sw,sw,s,sw,sw,sw,n,s,sw,ne,sw,s,nw,s,s,sw,s,sw,nw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,s,s,s,s,n,s,sw,s,sw,sw,s,ne,s,nw,n,nw,s,sw,sw,sw,sw,sw,sw,sw,sw,s,s,n,sw,s,s,n,se,s,se,sw,s,sw,ne,sw,sw,sw,sw,s,sw,sw,ne,s,sw,sw,se,sw,s,n,s,s,sw,s,se,sw,sw,se,sw,sw,sw,nw,sw,sw,sw,nw,sw,s,s,s,nw,sw,s,n,sw,s,sw,n,sw,sw,s,sw,sw,s,s,nw,s,sw,sw,sw,ne,sw,sw,nw,s,ne,s,sw,sw,sw,sw,sw,n,sw,sw,sw,s,n,sw,s,sw,se,sw,sw,sw,sw,sw,sw,sw,s,sw,sw,ne,sw,s,sw,s,sw,sw,sw,n,sw,sw,sw,s,sw,sw,s,sw,sw,sw,sw,n,s,s,sw,ne,sw,se,n,sw,s,sw,n,sw,sw,sw,nw,sw,s,s,n,sw,s,sw,sw,sw,ne,sw,sw,nw,ne,n,sw,sw,sw,sw,s,sw,n,sw,s,s,sw,s,s,s,sw,sw,sw,s,sw,sw,s,s,sw,s,s,se,sw,sw,s,sw,sw,se,sw,s,se,sw,sw,sw,sw,se,sw,sw,sw,sw,s,sw,s,n,sw,sw,sw,n,n,sw,sw,nw,sw,sw,sw,se,sw,nw,sw,sw,sw,sw,sw,sw,sw,s,sw,n,nw,n,sw,nw,sw,sw,sw,sw,s,ne,sw,ne,sw,se,n,s,s,sw,sw,sw,n,se,s,sw,se,s,sw,sw,sw,ne,s,n,sw,sw,sw,sw,sw,s,sw,nw,sw,sw,sw,sw,sw,sw,nw,sw,nw,sw,s,sw,sw,sw,sw,se,sw,sw,sw,sw,sw,ne,se,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,nw,sw,s,sw,nw,sw,sw,sw,sw,n diff --git a/2017/d11/ex2/ex2.py b/2017/d11/ex2/ex2.py deleted file mode 100755 index 9355eaa..0000000 --- a/2017/d11/ex2/ex2.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python - -import enum -import sys -from collections.abc import Iterator -from typing import NamedTuple - - -class Point(NamedTuple): - x: int - y: int - - -class Direction(enum.StrEnum): - NORTH_WEST = "nw" - NORTH = "n" - NORTH_EAST = "ne" - SOUTH_EAST = "se" - SOUTH = "s" - SOUTH_WEST = "sw" - - # https://www.redblobgames.com/grids/hexagons/#coordinates-axial - def apply(self, p: Point) -> Point: - # (x, y) <=> (q, r) - match self: - case Direction.NORTH_WEST: - dx, dy = -1, 0 - case Direction.NORTH: - dx, dy = 0, -1 - case Direction.NORTH_EAST: - dx, dy = 1, -1 - case Direction.SOUTH_EAST: - dx, dy = 1, 0 - case Direction.SOUTH: - dx, dy = 0, 1 - case Direction.SOUTH_WEST: - dx, dy = -1, 1 - return Point(p.x + dx, p.y + dy) - - -def solve(input: str) -> int: - def parse(input: str) -> list[Direction]: - return [Direction(dir) for dir in input.strip().split(",")] - - # https://www.redblobgames.com/grids/hexagons/#distances-axial - def hex_dist(a: Point, b: Point) -> int: - dx, dy = a.x - b.x, a.y - b.y - return (abs(dx) + abs(dx + dy) + abs(dy)) // 2 - - def walk(directions: list[Direction]) -> Iterator[Point]: - pos = Point(0, 0) - for dir in directions: - pos = dir.apply(pos) - yield pos - - directions = parse(input) - return max(hex_dist(p, Point(0, 0)) for p in walk(directions)) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d11/ex2/input b/2017/d11/ex2/input deleted file mode 100644 index 093ccc2..0000000 --- a/2017/d11/ex2/input +++ /dev/null @@ -1 +0,0 @@ -nw,n,ne,sw,s,s,se,se,ne,s,se,se,ne,ne,s,se,s,ne,sw,ne,ne,s,se,nw,n,ne,nw,n,n,ne,n,n,ne,n,ne,n,n,n,n,nw,n,n,nw,n,nw,n,s,sw,sw,sw,n,nw,n,nw,nw,n,nw,nw,nw,nw,nw,nw,se,nw,nw,nw,se,sw,sw,nw,nw,sw,sw,nw,nw,nw,nw,nw,s,sw,nw,s,sw,sw,nw,sw,sw,nw,sw,sw,nw,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,s,se,sw,sw,nw,sw,sw,se,sw,sw,s,sw,sw,sw,s,n,s,sw,sw,s,sw,s,sw,ne,sw,s,s,s,n,sw,s,s,sw,s,s,s,nw,s,s,n,nw,ne,n,s,se,n,s,s,s,s,ne,s,s,s,sw,s,ne,n,s,se,s,se,s,s,s,s,ne,s,nw,se,se,ne,nw,se,s,nw,s,s,s,nw,s,sw,s,s,se,nw,se,sw,se,sw,s,s,sw,se,se,s,n,se,se,se,se,se,se,s,se,s,se,se,nw,s,n,se,se,se,se,n,nw,se,se,se,se,se,se,se,se,se,se,se,ne,se,se,sw,se,s,se,ne,se,n,se,ne,se,se,se,se,se,n,se,se,ne,ne,ne,ne,se,se,ne,se,se,s,ne,se,se,n,se,sw,s,se,se,ne,ne,ne,s,s,ne,se,nw,nw,s,se,ne,ne,ne,se,sw,ne,se,ne,ne,ne,se,n,s,n,se,ne,ne,se,se,nw,ne,se,ne,nw,ne,se,ne,ne,n,ne,ne,ne,ne,ne,se,ne,nw,se,ne,ne,ne,s,ne,ne,ne,ne,ne,sw,ne,ne,ne,se,ne,ne,ne,ne,nw,ne,ne,s,sw,ne,ne,ne,ne,ne,n,s,sw,n,ne,s,ne,nw,sw,sw,s,ne,ne,ne,ne,sw,n,ne,ne,nw,n,ne,n,n,s,n,ne,nw,ne,n,ne,ne,ne,ne,sw,n,ne,sw,sw,ne,nw,ne,ne,n,ne,ne,ne,n,n,s,ne,ne,ne,n,ne,ne,n,n,n,n,nw,n,n,ne,n,ne,ne,n,ne,ne,ne,ne,ne,n,n,n,ne,n,n,n,n,n,n,n,n,n,n,ne,n,n,nw,ne,n,s,nw,se,ne,se,n,n,n,sw,n,n,ne,sw,n,n,s,s,n,n,n,ne,nw,nw,n,n,n,s,se,n,n,n,nw,n,nw,n,n,n,n,n,se,n,n,n,s,sw,n,n,n,n,n,n,n,n,n,n,n,se,n,n,n,nw,n,n,se,ne,ne,nw,n,n,n,nw,n,n,n,ne,s,n,nw,ne,n,s,n,n,n,n,sw,n,nw,n,n,n,ne,s,n,s,se,n,n,n,nw,nw,n,nw,sw,n,n,nw,n,n,nw,nw,n,n,sw,nw,nw,nw,n,se,nw,n,nw,nw,nw,n,n,nw,n,n,nw,nw,n,ne,nw,nw,sw,n,n,n,nw,nw,n,n,n,n,n,sw,nw,nw,n,nw,n,nw,nw,nw,n,nw,n,n,n,n,nw,nw,nw,s,s,n,nw,sw,nw,n,nw,ne,n,nw,ne,ne,sw,n,se,nw,sw,s,nw,nw,nw,nw,nw,ne,nw,nw,nw,ne,nw,se,n,n,nw,se,nw,nw,nw,n,nw,se,nw,nw,nw,nw,nw,nw,nw,nw,nw,ne,nw,nw,nw,se,nw,nw,nw,nw,s,s,s,nw,nw,nw,nw,s,n,nw,nw,se,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,nw,ne,sw,sw,sw,nw,nw,sw,nw,nw,ne,sw,ne,nw,nw,nw,nw,nw,s,nw,nw,nw,nw,nw,se,sw,nw,n,sw,ne,nw,nw,nw,nw,nw,sw,nw,se,sw,sw,sw,nw,s,nw,nw,s,ne,nw,nw,nw,nw,nw,sw,nw,s,sw,nw,nw,se,sw,sw,nw,nw,sw,sw,n,sw,nw,ne,se,nw,nw,ne,nw,nw,sw,nw,nw,se,sw,nw,sw,nw,nw,ne,nw,s,nw,nw,nw,nw,nw,nw,nw,nw,nw,sw,n,sw,sw,se,sw,nw,nw,nw,nw,nw,sw,nw,nw,nw,sw,nw,nw,se,sw,nw,nw,n,nw,sw,nw,nw,nw,nw,n,sw,sw,sw,se,nw,nw,sw,sw,sw,sw,nw,nw,sw,sw,sw,nw,sw,sw,se,sw,sw,ne,sw,nw,s,s,se,ne,sw,sw,sw,sw,nw,nw,nw,sw,nw,nw,nw,s,nw,nw,nw,sw,s,s,nw,sw,sw,ne,n,s,nw,nw,sw,nw,nw,nw,sw,sw,ne,sw,sw,nw,n,sw,sw,nw,se,sw,sw,se,ne,sw,sw,sw,nw,sw,sw,sw,sw,nw,nw,nw,nw,n,sw,sw,se,n,nw,nw,sw,sw,sw,sw,nw,se,sw,sw,se,n,s,sw,sw,n,n,sw,sw,n,sw,sw,sw,sw,sw,se,sw,sw,sw,se,nw,sw,s,sw,sw,sw,ne,sw,sw,sw,sw,sw,sw,sw,n,sw,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,ne,sw,s,sw,sw,sw,sw,sw,sw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,n,s,s,sw,n,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,n,sw,s,sw,sw,sw,sw,sw,sw,ne,sw,se,sw,sw,nw,sw,sw,sw,s,sw,sw,sw,sw,sw,s,sw,sw,ne,sw,sw,sw,sw,n,sw,n,sw,n,sw,sw,sw,sw,sw,sw,n,s,se,s,ne,sw,sw,s,s,s,se,s,nw,s,sw,s,s,s,se,s,sw,sw,se,sw,sw,sw,s,se,nw,sw,sw,se,s,s,sw,sw,s,sw,sw,s,sw,sw,ne,n,sw,sw,nw,ne,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,n,sw,s,n,s,s,sw,sw,nw,se,n,sw,sw,sw,nw,s,sw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,s,s,sw,s,n,s,sw,sw,sw,s,s,nw,s,sw,s,s,s,sw,sw,s,se,se,nw,sw,sw,sw,s,s,sw,sw,ne,sw,s,sw,s,s,s,sw,s,s,sw,sw,sw,nw,sw,s,sw,sw,n,sw,sw,sw,s,sw,sw,sw,sw,s,nw,nw,sw,sw,s,s,n,sw,sw,se,s,sw,s,n,s,sw,s,sw,s,sw,sw,sw,sw,sw,n,s,se,s,s,s,s,s,ne,s,sw,n,sw,s,s,sw,s,sw,s,sw,ne,s,s,nw,n,s,s,n,se,sw,sw,s,s,s,s,s,s,s,s,sw,se,sw,s,nw,s,s,s,s,s,se,s,s,sw,sw,ne,s,s,s,sw,ne,s,sw,s,s,s,s,s,s,n,s,s,s,s,sw,s,s,s,sw,sw,s,sw,sw,nw,s,ne,s,s,s,se,sw,se,s,s,s,sw,sw,s,sw,s,s,s,n,s,sw,s,sw,s,s,nw,s,s,n,nw,s,ne,s,sw,s,s,s,s,ne,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,nw,s,s,sw,nw,s,n,s,s,nw,sw,s,se,s,s,s,s,sw,s,ne,s,s,s,s,s,s,s,s,s,sw,se,s,s,s,s,s,s,s,s,n,s,s,s,s,ne,n,ne,s,sw,n,s,s,s,s,s,s,s,s,ne,s,s,nw,se,s,s,s,s,s,s,ne,s,s,s,ne,s,s,s,s,s,se,s,s,s,s,s,s,s,ne,s,s,s,s,s,s,s,se,s,s,s,s,se,s,s,ne,s,n,ne,s,s,s,nw,ne,se,s,s,s,n,sw,s,s,s,s,s,s,s,sw,s,s,se,s,s,s,s,n,s,se,s,s,nw,s,s,sw,s,sw,se,s,s,s,s,s,s,s,s,se,se,se,s,se,s,s,s,s,se,s,s,se,s,se,s,n,s,s,se,s,sw,se,s,s,se,se,s,s,se,s,se,se,nw,n,s,nw,ne,ne,s,s,sw,s,se,nw,ne,s,s,se,s,s,s,s,s,s,s,se,s,s,se,s,se,s,ne,se,se,s,se,se,s,nw,s,ne,sw,s,s,se,s,s,se,s,sw,s,s,se,s,sw,n,s,nw,se,s,n,nw,s,s,se,s,s,nw,s,se,s,ne,s,s,se,s,se,s,nw,se,ne,s,nw,se,s,se,ne,s,s,sw,s,s,s,se,se,se,s,s,s,s,se,nw,s,se,s,s,s,s,n,se,s,n,se,se,se,se,nw,sw,nw,se,se,se,s,se,n,s,se,s,nw,ne,se,s,se,s,se,s,ne,se,nw,se,se,ne,s,nw,sw,n,se,se,se,n,se,se,se,nw,se,sw,s,n,se,s,sw,se,s,s,se,s,se,se,se,nw,se,se,s,nw,se,n,se,se,se,s,nw,se,se,s,ne,se,se,s,s,s,se,se,ne,s,nw,s,se,se,sw,se,se,se,se,s,se,se,se,s,s,se,nw,se,se,se,s,se,s,nw,se,se,se,ne,se,se,se,se,se,se,se,se,se,se,s,ne,se,ne,se,n,sw,s,sw,se,sw,se,se,se,sw,se,se,s,se,se,s,nw,se,nw,se,se,se,se,se,se,n,se,se,se,se,s,se,nw,se,se,se,se,se,nw,nw,se,se,se,se,s,sw,s,s,se,se,s,se,se,nw,se,se,se,s,s,s,se,se,n,se,nw,sw,n,se,se,se,se,se,se,se,se,s,ne,se,ne,se,se,se,se,nw,se,se,s,se,n,se,se,se,se,se,se,s,se,s,s,ne,s,se,sw,ne,se,se,se,sw,se,se,se,se,s,nw,n,se,se,se,se,s,se,se,se,se,n,se,se,se,se,se,nw,ne,se,se,n,se,s,se,se,s,se,n,se,se,ne,se,s,s,ne,s,se,se,se,se,se,se,nw,nw,se,se,se,se,n,se,se,se,se,s,se,s,se,se,se,se,se,n,se,se,se,se,se,se,se,n,n,sw,se,n,se,se,se,se,se,se,se,se,s,sw,se,nw,nw,ne,se,se,se,se,se,se,ne,se,ne,se,se,ne,ne,se,sw,se,se,se,ne,se,se,se,ne,se,nw,se,se,se,sw,se,nw,se,se,se,se,ne,sw,se,se,se,se,se,se,s,ne,sw,se,s,s,se,se,nw,se,ne,se,se,se,se,se,se,s,se,se,se,se,se,se,se,se,sw,ne,sw,se,se,se,se,nw,se,se,se,se,ne,se,se,se,n,se,ne,nw,se,se,se,sw,se,se,se,se,se,ne,se,se,sw,se,se,n,n,se,se,se,se,se,se,se,se,nw,se,s,s,se,se,s,se,ne,se,n,n,se,nw,se,se,se,se,nw,sw,s,ne,nw,se,ne,se,n,se,se,se,ne,se,se,sw,s,se,se,n,ne,se,se,ne,se,se,ne,se,se,se,se,se,se,se,se,se,nw,n,sw,se,se,se,se,ne,se,se,se,se,se,se,se,ne,se,ne,se,se,n,se,se,n,ne,n,se,se,se,se,ne,se,se,se,sw,se,se,ne,se,s,se,ne,se,n,se,se,se,se,sw,se,ne,se,s,se,se,ne,n,se,se,nw,se,se,nw,nw,ne,se,se,sw,se,se,n,ne,n,ne,s,se,se,se,se,ne,s,nw,se,se,se,ne,se,se,sw,ne,s,se,ne,se,se,se,se,sw,se,se,sw,ne,ne,ne,se,se,se,ne,ne,ne,ne,se,se,ne,ne,se,s,nw,se,se,se,se,ne,se,se,se,se,se,n,se,se,ne,se,se,se,se,se,se,s,se,n,se,ne,ne,se,s,ne,ne,s,ne,ne,se,se,se,ne,se,ne,se,se,ne,sw,ne,ne,ne,se,se,ne,ne,se,n,se,nw,se,n,ne,ne,ne,se,se,se,ne,ne,se,s,ne,ne,se,ne,se,nw,ne,ne,ne,ne,n,se,ne,se,ne,se,se,ne,ne,s,ne,ne,ne,ne,se,ne,ne,se,ne,ne,se,sw,s,s,se,se,se,ne,se,ne,ne,ne,ne,ne,se,se,ne,se,se,se,ne,ne,nw,sw,se,se,sw,sw,ne,se,se,se,se,s,nw,sw,ne,se,se,ne,ne,ne,ne,se,se,se,se,se,ne,se,ne,ne,ne,s,ne,ne,n,ne,ne,ne,s,n,se,se,nw,nw,ne,ne,n,ne,ne,ne,se,se,ne,se,se,sw,ne,se,ne,ne,se,se,ne,se,s,ne,ne,ne,n,sw,ne,ne,ne,ne,ne,se,se,s,nw,se,ne,ne,ne,n,ne,ne,n,ne,se,sw,ne,ne,se,sw,ne,ne,s,ne,ne,nw,sw,se,ne,ne,sw,n,ne,ne,ne,sw,ne,s,ne,ne,se,ne,nw,ne,ne,ne,se,n,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,se,se,ne,ne,ne,ne,ne,s,ne,ne,ne,ne,se,ne,ne,ne,ne,ne,ne,ne,ne,ne,n,n,se,ne,ne,ne,ne,ne,sw,s,ne,ne,sw,n,ne,n,nw,se,ne,se,ne,ne,ne,ne,se,ne,ne,se,ne,se,se,ne,ne,s,n,sw,se,sw,se,ne,ne,nw,ne,se,ne,ne,ne,se,ne,ne,se,nw,ne,ne,ne,ne,ne,ne,se,se,ne,se,ne,s,se,nw,se,ne,ne,ne,se,s,ne,ne,ne,se,se,se,se,se,ne,se,nw,se,ne,ne,ne,n,n,n,nw,ne,s,ne,se,ne,ne,nw,s,ne,nw,ne,nw,se,ne,ne,n,ne,ne,ne,sw,ne,se,n,ne,ne,ne,ne,se,s,ne,ne,sw,ne,ne,s,ne,se,ne,ne,ne,ne,ne,ne,ne,se,ne,nw,ne,n,ne,s,ne,ne,ne,nw,ne,n,ne,nw,ne,ne,ne,ne,s,ne,ne,n,ne,ne,ne,ne,sw,ne,ne,ne,se,ne,se,ne,se,nw,ne,ne,ne,sw,n,n,nw,nw,ne,ne,ne,ne,se,ne,ne,ne,ne,ne,s,ne,ne,sw,ne,ne,s,ne,ne,ne,ne,s,ne,ne,ne,ne,ne,ne,ne,ne,ne,s,ne,ne,s,sw,ne,nw,ne,ne,ne,ne,ne,ne,ne,ne,s,ne,sw,se,ne,se,ne,ne,n,ne,s,ne,ne,ne,n,ne,n,n,ne,ne,ne,ne,ne,n,ne,se,ne,se,ne,ne,s,ne,n,ne,ne,ne,ne,se,ne,nw,ne,s,sw,ne,ne,ne,sw,ne,ne,s,ne,ne,s,se,ne,s,n,ne,ne,ne,ne,ne,se,ne,ne,n,ne,ne,nw,nw,ne,ne,ne,ne,nw,ne,n,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,s,n,ne,n,n,ne,nw,nw,ne,n,nw,ne,ne,n,ne,ne,s,s,ne,se,ne,ne,ne,n,ne,ne,ne,ne,ne,n,s,se,ne,ne,s,ne,ne,se,ne,ne,n,n,ne,ne,se,n,ne,s,ne,ne,n,ne,nw,ne,nw,nw,ne,se,ne,ne,ne,ne,se,ne,se,ne,ne,ne,n,ne,nw,n,ne,ne,nw,ne,ne,ne,nw,ne,ne,sw,n,ne,ne,ne,ne,ne,ne,ne,n,ne,sw,n,ne,nw,ne,ne,ne,ne,ne,sw,sw,nw,ne,ne,ne,se,nw,sw,n,ne,n,nw,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,sw,ne,ne,ne,ne,s,ne,ne,se,ne,ne,n,ne,n,ne,ne,ne,s,ne,ne,se,ne,ne,ne,ne,ne,ne,se,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,s,se,se,n,s,ne,s,s,ne,ne,n,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,sw,ne,ne,n,ne,ne,se,se,nw,n,ne,se,sw,ne,ne,ne,ne,n,sw,se,ne,n,se,n,sw,ne,se,ne,ne,ne,ne,s,ne,ne,n,s,n,ne,ne,ne,s,ne,n,n,ne,ne,s,ne,n,ne,ne,ne,n,n,n,n,ne,ne,s,ne,ne,ne,ne,ne,ne,s,ne,ne,ne,ne,s,n,ne,se,ne,n,n,n,nw,ne,ne,n,n,ne,n,se,ne,n,ne,ne,ne,ne,n,nw,ne,s,ne,n,ne,n,ne,s,n,ne,n,ne,ne,n,n,se,n,ne,nw,ne,ne,se,n,ne,n,ne,ne,ne,ne,n,ne,n,ne,sw,ne,ne,ne,n,ne,ne,ne,s,n,n,ne,ne,ne,se,ne,nw,ne,ne,nw,n,ne,ne,ne,n,ne,ne,se,ne,n,nw,s,n,ne,nw,ne,n,ne,nw,s,ne,s,n,n,se,n,ne,ne,ne,ne,n,s,se,sw,n,n,ne,nw,n,ne,sw,ne,ne,n,ne,n,ne,n,se,sw,n,nw,ne,ne,ne,n,ne,n,n,ne,n,ne,ne,n,n,n,sw,ne,ne,n,ne,nw,n,n,ne,n,n,n,nw,n,se,n,ne,ne,sw,ne,ne,ne,ne,n,s,ne,se,n,ne,n,ne,ne,se,ne,ne,n,ne,n,se,ne,n,ne,ne,n,n,s,n,se,n,ne,n,ne,n,ne,n,ne,ne,se,ne,se,ne,sw,n,n,n,se,ne,ne,se,ne,n,ne,n,nw,ne,n,ne,n,ne,sw,n,sw,s,n,n,ne,ne,ne,ne,ne,n,s,n,n,nw,n,ne,n,n,sw,n,n,ne,n,nw,n,n,se,n,ne,ne,ne,ne,n,ne,ne,ne,n,ne,n,n,n,n,ne,n,n,n,n,sw,n,n,ne,n,ne,n,n,n,n,sw,ne,n,s,ne,n,se,ne,ne,ne,sw,n,n,ne,se,n,sw,se,ne,nw,n,sw,n,n,n,n,n,n,ne,se,ne,n,n,n,n,n,s,n,n,n,ne,ne,nw,n,se,s,s,ne,ne,ne,s,ne,ne,ne,s,se,s,n,ne,ne,n,sw,n,ne,n,ne,s,n,ne,n,s,n,ne,n,ne,ne,sw,n,s,ne,ne,n,ne,sw,n,ne,ne,ne,n,sw,n,ne,sw,n,ne,ne,ne,n,ne,ne,n,n,s,ne,ne,sw,n,n,n,ne,n,s,n,n,n,n,sw,n,ne,n,n,n,n,n,ne,s,n,ne,se,ne,ne,n,ne,n,n,s,n,n,n,n,ne,se,sw,n,n,n,n,nw,n,nw,ne,n,n,ne,n,n,sw,s,n,ne,sw,n,s,n,s,n,ne,n,n,n,n,n,n,n,ne,ne,n,ne,sw,ne,ne,n,n,n,n,sw,ne,se,se,s,n,n,se,ne,n,ne,se,n,n,n,n,ne,ne,n,n,n,n,ne,n,s,ne,ne,n,n,n,se,ne,s,nw,n,ne,se,ne,n,sw,n,sw,ne,sw,ne,ne,n,nw,n,n,n,n,n,ne,n,s,s,n,ne,n,ne,n,ne,s,ne,ne,n,n,sw,ne,n,n,n,n,n,n,n,n,ne,se,sw,n,n,s,nw,n,n,n,n,ne,n,ne,sw,n,n,n,ne,nw,sw,nw,s,n,n,s,se,n,n,n,ne,n,ne,n,nw,se,n,n,n,n,nw,n,ne,sw,n,ne,se,n,n,ne,n,n,ne,n,n,n,n,ne,n,nw,n,n,n,n,n,n,n,n,n,n,s,s,n,n,n,ne,sw,n,sw,s,n,n,n,n,n,s,ne,n,se,n,n,s,n,sw,n,n,n,n,n,nw,n,n,n,n,se,s,nw,n,n,ne,n,n,n,sw,n,ne,ne,n,n,s,sw,nw,n,sw,n,se,n,n,s,n,n,sw,n,n,n,n,nw,n,n,ne,n,ne,s,n,ne,sw,n,n,n,n,n,nw,n,s,n,nw,n,n,n,ne,sw,n,n,s,nw,n,nw,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,ne,n,ne,n,n,n,nw,sw,se,n,n,n,n,ne,ne,n,n,n,n,ne,ne,n,ne,n,n,ne,n,n,n,n,nw,n,n,n,sw,n,n,n,n,s,nw,ne,se,nw,s,n,n,n,n,n,se,n,n,sw,ne,n,n,n,n,n,se,n,n,n,n,n,n,n,n,nw,n,n,n,n,n,s,sw,n,n,s,n,s,n,n,n,n,ne,nw,nw,n,ne,n,n,n,n,n,n,n,s,n,n,n,nw,n,n,n,n,n,n,n,se,sw,n,n,nw,nw,n,n,s,s,n,nw,n,n,n,n,n,ne,n,n,n,n,ne,n,n,n,n,n,n,n,n,sw,n,n,n,n,sw,n,n,n,n,n,n,nw,n,sw,nw,sw,se,n,sw,se,sw,se,n,se,n,n,n,s,n,n,ne,nw,n,se,n,ne,n,n,nw,sw,n,n,ne,n,n,n,se,nw,nw,n,n,n,n,ne,n,n,n,s,se,n,n,n,n,se,n,ne,sw,s,n,s,n,n,ne,se,n,sw,nw,n,n,n,nw,sw,n,n,ne,s,sw,nw,n,sw,ne,n,n,nw,n,n,n,nw,n,n,nw,n,n,n,s,n,n,nw,n,n,se,n,n,n,ne,n,ne,n,nw,n,n,ne,n,n,n,sw,ne,sw,n,n,sw,n,n,n,ne,n,n,n,n,nw,n,n,s,n,nw,n,n,n,n,nw,n,n,n,nw,n,n,s,n,n,n,n,n,nw,se,n,n,nw,sw,n,n,n,n,sw,n,se,n,n,s,n,n,n,n,n,n,n,n,n,n,n,nw,nw,n,nw,nw,n,n,nw,n,n,n,n,n,n,n,n,n,nw,n,n,ne,nw,n,sw,nw,n,n,sw,n,n,nw,n,n,ne,n,se,sw,sw,n,n,n,nw,se,se,s,n,n,n,s,n,n,n,n,n,s,n,n,n,n,n,n,n,se,n,n,se,sw,n,n,nw,n,n,n,sw,ne,n,n,n,s,n,n,n,s,s,n,n,s,n,nw,ne,nw,ne,nw,nw,n,ne,n,n,sw,n,n,se,nw,n,se,nw,n,n,n,nw,nw,n,n,nw,s,nw,n,ne,n,nw,n,nw,nw,n,n,n,n,n,sw,nw,ne,n,s,n,nw,n,nw,n,n,n,n,nw,nw,n,nw,n,n,n,n,n,n,n,n,n,n,sw,nw,s,n,n,se,se,n,nw,n,n,s,n,se,nw,n,n,nw,n,sw,se,sw,nw,nw,n,n,n,n,sw,n,se,n,n,sw,sw,nw,nw,n,nw,n,nw,n,se,se,n,ne,n,n,n,sw,n,n,sw,n,s,n,nw,n,n,n,s,n,nw,n,ne,sw,n,s,s,nw,sw,ne,n,ne,ne,n,n,nw,nw,nw,nw,s,nw,nw,n,n,n,n,n,n,n,nw,ne,n,n,n,n,sw,n,n,n,ne,sw,sw,n,ne,n,n,nw,ne,n,nw,n,n,n,n,n,n,n,nw,ne,se,n,n,nw,ne,n,s,s,n,s,nw,n,ne,n,nw,n,n,sw,nw,s,s,nw,nw,n,nw,n,se,n,n,n,n,nw,sw,nw,se,nw,sw,n,nw,nw,n,n,n,nw,n,ne,n,n,nw,nw,nw,se,s,nw,n,nw,nw,n,nw,n,n,n,nw,sw,n,n,n,ne,nw,n,n,n,nw,n,n,n,n,nw,n,nw,n,n,n,n,n,s,n,n,n,n,se,n,n,nw,n,n,nw,nw,se,n,nw,n,n,n,nw,se,nw,s,nw,n,nw,nw,n,nw,n,nw,nw,nw,sw,nw,ne,nw,sw,n,ne,ne,n,n,n,sw,n,n,nw,s,n,nw,ne,nw,sw,nw,sw,n,nw,nw,n,nw,nw,nw,sw,nw,n,nw,nw,n,nw,nw,sw,nw,s,n,nw,nw,n,n,nw,nw,n,n,sw,n,se,n,n,n,n,n,nw,nw,n,nw,nw,nw,nw,n,nw,s,se,nw,s,nw,ne,n,nw,nw,n,n,s,n,s,n,nw,s,n,nw,n,ne,s,n,nw,n,n,s,n,n,n,n,n,se,nw,n,n,sw,se,n,nw,n,n,nw,n,n,n,n,nw,ne,s,n,nw,n,n,nw,n,n,sw,n,n,nw,nw,nw,nw,nw,n,sw,se,nw,n,n,nw,nw,sw,s,nw,n,nw,n,n,n,ne,nw,n,nw,nw,n,n,nw,s,nw,nw,nw,ne,nw,nw,nw,nw,s,nw,n,n,nw,n,nw,n,nw,nw,nw,nw,nw,ne,nw,n,nw,nw,n,n,nw,nw,se,n,s,nw,sw,nw,nw,n,n,nw,ne,nw,nw,n,n,se,ne,nw,s,n,n,n,n,sw,se,nw,n,nw,nw,ne,n,nw,n,n,n,n,n,n,n,se,nw,nw,nw,ne,nw,nw,nw,s,n,nw,sw,se,nw,nw,n,nw,nw,n,nw,nw,nw,nw,ne,sw,se,n,sw,s,nw,n,n,se,nw,nw,ne,nw,n,n,nw,ne,s,n,nw,nw,nw,se,n,s,se,s,nw,n,s,nw,nw,nw,sw,n,n,nw,nw,n,nw,nw,n,nw,n,sw,ne,nw,n,s,n,nw,nw,sw,nw,n,sw,nw,n,nw,s,nw,n,nw,nw,sw,nw,nw,nw,nw,nw,n,n,n,nw,nw,nw,nw,n,nw,n,n,n,n,n,se,n,se,nw,nw,nw,nw,n,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,nw,sw,n,ne,n,se,nw,s,n,nw,nw,n,nw,nw,s,n,nw,nw,nw,nw,nw,se,nw,nw,n,nw,n,nw,se,nw,n,n,n,nw,n,nw,n,sw,n,n,nw,nw,n,nw,sw,nw,n,n,nw,nw,n,sw,nw,n,nw,nw,nw,nw,nw,nw,nw,s,nw,nw,nw,n,nw,n,nw,nw,nw,nw,nw,nw,nw,se,n,se,nw,s,nw,nw,n,nw,n,nw,n,ne,nw,nw,s,n,nw,n,se,n,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,n,n,se,n,nw,nw,nw,nw,ne,se,nw,ne,ne,nw,nw,nw,nw,nw,n,sw,s,sw,nw,n,sw,nw,nw,nw,s,nw,nw,sw,sw,n,nw,nw,nw,n,nw,ne,nw,nw,nw,n,n,nw,nw,nw,se,n,nw,n,n,n,se,nw,n,n,nw,nw,nw,nw,nw,nw,nw,ne,n,nw,nw,nw,nw,nw,ne,se,s,nw,nw,nw,sw,nw,nw,nw,n,nw,nw,nw,nw,s,nw,nw,nw,nw,nw,se,nw,s,nw,se,se,s,nw,nw,n,n,nw,nw,nw,nw,nw,n,nw,nw,nw,nw,nw,n,s,nw,n,n,nw,nw,n,nw,n,s,sw,nw,s,nw,nw,n,se,nw,ne,nw,n,sw,ne,sw,s,sw,n,n,nw,se,nw,nw,nw,n,ne,se,ne,nw,nw,nw,s,sw,n,nw,nw,s,nw,nw,nw,nw,nw,n,nw,nw,nw,s,nw,se,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,n,sw,nw,ne,nw,n,nw,se,n,se,sw,nw,nw,nw,se,n,n,nw,nw,nw,nw,nw,nw,ne,nw,ne,n,sw,n,nw,s,nw,nw,nw,s,nw,nw,sw,nw,nw,n,n,nw,s,nw,nw,s,nw,se,s,nw,sw,n,se,nw,nw,n,s,n,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,ne,nw,nw,nw,s,nw,sw,nw,nw,nw,n,nw,nw,sw,nw,ne,nw,n,nw,nw,nw,nw,nw,n,nw,n,nw,nw,s,nw,ne,nw,n,nw,nw,ne,n,nw,ne,n,nw,nw,nw,nw,ne,nw,nw,nw,nw,sw,nw,nw,nw,n,n,nw,nw,nw,ne,n,s,s,nw,nw,nw,nw,nw,nw,nw,nw,n,ne,nw,nw,nw,n,sw,nw,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,n,n,nw,s,nw,nw,nw,nw,nw,nw,nw,nw,nw,n,nw,ne,ne,nw,nw,nw,nw,nw,nw,nw,nw,ne,nw,n,nw,se,s,s,nw,se,nw,nw,nw,nw,n,s,nw,s,nw,ne,nw,nw,nw,sw,nw,sw,nw,nw,nw,ne,nw,nw,nw,nw,nw,ne,nw,nw,nw,sw,nw,nw,nw,nw,nw,nw,nw,nw,se,nw,s,nw,nw,se,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,s,n,nw,ne,nw,nw,se,ne,nw,nw,ne,nw,nw,nw,nw,nw,se,nw,nw,nw,s,s,ne,ne,ne,se,se,sw,se,se,s,s,s,s,s,s,sw,sw,sw,sw,ne,ne,sw,nw,sw,nw,nw,sw,ne,sw,sw,nw,sw,nw,sw,nw,ne,nw,nw,nw,nw,n,ne,sw,nw,nw,nw,n,ne,n,n,n,n,se,nw,se,nw,n,n,n,nw,n,n,n,n,s,n,n,ne,n,n,n,n,n,se,n,n,n,se,n,n,ne,ne,n,ne,ne,ne,se,nw,n,n,ne,nw,n,ne,ne,ne,sw,ne,ne,ne,ne,ne,ne,ne,s,nw,ne,ne,se,ne,ne,se,se,ne,nw,ne,ne,ne,sw,ne,ne,ne,se,se,se,ne,se,ne,se,se,se,se,ne,se,se,ne,se,se,se,se,se,se,sw,s,se,se,s,sw,se,se,se,se,se,se,se,se,se,se,ne,ne,se,se,ne,se,s,s,s,se,sw,se,sw,se,se,s,ne,ne,se,n,se,se,s,nw,n,se,s,se,se,se,se,se,se,se,se,s,se,s,s,se,s,s,s,s,ne,s,ne,n,se,s,nw,nw,s,ne,s,s,s,s,n,s,s,s,s,n,s,n,s,n,s,se,s,s,sw,s,s,nw,s,se,s,s,ne,s,s,s,s,n,sw,s,sw,s,s,sw,n,n,s,ne,sw,ne,n,s,s,s,s,sw,sw,s,sw,s,se,sw,se,sw,nw,s,sw,n,sw,sw,sw,s,nw,sw,s,sw,s,ne,sw,s,sw,s,n,ne,sw,ne,sw,sw,se,sw,n,sw,nw,sw,sw,sw,sw,ne,sw,sw,nw,s,n,nw,s,se,sw,sw,s,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,nw,sw,nw,sw,s,s,sw,sw,nw,se,se,sw,sw,nw,sw,s,sw,nw,sw,sw,nw,sw,s,sw,nw,s,se,sw,ne,sw,nw,sw,nw,sw,n,nw,sw,sw,sw,sw,n,sw,nw,n,sw,sw,sw,nw,sw,n,nw,nw,sw,sw,nw,nw,sw,sw,nw,sw,sw,sw,ne,sw,nw,sw,nw,nw,n,nw,ne,n,nw,sw,nw,sw,nw,nw,nw,nw,nw,nw,se,sw,nw,sw,nw,sw,sw,se,sw,sw,s,s,nw,nw,nw,nw,nw,nw,nw,n,sw,nw,nw,s,sw,nw,nw,nw,sw,ne,sw,se,nw,nw,n,nw,nw,nw,nw,sw,nw,nw,nw,nw,sw,nw,se,sw,nw,nw,nw,nw,nw,nw,nw,nw,se,nw,nw,nw,nw,nw,s,nw,ne,nw,n,nw,nw,ne,nw,nw,ne,sw,nw,se,nw,nw,nw,ne,nw,n,nw,nw,ne,sw,nw,nw,nw,n,nw,nw,nw,se,nw,nw,n,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,nw,nw,ne,n,nw,nw,n,nw,n,nw,s,nw,nw,n,nw,nw,se,n,nw,se,nw,nw,nw,ne,n,nw,n,sw,n,nw,nw,n,nw,n,n,nw,nw,s,sw,n,nw,n,nw,nw,n,n,se,nw,nw,nw,nw,nw,n,n,n,n,sw,n,n,n,nw,n,n,n,n,n,n,ne,n,n,ne,nw,sw,ne,s,n,n,n,n,nw,n,ne,nw,nw,n,n,sw,n,ne,n,n,n,s,nw,sw,n,n,n,nw,n,sw,n,nw,se,n,n,se,n,n,n,nw,n,n,n,n,n,n,nw,nw,n,n,n,nw,ne,se,s,n,n,n,n,se,nw,nw,n,n,n,n,n,n,n,n,ne,nw,n,n,n,n,n,n,sw,nw,s,sw,n,n,n,ne,ne,n,n,n,n,n,n,n,ne,n,nw,n,ne,n,n,se,n,n,n,ne,n,nw,n,sw,n,nw,n,n,n,n,n,n,n,n,n,ne,ne,n,n,n,ne,n,se,n,n,se,n,n,n,se,sw,se,n,n,n,nw,se,n,ne,n,ne,n,ne,ne,n,n,se,n,n,n,n,n,ne,ne,nw,n,ne,n,n,n,ne,sw,n,n,s,n,n,s,ne,n,ne,n,n,ne,n,n,ne,se,sw,n,s,ne,n,sw,n,n,n,se,ne,n,n,n,s,sw,se,ne,s,se,ne,n,ne,n,se,n,ne,ne,ne,ne,ne,ne,n,n,ne,ne,ne,nw,nw,ne,ne,ne,sw,n,ne,n,ne,n,ne,sw,n,n,n,s,ne,n,ne,ne,ne,se,sw,ne,se,sw,ne,ne,se,sw,ne,n,n,ne,ne,ne,ne,ne,n,n,n,s,n,n,n,ne,ne,ne,ne,ne,ne,s,ne,ne,ne,ne,ne,ne,n,n,n,ne,se,nw,ne,ne,s,ne,n,n,n,ne,ne,n,ne,n,se,se,n,ne,ne,ne,se,ne,ne,s,s,ne,ne,ne,ne,n,sw,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,n,ne,nw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,ne,s,ne,sw,se,ne,sw,n,n,ne,n,se,ne,ne,ne,se,ne,ne,ne,s,ne,ne,n,se,ne,nw,ne,ne,ne,ne,ne,ne,ne,s,ne,ne,n,se,se,se,se,ne,s,ne,ne,ne,ne,ne,ne,sw,ne,ne,ne,ne,ne,ne,nw,ne,ne,ne,s,se,ne,ne,ne,n,n,ne,se,ne,ne,se,ne,ne,se,se,ne,ne,ne,ne,ne,ne,se,nw,se,sw,ne,ne,ne,nw,ne,ne,ne,n,ne,se,sw,nw,s,ne,se,ne,se,s,ne,ne,ne,ne,ne,s,ne,se,n,ne,ne,se,se,ne,ne,ne,ne,n,ne,ne,se,ne,ne,ne,ne,se,ne,ne,ne,ne,ne,se,ne,ne,ne,nw,ne,ne,se,ne,ne,se,se,sw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,sw,se,ne,n,n,n,se,ne,s,se,sw,sw,ne,ne,ne,sw,ne,se,ne,ne,ne,ne,ne,ne,nw,se,se,se,s,se,ne,s,se,ne,se,s,ne,ne,se,n,se,se,ne,n,ne,ne,se,nw,ne,se,se,nw,sw,s,ne,sw,se,se,ne,ne,s,se,ne,ne,ne,se,nw,ne,se,se,sw,nw,sw,se,ne,ne,se,se,se,se,ne,ne,ne,s,s,se,se,s,se,ne,se,ne,se,ne,ne,se,ne,se,ne,se,se,se,ne,se,se,se,s,se,se,se,n,se,se,ne,ne,se,ne,ne,se,se,se,se,ne,se,se,se,s,ne,se,ne,s,se,se,se,nw,ne,se,n,se,se,se,nw,se,se,nw,s,se,ne,se,nw,se,ne,se,ne,nw,se,se,nw,ne,se,se,n,nw,sw,se,ne,se,n,se,ne,ne,se,nw,se,ne,s,se,ne,se,se,ne,ne,se,n,ne,nw,se,ne,s,se,se,se,s,se,ne,se,se,se,se,se,nw,se,se,se,ne,n,se,ne,se,ne,se,n,se,nw,se,ne,n,nw,ne,ne,se,ne,se,nw,s,se,s,se,se,ne,se,s,se,n,se,se,se,se,se,s,se,s,se,se,se,ne,se,se,ne,se,se,nw,se,se,se,se,se,se,se,se,se,se,se,se,se,ne,s,se,se,se,se,s,se,se,se,n,se,sw,se,nw,se,se,n,ne,sw,se,se,se,se,ne,se,se,se,se,se,se,se,se,se,se,n,se,se,se,n,ne,s,se,se,se,se,se,se,se,se,se,se,se,n,se,s,ne,se,ne,se,se,se,se,se,ne,s,s,se,s,ne,se,se,s,se,se,se,se,se,se,sw,se,se,s,se,se,se,se,se,se,se,se,se,se,se,se,se,se,se,sw,se,se,se,nw,se,se,s,se,n,se,se,se,se,se,se,se,se,se,s,se,n,se,ne,se,s,s,s,se,nw,se,se,se,s,se,se,se,n,ne,se,s,se,nw,se,se,s,s,se,se,se,se,se,se,s,se,nw,se,s,se,s,s,se,se,s,se,se,ne,se,n,se,s,s,s,ne,se,s,se,s,se,se,se,n,se,sw,se,s,se,n,s,se,s,se,se,se,se,s,se,s,se,s,se,s,s,se,se,se,se,se,se,s,se,sw,se,se,nw,s,n,se,sw,s,se,se,sw,ne,sw,nw,s,s,s,s,nw,se,se,se,s,se,se,se,se,ne,s,se,nw,s,se,se,se,s,se,se,s,sw,s,s,se,se,ne,s,se,se,s,se,s,se,s,s,se,se,se,n,se,sw,s,se,s,s,s,se,se,se,ne,se,s,s,s,se,s,ne,se,n,se,s,s,s,s,s,s,se,se,se,se,nw,se,s,s,se,s,se,s,se,s,se,sw,s,nw,se,se,se,se,se,s,s,sw,se,nw,s,se,s,s,s,ne,s,s,s,s,se,s,se,s,nw,se,s,se,s,se,se,nw,nw,se,nw,nw,s,s,nw,se,s,s,nw,se,s,se,se,se,s,s,se,se,ne,s,s,s,s,se,s,se,se,se,se,ne,s,se,se,s,s,se,se,se,nw,s,ne,s,se,s,s,s,s,s,s,ne,s,s,s,s,se,s,s,s,se,sw,se,s,s,se,se,ne,s,se,se,se,s,s,sw,s,s,nw,sw,sw,se,s,s,s,se,s,s,s,se,se,s,s,s,nw,se,se,se,nw,se,s,s,s,s,s,se,ne,se,s,se,s,s,ne,se,se,ne,s,s,s,ne,s,se,ne,se,s,s,s,s,s,s,s,s,s,sw,s,ne,s,s,se,se,se,s,sw,s,sw,s,s,s,n,nw,s,s,s,se,s,nw,se,se,s,s,s,s,s,ne,se,s,s,s,se,s,s,s,s,nw,s,sw,sw,s,s,s,se,ne,s,s,s,ne,s,s,s,n,s,s,s,ne,se,s,s,s,s,s,s,s,s,s,s,nw,s,se,s,s,ne,s,ne,se,s,s,sw,s,ne,s,s,s,se,se,s,s,nw,s,s,s,s,s,nw,s,s,s,nw,s,s,s,s,s,s,s,se,s,sw,s,se,ne,s,n,nw,se,s,s,s,se,s,se,s,n,s,s,ne,s,s,nw,nw,nw,s,s,s,s,nw,s,s,s,s,s,s,s,nw,s,s,s,s,sw,s,s,sw,n,nw,ne,s,s,s,s,n,s,s,s,n,sw,n,s,s,s,s,s,s,nw,s,n,se,s,s,s,ne,s,se,nw,sw,se,sw,s,s,s,s,s,s,sw,s,se,s,n,s,sw,s,s,sw,sw,s,se,s,sw,s,s,s,sw,s,ne,s,s,s,s,sw,s,s,s,s,nw,s,se,sw,se,nw,se,ne,s,s,s,n,sw,s,sw,s,s,s,s,s,s,s,s,s,s,sw,sw,s,se,s,nw,nw,s,ne,nw,s,n,se,n,n,s,s,ne,sw,s,se,s,sw,s,s,s,se,sw,s,sw,nw,sw,sw,s,se,s,n,ne,s,s,sw,sw,s,s,sw,sw,s,n,s,sw,s,sw,s,s,nw,sw,s,s,s,sw,ne,ne,sw,sw,s,sw,se,s,se,s,ne,se,s,s,nw,sw,s,ne,sw,ne,s,sw,s,s,s,s,s,s,s,s,s,n,se,s,s,s,s,s,s,s,sw,sw,s,n,sw,sw,sw,s,s,sw,s,ne,se,s,s,s,sw,s,s,s,sw,s,sw,s,sw,s,s,s,s,s,sw,s,sw,nw,sw,s,se,sw,s,nw,s,s,s,n,ne,sw,sw,s,s,s,s,sw,s,s,s,n,s,sw,n,s,s,sw,s,sw,s,sw,s,s,n,s,n,n,sw,sw,sw,sw,sw,sw,s,ne,ne,s,sw,s,sw,s,sw,se,sw,s,sw,sw,n,s,ne,sw,sw,s,sw,se,se,nw,sw,sw,se,ne,s,s,s,s,s,sw,sw,sw,n,s,se,s,s,n,s,sw,n,sw,sw,sw,ne,s,sw,sw,s,n,sw,n,s,s,s,ne,s,se,s,sw,ne,sw,sw,s,sw,sw,sw,s,s,se,s,sw,s,s,ne,sw,s,sw,sw,s,s,sw,ne,s,sw,sw,sw,sw,n,s,ne,ne,ne,s,sw,s,se,se,sw,s,sw,sw,n,sw,sw,nw,sw,s,sw,s,sw,s,sw,s,sw,sw,s,sw,sw,sw,n,s,sw,ne,sw,s,nw,s,s,sw,s,sw,nw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,s,s,s,s,n,s,sw,s,sw,sw,s,ne,s,nw,n,nw,s,sw,sw,sw,sw,sw,sw,sw,sw,s,s,n,sw,s,s,n,se,s,se,sw,s,sw,ne,sw,sw,sw,sw,s,sw,sw,ne,s,sw,sw,se,sw,s,n,s,s,sw,s,se,sw,sw,se,sw,sw,sw,nw,sw,sw,sw,nw,sw,s,s,s,nw,sw,s,n,sw,s,sw,n,sw,sw,s,sw,sw,s,s,nw,s,sw,sw,sw,ne,sw,sw,nw,s,ne,s,sw,sw,sw,sw,sw,n,sw,sw,sw,s,n,sw,s,sw,se,sw,sw,sw,sw,sw,sw,sw,s,sw,sw,ne,sw,s,sw,s,sw,sw,sw,n,sw,sw,sw,s,sw,sw,s,sw,sw,sw,sw,n,s,s,sw,ne,sw,se,n,sw,s,sw,n,sw,sw,sw,nw,sw,s,s,n,sw,s,sw,sw,sw,ne,sw,sw,nw,ne,n,sw,sw,sw,sw,s,sw,n,sw,s,s,sw,s,s,s,sw,sw,sw,s,sw,sw,s,s,sw,s,s,se,sw,sw,s,sw,sw,se,sw,s,se,sw,sw,sw,sw,se,sw,sw,sw,sw,s,sw,s,n,sw,sw,sw,n,n,sw,sw,nw,sw,sw,sw,se,sw,nw,sw,sw,sw,sw,sw,sw,sw,s,sw,n,nw,n,sw,nw,sw,sw,sw,sw,s,ne,sw,ne,sw,se,n,s,s,sw,sw,sw,n,se,s,sw,se,s,sw,sw,sw,ne,s,n,sw,sw,sw,sw,sw,s,sw,nw,sw,sw,sw,sw,sw,sw,nw,sw,nw,sw,s,sw,sw,sw,sw,se,sw,sw,sw,sw,sw,ne,se,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,nw,sw,s,sw,nw,sw,sw,sw,sw,n diff --git a/2017/d12/ex1/ex1.py b/2017/d12/ex1/ex1.py deleted file mode 100755 index fc720bb..0000000 --- a/2017/d12/ex1/ex1.py +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env python - -import sys - - -def solve(input: str) -> int: - def parse_line(input: str) -> tuple[int, set[int]]: - origin, others = input.split(" <-> ") - return int(origin), {int(n) for n in others.split(", ")} - - def parse(input: str) -> dict[int, set[int]]: - return {n: children for n, children in map(parse_line, input.splitlines())} - - def reachable(graph: dict[int, set[int]]) -> int: - queue = [0] - seen: set[int] = set() - - while queue: - n = queue.pop() - if n in seen: - continue - seen.add(n) - queue.extend(graph[n]) - - return len(seen) - - graph = parse(input) - return reachable(graph) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d12/ex1/input b/2017/d12/ex1/input deleted file mode 100644 index 80e4ce6..0000000 --- a/2017/d12/ex1/input +++ /dev/null @@ -1,2000 +0,0 @@ -0 <-> 199, 1774 -1 <-> 350, 1328, 1920 -2 <-> 477, 984, 1419 -3 <-> 1465, 1568 -4 <-> 359, 1047, 1215, 1580, 1969 -5 <-> 613 -6 <-> 49, 617, 1213 -7 <-> 1263 -8 <-> 410 -9 <-> 1224 -10 <-> 1157 -11 <-> 304, 1168, 1875 -12 <-> 868, 891, 1369, 1712 -13 <-> 958, 1371 -14 <-> 1814 -15 <-> 261, 556 -16 <-> 830, 1646, 1901, 1933 -17 <-> 962, 1778 -18 <-> 109, 1229 -19 <-> 239, 1070, 1886, 1930 -20 <-> 327, 1307, 1801, 1905 -21 <-> 943, 1950 -22 <-> 1310 -23 <-> 659, 917 -24 <-> 373 -25 <-> 369 -26 <-> 947, 1023 -27 <-> 338, 1901 -28 <-> 1691 -29 <-> 132, 1219, 1699, 1962 -30 <-> 424, 822, 1419 -31 <-> 1444, 1464 -32 <-> 702, 1517 -33 <-> 1639 -34 <-> 909 -35 <-> 690, 1655 -36 <-> 988, 1149, 1166 -37 <-> 649, 1300, 1441, 1699 -38 <-> 1848 -39 <-> 382 -40 <-> 827, 1203, 1510 -41 <-> 714, 1056, 1184 -42 <-> 1018, 1873 -43 <-> 214 -44 <-> 670, 957 -45 <-> 45 -46 <-> 1195 -47 <-> 559, 1504 -48 <-> 1958 -49 <-> 6 -50 <-> 50, 1248 -51 <-> 1151 -52 <-> 52, 521, 1791 -53 <-> 304 -54 <-> 601 -55 <-> 1328 -56 <-> 939 -57 <-> 1583, 1995 -58 <-> 1422, 1694 -59 <-> 395, 1233 -60 <-> 862, 1811 -61 <-> 345, 1694 -62 <-> 62, 276 -63 <-> 280 -64 <-> 199 -65 <-> 117, 930 -66 <-> 364, 697 -67 <-> 1043 -68 <-> 287, 504, 1554 -69 <-> 498, 706 -70 <-> 77, 333, 713, 972, 1299 -71 <-> 1643 -72 <-> 694 -73 <-> 1381 -74 <-> 955, 1790 -75 <-> 1691, 1743 -76 <-> 76, 638, 1429 -77 <-> 70 -78 <-> 1513 -79 <-> 1397, 1716 -80 <-> 897 -81 <-> 968, 1841 -82 <-> 649 -83 <-> 522 -84 <-> 84, 125, 399, 498 -85 <-> 880, 1554, 1888 -86 <-> 86 -87 <-> 579, 1947 -88 <-> 470, 1451, 1750 -89 <-> 805, 1434 -90 <-> 453 -91 <-> 1208 -92 <-> 688, 1358, 1746 -93 <-> 357, 647 -94 <-> 234, 1270, 1520 -95 <-> 620, 1454 -96 <-> 390, 869, 919 -97 <-> 693, 1783 -98 <-> 259, 529, 782, 1018 -99 <-> 678 -100 <-> 1215 -101 <-> 459, 887 -102 <-> 888, 1135 -103 <-> 1006 -104 <-> 1375, 1422 -105 <-> 1657, 1730 -106 <-> 216, 1434 -107 <-> 333 -108 <-> 468, 1654 -109 <-> 18, 1791 -110 <-> 372 -111 <-> 111, 861, 1383 -112 <-> 1359, 1937 -113 <-> 414, 736, 1446 -114 <-> 426, 1457 -115 <-> 1605, 1672 -116 <-> 116, 713, 1584, 1602 -117 <-> 65 -118 <-> 1611, 1897 -119 <-> 541, 1569 -120 <-> 412, 787 -121 <-> 1344 -122 <-> 698, 752, 1693 -123 <-> 1173, 1576, 1634, 1802 -124 <-> 735 -125 <-> 84, 1032 -126 <-> 126, 225, 332 -127 <-> 1350 -128 <-> 128, 319, 327, 1582 -129 <-> 129, 654, 1260 -130 <-> 1080, 1296, 1350 -131 <-> 131 -132 <-> 29, 856, 1064 -133 <-> 659, 1367, 1776 -134 <-> 648, 1147, 1450, 1910 -135 <-> 411 -136 <-> 353, 935, 1590 -137 <-> 228 -138 <-> 194, 452, 1746, 1794 -139 <-> 139, 494, 1635 -140 <-> 681 -141 <-> 1507 -142 <-> 1288 -143 <-> 845 -144 <-> 1516 -145 <-> 502, 1146, 1155, 1809 -146 <-> 146, 750 -147 <-> 1600 -148 <-> 1206 -149 <-> 829, 1457 -150 <-> 675, 915 -151 <-> 651, 1678 -152 <-> 888, 1503 -153 <-> 498, 960, 1515 -154 <-> 1468 -155 <-> 751 -156 <-> 528, 803, 1655 -157 <-> 1486, 1937 -158 <-> 590, 1876 -159 <-> 159, 185, 1287, 1550, 1588 -160 <-> 160, 548 -161 <-> 1303, 1364 -162 <-> 1855 -163 <-> 1181 -164 <-> 442 -165 <-> 490 -166 <-> 1105 -167 <-> 1121 -168 <-> 760, 1129 -169 <-> 747 -170 <-> 1890 -171 <-> 1644 -172 <-> 593, 665 -173 <-> 1092, 1869 -174 <-> 705 -175 <-> 1345, 1999 -176 <-> 234, 606 -177 <-> 557, 688 -178 <-> 373 -179 <-> 1376 -180 <-> 638 -181 <-> 1996 -182 <-> 1094, 1206, 1748 -183 <-> 931 -184 <-> 880 -185 <-> 159, 1058, 1704 -186 <-> 765, 1178, 1877 -187 <-> 732 -188 <-> 188 -189 <-> 189, 1871 -190 <-> 395, 1639 -191 <-> 441 -192 <-> 192, 1034 -193 <-> 494 -194 <-> 138, 995, 1308 -195 <-> 1024 -196 <-> 226, 1632, 1919 -197 <-> 786 -198 <-> 286, 758, 1852 -199 <-> 0, 64, 1646 -200 <-> 314 -201 <-> 459, 658 -202 <-> 321, 492, 599, 1081, 1460 -203 <-> 225 -204 <-> 331, 462, 600 -205 <-> 898 -206 <-> 734, 1321 -207 <-> 558, 991 -208 <-> 397 -209 <-> 1145, 1886 -210 <-> 1343, 1925 -211 <-> 840, 1409 -212 <-> 1308 -213 <-> 1813 -214 <-> 43, 282 -215 <-> 1270 -216 <-> 106, 836, 1275, 1507 -217 <-> 312 -218 <-> 290, 386, 639, 1920 -219 <-> 784, 1001 -220 <-> 220, 322 -221 <-> 1681 -222 <-> 1616, 1653 -223 <-> 436, 1272, 1625 -224 <-> 1398, 1696 -225 <-> 126, 203, 1182 -226 <-> 196, 1655 -227 <-> 623 -228 <-> 137, 923 -229 <-> 253, 1387 -230 <-> 1374 -231 <-> 389, 1499 -232 <-> 442 -233 <-> 473, 1406 -234 <-> 94, 176 -235 <-> 235 -236 <-> 607, 838, 1487, 1856 -237 <-> 818 -238 <-> 387, 628 -239 <-> 19 -240 <-> 818 -241 <-> 1027, 1524 -242 <-> 1085, 1971 -243 <-> 1942 -244 <-> 299, 390, 916 -245 <-> 906 -246 <-> 246, 534, 763, 1427 -247 <-> 531, 1675 -248 <-> 336, 1832 -249 <-> 1497 -250 <-> 1836 -251 <-> 1309 -252 <-> 581, 1104 -253 <-> 229, 877, 1743 -254 <-> 254, 621 -255 <-> 831, 866, 874 -256 <-> 1942 -257 <-> 906 -258 <-> 1224 -259 <-> 98, 316, 419, 718, 1519 -260 <-> 1223, 1516, 1547, 1845, 1944 -261 <-> 15, 278, 1607, 1808 -262 <-> 1112, 1172 -263 <-> 424 -264 <-> 680 -265 <-> 1968 -266 <-> 804, 1252 -267 <-> 1739 -268 <-> 538, 546 -269 <-> 1265 -270 <-> 270 -271 <-> 1150 -272 <-> 272 -273 <-> 1208, 1537 -274 <-> 1427 -275 <-> 1349, 1829 -276 <-> 62, 906 -277 <-> 461, 634, 1887 -278 <-> 261, 1224, 1904 -279 <-> 303, 537 -280 <-> 63, 280, 926, 931 -281 <-> 862, 1041, 1119, 1863 -282 <-> 214, 488, 644 -283 <-> 646, 1124 -284 <-> 860, 1759 -285 <-> 746 -286 <-> 198 -287 <-> 68, 1045 -288 <-> 332, 1133, 1277, 1628, 1744, 1770, 1934 -289 <-> 1578, 1766 -290 <-> 218, 439, 1661 -291 <-> 596, 1377, 1620 -292 <-> 700, 848, 1099 -293 <-> 293, 1592, 1938 -294 <-> 653, 1948 -295 <-> 1505, 1936 -296 <-> 625, 925 -297 <-> 1105, 1185 -298 <-> 298, 544, 1444 -299 <-> 244, 933, 1012 -300 <-> 300, 1461, 1883 -301 <-> 880, 1698 -302 <-> 1221 -303 <-> 279, 375 -304 <-> 11, 53, 967, 1362 -305 <-> 777 -306 <-> 344 -307 <-> 582, 770 -308 <-> 792, 1895 -309 <-> 539 -310 <-> 390, 1482 -311 <-> 441, 1294 -312 <-> 217, 743 -313 <-> 1522 -314 <-> 200, 502, 835, 1084, 1134 -315 <-> 1970 -316 <-> 259 -317 <-> 1302, 1437 -318 <-> 365 -319 <-> 128, 976 -320 <-> 1056, 1466, 1778 -321 <-> 202 -322 <-> 220, 1431 -323 <-> 838, 1465, 1895 -324 <-> 443 -325 <-> 1056 -326 <-> 463, 1741, 1761 -327 <-> 20, 128, 681, 1797 -328 <-> 328, 348 -329 <-> 378, 1738 -330 <-> 459 -331 <-> 204, 331 -332 <-> 126, 288 -333 <-> 70, 107, 1747 -334 <-> 517, 614 -335 <-> 1259 -336 <-> 248, 550, 1485 -337 <-> 337 -338 <-> 27, 1212, 1264 -339 <-> 430, 963 -340 <-> 769 -341 <-> 341 -342 <-> 593, 718, 895 -343 <-> 569 -344 <-> 306, 1440, 1650, 1742 -345 <-> 61, 1006, 1664 -346 <-> 448, 1928 -347 <-> 1022, 1052 -348 <-> 328, 1232 -349 <-> 1232 -350 <-> 1, 526, 1086, 1821 -351 <-> 584 -352 <-> 518, 686, 1324, 1437 -353 <-> 136, 936 -354 <-> 1470 -355 <-> 1173, 1814 -356 <-> 698 -357 <-> 93 -358 <-> 737, 986, 1169 -359 <-> 4 -360 <-> 363 -361 <-> 417, 841 -362 <-> 928 -363 <-> 360, 1751 -364 <-> 66, 364, 1596 -365 <-> 318, 1766 -366 <-> 366 -367 <-> 367 -368 <-> 1897 -369 <-> 25, 369, 1460 -370 <-> 370 -371 <-> 1568 -372 <-> 110, 582 -373 <-> 24, 178, 1924 -374 <-> 374 -375 <-> 303 -376 <-> 1331, 1990 -377 <-> 388, 601, 837 -378 <-> 329 -379 <-> 623 -380 <-> 671 -381 <-> 938 -382 <-> 39, 1458 -383 <-> 383, 1490, 1763, 1844 -384 <-> 832 -385 <-> 745, 1673 -386 <-> 218, 779 -387 <-> 238 -388 <-> 377, 1817 -389 <-> 231, 656, 1038, 1960 -390 <-> 96, 244, 310, 721, 1094, 1501 -391 <-> 438, 819, 1870 -392 <-> 697 -393 <-> 443, 1275, 1463 -394 <-> 480 -395 <-> 59, 190, 1117, 1997 -396 <-> 595 -397 <-> 208, 397, 1727 -398 <-> 1153 -399 <-> 84 -400 <-> 825, 1693 -401 <-> 812 -402 <-> 1191 -403 <-> 1446, 1820 -404 <-> 442, 871, 1637 -405 <-> 426, 1067 -406 <-> 460, 1290 -407 <-> 1951 -408 <-> 1335, 1391, 1897 -409 <-> 984, 1217 -410 <-> 8, 1607 -411 <-> 135, 411, 454, 1393 -412 <-> 120 -413 <-> 1208 -414 <-> 113 -415 <-> 415, 1803 -416 <-> 428 -417 <-> 361 -418 <-> 1129 -419 <-> 259 -420 <-> 628 -421 <-> 1485 -422 <-> 1110, 1785 -423 <-> 1418 -424 <-> 30, 263 -425 <-> 1497 -426 <-> 114, 405, 780 -427 <-> 427 -428 <-> 416, 782 -429 <-> 429 -430 <-> 339, 1513 -431 <-> 886, 1408 -432 <-> 586, 1725 -433 <-> 889, 1753, 1881 -434 <-> 1078, 1120 -435 <-> 660, 1194, 1662 -436 <-> 223, 1332 -437 <-> 1487 -438 <-> 391 -439 <-> 290 -440 <-> 1828 -441 <-> 191, 311, 1003, 1561, 1702 -442 <-> 164, 232, 404 -443 <-> 324, 393 -444 <-> 1215, 1251 -445 <-> 792 -446 <-> 1015, 1392 -447 <-> 777 -448 <-> 346, 1097 -449 <-> 1117 -450 <-> 1395 -451 <-> 1414, 1845 -452 <-> 138 -453 <-> 90, 453 -454 <-> 411 -455 <-> 1801 -456 <-> 456, 791, 902, 1111 -457 <-> 457, 1075, 1384 -458 <-> 770, 1600 -459 <-> 101, 201, 330, 1108 -460 <-> 406, 1529 -461 <-> 277, 839, 1552 -462 <-> 204 -463 <-> 326, 1899 -464 <-> 1098 -465 <-> 764, 1630, 1779 -466 <-> 627 -467 <-> 904 -468 <-> 108, 1849 -469 <-> 469, 603, 780 -470 <-> 88, 1276, 1533 -471 <-> 1492 -472 <-> 472, 1048, 1409, 1518, 1758 -473 <-> 233, 1413, 1826 -474 <-> 780 -475 <-> 1005, 1968 -476 <-> 809 -477 <-> 2 -478 <-> 753 -479 <-> 479, 1296, 1615 -480 <-> 394, 775, 1623 -481 <-> 774, 1604 -482 <-> 763 -483 <-> 522, 591, 1344 -484 <-> 894, 1219 -485 <-> 507, 1114, 1250, 1351 -486 <-> 1099, 1879 -487 <-> 487 -488 <-> 282, 1164, 1189 -489 <-> 900, 1889 -490 <-> 165, 918, 1007 -491 <-> 1800 -492 <-> 202 -493 <-> 615, 899, 1200, 1326 -494 <-> 139, 193 -495 <-> 704, 1988 -496 <-> 496 -497 <-> 1149, 1216 -498 <-> 69, 84, 153 -499 <-> 1125, 1149 -500 <-> 642 -501 <-> 524, 1176 -502 <-> 145, 314 -503 <-> 1330, 1626 -504 <-> 68, 699 -505 <-> 672 -506 <-> 1083 -507 <-> 485, 1743 -508 <-> 520, 1236, 1296 -509 <-> 1676 -510 <-> 875, 1066 -511 <-> 511 -512 <-> 512, 1240 -513 <-> 705, 812 -514 <-> 1758 -515 <-> 1165, 1168 -516 <-> 811 -517 <-> 334, 1132, 1339 -518 <-> 352, 1674 -519 <-> 824, 1396, 1659 -520 <-> 508 -521 <-> 52, 915 -522 <-> 83, 483, 1637 -523 <-> 1317 -524 <-> 501 -525 <-> 525 -526 <-> 350, 850, 930 -527 <-> 527, 1338, 1449 -528 <-> 156 -529 <-> 98 -530 <-> 691, 1175, 1505 -531 <-> 247, 785, 1389, 1623 -532 <-> 1159 -533 <-> 1152, 1297 -534 <-> 246 -535 <-> 1144, 1491, 1622, 1935 -536 <-> 708 -537 <-> 279, 1656 -538 <-> 268, 538, 1756 -539 <-> 309, 802 -540 <-> 1239 -541 <-> 119, 1679, 1741 -542 <-> 1204 -543 <-> 642, 1926 -544 <-> 298 -545 <-> 1971 -546 <-> 268 -547 <-> 1465, 1613, 1614 -548 <-> 160 -549 <-> 820 -550 <-> 336 -551 <-> 1733 -552 <-> 552, 1563 -553 <-> 1654 -554 <-> 554, 1641, 1665 -555 <-> 555 -556 <-> 15 -557 <-> 177, 1204 -558 <-> 207, 1004 -559 <-> 47, 1297 -560 <-> 1189, 1709 -561 <-> 1013, 1709 -562 <-> 762, 912 -563 <-> 563 -564 <-> 585 -565 <-> 1333, 1494 -566 <-> 566, 938 -567 <-> 894 -568 <-> 586, 1397 -569 <-> 343, 1572 -570 <-> 704, 1220, 1459 -571 <-> 1451 -572 <-> 651, 846, 909 -573 <-> 1881 -574 <-> 1866 -575 <-> 1379 -576 <-> 1060, 1210 -577 <-> 1837 -578 <-> 1346 -579 <-> 87 -580 <-> 1509 -581 <-> 252, 1548 -582 <-> 307, 372 -583 <-> 624, 1599, 1753, 1908 -584 <-> 351, 774 -585 <-> 564, 977 -586 <-> 432, 568, 773, 1789 -587 <-> 826 -588 <-> 1854 -589 <-> 719, 845, 1214 -590 <-> 158, 1259 -591 <-> 483 -592 <-> 743, 898 -593 <-> 172, 342, 852, 943, 1053 -594 <-> 594 -595 <-> 396, 928 -596 <-> 291, 596 -597 <-> 597 -598 <-> 1980 -599 <-> 202, 1764 -600 <-> 204 -601 <-> 54, 377, 1340 -602 <-> 1718, 1866 -603 <-> 469, 789 -604 <-> 1006, 1033, 1626 -605 <-> 1535 -606 <-> 176 -607 <-> 236, 911, 1218 -608 <-> 1193, 1825 -609 <-> 1657 -610 <-> 733, 841 -611 <-> 747, 1892 -612 <-> 1098, 1196, 1267 -613 <-> 5, 1372 -614 <-> 334, 1492 -615 <-> 493, 798 -616 <-> 1025, 1940 -617 <-> 6, 666, 1155 -618 <-> 762, 1621, 1895 -619 <-> 1187 -620 <-> 95, 1761 -621 <-> 254 -622 <-> 784, 1476 -623 <-> 227, 379, 1081 -624 <-> 583 -625 <-> 296, 1222, 1882 -626 <-> 905 -627 <-> 466, 1692 -628 <-> 238, 420, 1004, 1412 -629 <-> 1532 -630 <-> 630 -631 <-> 977, 1092, 1458, 1713 -632 <-> 777, 1049, 1404 -633 <-> 994 -634 <-> 277 -635 <-> 635 -636 <-> 703, 1756 -637 <-> 840, 1585 -638 <-> 76, 180, 1373 -639 <-> 218, 639, 1835 -640 <-> 1559 -641 <-> 1800 -642 <-> 500, 543 -643 <-> 1808 -644 <-> 282 -645 <-> 1253, 1475 -646 <-> 283, 646, 864 -647 <-> 93, 1508 -648 <-> 134, 956, 1762 -649 <-> 37, 82 -650 <-> 1480, 1916 -651 <-> 151, 572, 1357 -652 <-> 1261 -653 <-> 294, 653 -654 <-> 129, 1139, 1176 -655 <-> 1251, 1656 -656 <-> 389 -657 <-> 1604 -658 <-> 201, 1208 -659 <-> 23, 133, 1868 -660 <-> 435 -661 <-> 1634 -662 <-> 1667, 1701 -663 <-> 974 -664 <-> 664, 1167 -665 <-> 172, 1370 -666 <-> 617 -667 <-> 1824 -668 <-> 952, 1605 -669 <-> 1822 -670 <-> 44, 670 -671 <-> 380, 1145, 1693, 1906 -672 <-> 505, 693 -673 <-> 1610 -674 <-> 1249, 1302 -675 <-> 150, 777 -676 <-> 1675 -677 <-> 910, 1282 -678 <-> 99, 1004 -679 <-> 679 -680 <-> 264, 917, 1137, 1687 -681 <-> 140, 327, 746 -682 <-> 682 -683 <-> 794, 1315 -684 <-> 1000, 1342 -685 <-> 1111, 1348, 1523, 1932 -686 <-> 352 -687 <-> 979, 1667 -688 <-> 92, 177 -689 <-> 937, 1939 -690 <-> 35, 1608 -691 <-> 530, 691 -692 <-> 1871 -693 <-> 97, 672 -694 <-> 72, 694 -695 <-> 1076 -696 <-> 1954 -697 <-> 66, 392, 1892 -698 <-> 122, 356, 698 -699 <-> 504, 1470 -700 <-> 292, 1407 -701 <-> 1231, 1327 -702 <-> 32 -703 <-> 636, 1083, 1210 -704 <-> 495, 570 -705 <-> 174, 513, 1332 -706 <-> 69, 1088 -707 <-> 1036, 1867 -708 <-> 536, 805, 1958 -709 <-> 709 -710 <-> 915, 1578 -711 <-> 711, 1478 -712 <-> 813, 927 -713 <-> 70, 116, 1469, 1539 -714 <-> 41 -715 <-> 840, 1473, 1562, 1705 -716 <-> 716 -717 <-> 949, 1864 -718 <-> 259, 342, 1557, 1853 -719 <-> 589, 781, 802 -720 <-> 1125 -721 <-> 390, 878 -722 <-> 1026 -723 <-> 1039, 1467 -724 <-> 1535 -725 <-> 883 -726 <-> 1832, 1917 -727 <-> 1245 -728 <-> 1291 -729 <-> 1203 -730 <-> 824 -731 <-> 1984 -732 <-> 187, 1214 -733 <-> 610, 1079, 1198 -734 <-> 206, 872, 1479, 1855 -735 <-> 124, 1371 -736 <-> 113, 736 -737 <-> 358, 1426 -738 <-> 974, 1024, 1717, 1842 -739 <-> 1489 -740 <-> 1634 -741 <-> 873, 1695 -742 <-> 1700 -743 <-> 312, 592, 1493 -744 <-> 948, 1306, 1400 -745 <-> 385, 1029, 1315, 1474 -746 <-> 285, 681, 793 -747 <-> 169, 611, 814, 1548 -748 <-> 748 -749 <-> 1134, 1498 -750 <-> 146 -751 <-> 155, 783, 1856 -752 <-> 122, 1417 -753 <-> 478, 1505 -754 <-> 810, 1742, 1955 -755 <-> 1735, 1847 -756 <-> 978, 1095 -757 <-> 1153, 1730 -758 <-> 198, 1476 -759 <-> 759 -760 <-> 168 -761 <-> 1496 -762 <-> 562, 618 -763 <-> 246, 482, 1258 -764 <-> 465 -765 <-> 186 -766 <-> 1448 -767 <-> 893, 896, 1019 -768 <-> 1730 -769 <-> 340, 1043, 1065 -770 <-> 307, 458, 1453 -771 <-> 1168 -772 <-> 911 -773 <-> 586 -774 <-> 481, 584, 774, 1148 -775 <-> 480, 1485, 1894 -776 <-> 926 -777 <-> 305, 447, 632, 675 -778 <-> 1690 -779 <-> 386 -780 <-> 426, 469, 474 -781 <-> 719, 1543 -782 <-> 98, 428, 903 -783 <-> 751, 1558 -784 <-> 219, 622 -785 <-> 531 -786 <-> 197, 911, 1312 -787 <-> 120, 880 -788 <-> 1089, 1487 -789 <-> 603, 844, 1681, 1731 -790 <-> 790, 1126 -791 <-> 456, 1363 -792 <-> 308, 445 -793 <-> 746 -794 <-> 683, 951 -795 <-> 1732, 1986 -796 <-> 1210, 1878 -797 <-> 804 -798 <-> 615 -799 <-> 1651 -800 <-> 851, 860, 1907 -801 <-> 1110, 1537, 1773 -802 <-> 539, 719 -803 <-> 156, 1528 -804 <-> 266, 797, 1549 -805 <-> 89, 708, 962 -806 <-> 1429 -807 <-> 1800 -808 <-> 873, 1421 -809 <-> 476, 809 -810 <-> 754 -811 <-> 516, 965 -812 <-> 401, 513 -813 <-> 712, 1023 -814 <-> 747 -815 <-> 1145 -816 <-> 1413 -817 <-> 1235 -818 <-> 237, 240, 1506 -819 <-> 391, 857 -820 <-> 549, 1162 -821 <-> 1410, 1607 -822 <-> 30, 1485 -823 <-> 1445, 1454 -824 <-> 519, 730, 1824 -825 <-> 400, 1381, 1472 -826 <-> 587, 1040, 1198, 1618 -827 <-> 40 -828 <-> 1870 -829 <-> 149 -830 <-> 16 -831 <-> 255 -832 <-> 384, 1890, 1913 -833 <-> 1529 -834 <-> 834 -835 <-> 314 -836 <-> 216, 1166 -837 <-> 377, 988 -838 <-> 236, 323 -839 <-> 461, 1825 -840 <-> 211, 637, 715, 1710 -841 <-> 361, 610, 841, 1815 -842 <-> 1669 -843 <-> 874, 1468 -844 <-> 789 -845 <-> 143, 589, 1053 -846 <-> 572 -847 <-> 1285 -848 <-> 292 -849 <-> 849 -850 <-> 526 -851 <-> 800, 1368, 1497 -852 <-> 593, 1798 -853 <-> 1339, 1593, 1749 -854 <-> 1445, 1787 -855 <-> 1026, 1356 -856 <-> 132 -857 <-> 819 -858 <-> 1511 -859 <-> 1191 -860 <-> 284, 800, 1619 -861 <-> 111, 1266 -862 <-> 60, 281 -863 <-> 1605 -864 <-> 646 -865 <-> 873 -866 <-> 255, 924 -867 <-> 871, 1707 -868 <-> 12 -869 <-> 96, 1278 -870 <-> 1307 -871 <-> 404, 867, 1482 -872 <-> 734, 1200 -873 <-> 741, 808, 865, 873 -874 <-> 255, 843, 1201 -875 <-> 510, 1325, 1797 -876 <-> 1504, 1825 -877 <-> 253 -878 <-> 721 -879 <-> 948, 1291, 1847 -880 <-> 85, 184, 301, 787, 1503, 1617 -881 <-> 1688 -882 <-> 882 -883 <-> 725, 1582, 1874 -884 <-> 1352 -885 <-> 885, 1974 -886 <-> 431, 1650 -887 <-> 101 -888 <-> 102, 152 -889 <-> 433, 1016 -890 <-> 890 -891 <-> 12 -892 <-> 1402, 1923 -893 <-> 767 -894 <-> 484, 567 -895 <-> 342, 1123, 1158, 1648 -896 <-> 767 -897 <-> 80, 986, 1418 -898 <-> 205, 592, 1019 -899 <-> 493, 1053 -900 <-> 489 -901 <-> 901 -902 <-> 456 -903 <-> 782 -904 <-> 467, 904, 1924 -905 <-> 626, 1881 -906 <-> 245, 257, 276 -907 <-> 907, 1101, 1826 -908 <-> 908, 1230 -909 <-> 34, 572, 1186 -910 <-> 677, 961 -911 <-> 607, 772, 786, 1196, 1405 -912 <-> 562 -913 <-> 1636 -914 <-> 1892, 1963 -915 <-> 150, 521, 710 -916 <-> 244 -917 <-> 23, 680, 1336 -918 <-> 490, 1483 -919 <-> 96 -920 <-> 1880 -921 <-> 921 -922 <-> 975, 1255 -923 <-> 228, 1202, 1452 -924 <-> 866 -925 <-> 296, 1270 -926 <-> 280, 776, 1170, 1788, 1970 -927 <-> 712 -928 <-> 362, 595, 1103 -929 <-> 929 -930 <-> 65, 526, 1256, 1500, 1722 -931 <-> 183, 280, 1484 -932 <-> 1737 -933 <-> 299 -934 <-> 1387, 1851 -935 <-> 136, 935, 1537, 1775 -936 <-> 353 -937 <-> 689, 1347 -938 <-> 381, 566 -939 <-> 56, 1762 -940 <-> 1559, 1860 -941 <-> 1504, 1671, 1723, 1724 -942 <-> 1293 -943 <-> 21, 593 -944 <-> 1335 -945 <-> 1650 -946 <-> 1556 -947 <-> 26 -948 <-> 744, 879 -949 <-> 717, 1604 -950 <-> 1201, 1322 -951 <-> 794 -952 <-> 668, 1371 -953 <-> 1272 -954 <-> 954 -955 <-> 74 -956 <-> 648, 1870 -957 <-> 44, 1769 -958 <-> 13, 1388, 1660 -959 <-> 959 -960 <-> 153 -961 <-> 910 -962 <-> 17, 805 -963 <-> 339, 1783 -964 <-> 1100 -965 <-> 811, 1677 -966 <-> 966 -967 <-> 304, 1029, 1269, 1910 -968 <-> 81, 1091 -969 <-> 1379, 1693 -970 <-> 1289 -971 <-> 971 -972 <-> 70 -973 <-> 973 -974 <-> 663, 738, 1005 -975 <-> 922 -976 <-> 319 -977 <-> 585, 631 -978 <-> 756, 1628 -979 <-> 687, 979 -980 <-> 1151, 1317 -981 <-> 1199, 1902 -982 <-> 1223 -983 <-> 1931 -984 <-> 2, 409 -985 <-> 985 -986 <-> 358, 897, 1564 -987 <-> 987, 1644 -988 <-> 36, 837 -989 <-> 1275 -990 <-> 990, 1295 -991 <-> 207, 1415 -992 <-> 1242, 1397, 1467, 1579 -993 <-> 1042, 1767 -994 <-> 633, 1595, 1813 -995 <-> 194 -996 <-> 1096, 1369 -997 <-> 1231, 1973 -998 <-> 1367 -999 <-> 999 -1000 <-> 684, 1078 -1001 <-> 219 -1002 <-> 1442 -1003 <-> 441 -1004 <-> 558, 628, 678 -1005 <-> 475, 974 -1006 <-> 103, 345, 604 -1007 <-> 490, 1274 -1008 <-> 1708, 1819 -1009 <-> 1009, 1118 -1010 <-> 1223, 1803 -1011 <-> 1867 -1012 <-> 299, 1923 -1013 <-> 561, 1187, 1477, 1926 -1014 <-> 1861 -1015 <-> 446, 1015, 1858 -1016 <-> 889 -1017 <-> 1435 -1018 <-> 42, 98 -1019 <-> 767, 898, 1764 -1020 <-> 1020 -1021 <-> 1666 -1022 <-> 347, 1022, 1310 -1023 <-> 26, 813, 1109, 1538, 1988 -1024 <-> 195, 738 -1025 <-> 616 -1026 <-> 722, 855, 1337, 1415 -1027 <-> 241, 1309 -1028 <-> 1028 -1029 <-> 745, 967 -1030 <-> 1577, 1689 -1031 <-> 1031 -1032 <-> 125 -1033 <-> 604, 1127, 1194 -1034 <-> 192 -1035 <-> 1992 -1036 <-> 707, 1509 -1037 <-> 1347 -1038 <-> 389 -1039 <-> 723, 1535 -1040 <-> 826, 1245, 1918 -1041 <-> 281 -1042 <-> 993 -1043 <-> 67, 769, 1142 -1044 <-> 1690 -1045 <-> 287 -1046 <-> 1561 -1047 <-> 4 -1048 <-> 472, 1703 -1049 <-> 632, 1816 -1050 <-> 1157, 1899 -1051 <-> 1818 -1052 <-> 347, 1904 -1053 <-> 593, 845, 899 -1054 <-> 1983 -1055 <-> 1599 -1056 <-> 41, 320, 325, 1567 -1057 <-> 1372, 1569 -1058 <-> 185 -1059 <-> 1112, 1939 -1060 <-> 576, 1314, 1557, 1751, 1752 -1061 <-> 1285 -1062 <-> 1162, 1338, 1739 -1063 <-> 1291 -1064 <-> 132 -1065 <-> 769, 1317 -1066 <-> 510 -1067 <-> 405, 1452, 1953 -1068 <-> 1200 -1069 <-> 1069 -1070 <-> 19 -1071 <-> 1361, 1382 -1072 <-> 1307, 1534 -1073 <-> 1282 -1074 <-> 1323, 1653 -1075 <-> 457 -1076 <-> 695, 1703 -1077 <-> 1180 -1078 <-> 434, 1000 -1079 <-> 733 -1080 <-> 130, 1757 -1081 <-> 202, 623 -1082 <-> 1082 -1083 <-> 506, 703, 1279 -1084 <-> 314, 1812 -1085 <-> 242 -1086 <-> 350 -1087 <-> 1524 -1088 <-> 706, 1900 -1089 <-> 788 -1090 <-> 1260 -1091 <-> 968, 1522 -1092 <-> 173, 631, 1850 -1093 <-> 1093, 1390 -1094 <-> 182, 390 -1095 <-> 756 -1096 <-> 996 -1097 <-> 448 -1098 <-> 464, 612 -1099 <-> 292, 486 -1100 <-> 964, 1326 -1101 <-> 907, 1799 -1102 <-> 1927 -1103 <-> 928, 1103 -1104 <-> 252 -1105 <-> 166, 297 -1106 <-> 1106, 1896 -1107 <-> 1107 -1108 <-> 459 -1109 <-> 1023 -1110 <-> 422, 801 -1111 <-> 456, 685 -1112 <-> 262, 1059 -1113 <-> 1267 -1114 <-> 485 -1115 <-> 1115, 1827 -1116 <-> 1596 -1117 <-> 395, 449, 1382 -1118 <-> 1009 -1119 <-> 281, 1670 -1120 <-> 434, 1165 -1121 <-> 167, 1121 -1122 <-> 1809 -1123 <-> 895 -1124 <-> 283 -1125 <-> 499, 720, 1308 -1126 <-> 790, 1526 -1127 <-> 1033 -1128 <-> 1500 -1129 <-> 168, 418, 1642, 1947 -1130 <-> 1454 -1131 <-> 1683 -1132 <-> 517, 1784 -1133 <-> 288 -1134 <-> 314, 749, 1586 -1135 <-> 102 -1136 <-> 1136 -1137 <-> 680 -1138 <-> 1755 -1139 <-> 654 -1140 <-> 1140 -1141 <-> 1141 -1142 <-> 1043, 1862 -1143 <-> 1550 -1144 <-> 535, 1144, 1849 -1145 <-> 209, 671, 815, 1268 -1146 <-> 145 -1147 <-> 134 -1148 <-> 774 -1149 <-> 36, 497, 499, 1652 -1150 <-> 271, 1150 -1151 <-> 51, 980, 1651 -1152 <-> 533 -1153 <-> 398, 757 -1154 <-> 1313 -1155 <-> 145, 617, 1336, 1721 -1156 <-> 1838 -1157 <-> 10, 1050 -1158 <-> 895 -1159 <-> 532, 1708 -1160 <-> 1357 -1161 <-> 1200, 1999 -1162 <-> 820, 1062 -1163 <-> 1821 -1164 <-> 488, 1572 -1165 <-> 515, 1120 -1166 <-> 36, 836 -1167 <-> 664 -1168 <-> 11, 515, 771, 1967 -1169 <-> 358 -1170 <-> 926 -1171 <-> 1666, 1827 -1172 <-> 262, 1439 -1173 <-> 123, 355, 1341 -1174 <-> 1204, 1525 -1175 <-> 530 -1176 <-> 501, 654 -1177 <-> 1311, 1796 -1178 <-> 186, 1536, 1551, 1853 -1179 <-> 1822, 1947 -1180 <-> 1077, 1264 -1181 <-> 163, 1181 -1182 <-> 225 -1183 <-> 1237, 1715, 1798 -1184 <-> 41 -1185 <-> 297, 1185 -1186 <-> 909 -1187 <-> 619, 1013 -1188 <-> 1698 -1189 <-> 488, 560 -1190 <-> 1834, 1933 -1191 <-> 402, 859, 1191 -1192 <-> 1839 -1193 <-> 608, 1438 -1194 <-> 435, 1033, 1754 -1195 <-> 46, 1828 -1196 <-> 612, 911, 1975 -1197 <-> 1503, 1854 -1198 <-> 733, 826 -1199 <-> 981 -1200 <-> 493, 872, 1068, 1161 -1201 <-> 874, 950 -1202 <-> 923 -1203 <-> 40, 729, 1719 -1204 <-> 542, 557, 1174 -1205 <-> 1332 -1206 <-> 148, 182 -1207 <-> 1207 -1208 <-> 91, 273, 413, 658, 1234 -1209 <-> 1995 -1210 <-> 576, 703, 796 -1211 <-> 1227, 1891 -1212 <-> 338, 1362 -1213 <-> 6 -1214 <-> 589, 732 -1215 <-> 4, 100, 444, 1842 -1216 <-> 497, 1745 -1217 <-> 409, 1354 -1218 <-> 607 -1219 <-> 29, 484, 1712 -1220 <-> 570 -1221 <-> 302, 1429 -1222 <-> 625, 1412 -1223 <-> 260, 982, 1010, 1591 -1224 <-> 9, 258, 278, 1506, 1893 -1225 <-> 1906 -1226 <-> 1226 -1227 <-> 1211 -1228 <-> 1773 -1229 <-> 18 -1230 <-> 908 -1231 <-> 701, 997 -1232 <-> 348, 349 -1233 <-> 59 -1234 <-> 1208 -1235 <-> 817, 1994 -1236 <-> 508 -1237 <-> 1183 -1238 <-> 1529 -1239 <-> 540, 1524, 1552 -1240 <-> 512 -1241 <-> 1241 -1242 <-> 992, 1685 -1243 <-> 1934 -1244 <-> 1574, 1839 -1245 <-> 727, 1040 -1246 <-> 1380 -1247 <-> 1506, 1923 -1248 <-> 50, 1610 -1249 <-> 674 -1250 <-> 485 -1251 <-> 444, 655, 1718 -1252 <-> 266, 1862 -1253 <-> 645, 1709 -1254 <-> 1254 -1255 <-> 922, 1255, 1341 -1256 <-> 930, 1346 -1257 <-> 1465, 1844 -1258 <-> 763 -1259 <-> 335, 590, 1259 -1260 <-> 129, 1090 -1261 <-> 652, 1261, 1838 -1262 <-> 1262, 1912 -1263 <-> 7, 1438, 1554 -1264 <-> 338, 1180 -1265 <-> 269, 1265 -1266 <-> 861, 1281, 1423 -1267 <-> 612, 1113, 1289 -1268 <-> 1145 -1269 <-> 967 -1270 <-> 94, 215, 925, 1860 -1271 <-> 1376 -1272 <-> 223, 953 -1273 <-> 1301 -1274 <-> 1007, 1860 -1275 <-> 216, 393, 989, 1275 -1276 <-> 470 -1277 <-> 288 -1278 <-> 869 -1279 <-> 1083, 1755 -1280 <-> 1588 -1281 <-> 1266 -1282 <-> 677, 1073, 1575, 1625 -1283 <-> 1571 -1284 <-> 1828 -1285 <-> 847, 1061, 1641 -1286 <-> 1494, 1649, 1889 -1287 <-> 159 -1288 <-> 142, 1288 -1289 <-> 970, 1267, 1668 -1290 <-> 406 -1291 <-> 728, 879, 1063, 1885 -1292 <-> 1407 -1293 <-> 942, 1318, 1459 -1294 <-> 311, 1754 -1295 <-> 990, 1512 -1296 <-> 130, 479, 508 -1297 <-> 533, 559 -1298 <-> 1839 -1299 <-> 70 -1300 <-> 37, 1886, 1998 -1301 <-> 1273, 1340 -1302 <-> 317, 674, 1485 -1303 <-> 161, 1624 -1304 <-> 1304 -1305 <-> 1410 -1306 <-> 744 -1307 <-> 20, 870, 1072 -1308 <-> 194, 212, 1125 -1309 <-> 251, 1027 -1310 <-> 22, 1022, 1777 -1311 <-> 1177 -1312 <-> 786 -1313 <-> 1154, 1706 -1314 <-> 1060 -1315 <-> 683, 745 -1316 <-> 1793, 1898 -1317 <-> 523, 980, 1065, 1787 -1318 <-> 1293 -1319 <-> 1319 -1320 <-> 1320 -1321 <-> 206 -1322 <-> 950, 1957 -1323 <-> 1074, 1823 -1324 <-> 352 -1325 <-> 875, 1740 -1326 <-> 493, 1100 -1327 <-> 701, 1633 -1328 <-> 1, 55 -1329 <-> 1633 -1330 <-> 503, 1687, 1782 -1331 <-> 376, 1531, 1766 -1332 <-> 436, 705, 1205 -1333 <-> 565 -1334 <-> 1805 -1335 <-> 408, 944 -1336 <-> 917, 1155 -1337 <-> 1026 -1338 <-> 527, 1062 -1339 <-> 517, 853 -1340 <-> 601, 1301, 1708 -1341 <-> 1173, 1255 -1342 <-> 684 -1343 <-> 210 -1344 <-> 121, 483 -1345 <-> 175 -1346 <-> 578, 1256 -1347 <-> 937, 1037, 1735 -1348 <-> 685 -1349 <-> 275, 1594 -1350 <-> 127, 130 -1351 <-> 485 -1352 <-> 884, 1352 -1353 <-> 1604, 1800 -1354 <-> 1217 -1355 <-> 1355, 1985 -1356 <-> 855, 1840 -1357 <-> 651, 1160, 1388 -1358 <-> 92 -1359 <-> 112 -1360 <-> 1455 -1361 <-> 1071, 1909 -1362 <-> 304, 1212 -1363 <-> 791 -1364 <-> 161, 1426 -1365 <-> 1365 -1366 <-> 1366, 1433 -1367 <-> 133, 998 -1368 <-> 851 -1369 <-> 12, 996, 1425 -1370 <-> 665 -1371 <-> 13, 735, 952, 1371, 1857 -1372 <-> 613, 1057 -1373 <-> 638, 1511 -1374 <-> 230, 1593 -1375 <-> 104 -1376 <-> 179, 1271, 1639 -1377 <-> 291 -1378 <-> 1919 -1379 <-> 575, 969 -1380 <-> 1246, 1501, 1903 -1381 <-> 73, 825, 1922 -1382 <-> 1071, 1117, 1541, 1810 -1383 <-> 111 -1384 <-> 457 -1385 <-> 1878, 1966 -1386 <-> 1396 -1387 <-> 229, 934, 1853 -1388 <-> 958, 1357, 1424 -1389 <-> 531 -1390 <-> 1093, 1603 -1391 <-> 408 -1392 <-> 446 -1393 <-> 411 -1394 <-> 1866 -1395 <-> 450, 1851 -1396 <-> 519, 1386 -1397 <-> 79, 568, 992 -1398 <-> 224 -1399 <-> 1443, 1799, 1915 -1400 <-> 744 -1401 <-> 1685 -1402 <-> 892 -1403 <-> 1714 -1404 <-> 632 -1405 <-> 911, 1532 -1406 <-> 233, 1606 -1407 <-> 700, 1292 -1408 <-> 431, 1408, 1416 -1409 <-> 211, 472 -1410 <-> 821, 1305 -1411 <-> 1653, 1993 -1412 <-> 628, 1222 -1413 <-> 473, 816 -1414 <-> 451 -1415 <-> 991, 1026 -1416 <-> 1408 -1417 <-> 752 -1418 <-> 423, 897 -1419 <-> 2, 30 -1420 <-> 1420 -1421 <-> 808 -1422 <-> 58, 104 -1423 <-> 1266 -1424 <-> 1388 -1425 <-> 1369 -1426 <-> 737, 1364, 1847, 1913 -1427 <-> 246, 274 -1428 <-> 1964 -1429 <-> 76, 806, 1221 -1430 <-> 1430 -1431 <-> 322 -1432 <-> 1719 -1433 <-> 1366, 1988 -1434 <-> 89, 106 -1435 <-> 1017, 1730 -1436 <-> 1997 -1437 <-> 317, 352 -1438 <-> 1193, 1263 -1439 <-> 1172 -1440 <-> 344 -1441 <-> 37 -1442 <-> 1002, 1860 -1443 <-> 1399 -1444 <-> 31, 298 -1445 <-> 823, 854 -1446 <-> 113, 403 -1447 <-> 1508, 1720 -1448 <-> 766, 1791 -1449 <-> 527 -1450 <-> 134 -1451 <-> 88, 571 -1452 <-> 923, 1067 -1453 <-> 770 -1454 <-> 95, 823, 1130, 1454 -1455 <-> 1360, 1533 -1456 <-> 1456, 1489, 1529 -1457 <-> 114, 149, 1956 -1458 <-> 382, 631, 1458 -1459 <-> 570, 1293 -1460 <-> 202, 369 -1461 <-> 300 -1462 <-> 1636 -1463 <-> 393, 1659, 1939 -1464 <-> 31 -1465 <-> 3, 323, 547, 1257, 1732 -1466 <-> 320 -1467 <-> 723, 992, 1706 -1468 <-> 154, 843 -1469 <-> 713 -1470 <-> 354, 699 -1471 <-> 1471 -1472 <-> 825 -1473 <-> 715 -1474 <-> 745 -1475 <-> 645 -1476 <-> 622, 758 -1477 <-> 1013, 1645, 1669 -1478 <-> 711 -1479 <-> 734 -1480 <-> 650 -1481 <-> 1481 -1482 <-> 310, 871 -1483 <-> 918, 1504 -1484 <-> 931 -1485 <-> 336, 421, 775, 822, 1302 -1486 <-> 157, 1631 -1487 <-> 236, 437, 788, 1980 -1488 <-> 1560 -1489 <-> 739, 1456 -1490 <-> 383 -1491 <-> 535 -1492 <-> 471, 614 -1493 <-> 743 -1494 <-> 565, 1286 -1495 <-> 1627 -1496 <-> 761, 1496 -1497 <-> 249, 425, 851 -1498 <-> 749 -1499 <-> 231 -1500 <-> 930, 1128 -1501 <-> 390, 1380 -1502 <-> 1713 -1503 <-> 152, 880, 1197 -1504 <-> 47, 876, 941, 1483, 1945 -1505 <-> 295, 530, 753 -1506 <-> 818, 1224, 1247 -1507 <-> 141, 216, 1565, 1726 -1508 <-> 647, 1447, 1521, 1590 -1509 <-> 580, 1036, 1605, 1609 -1510 <-> 40, 1885 -1511 <-> 858, 1373 -1512 <-> 1295 -1513 <-> 78, 430 -1514 <-> 1772 -1515 <-> 153 -1516 <-> 144, 260, 1818 -1517 <-> 32, 1616, 1806 -1518 <-> 472 -1519 <-> 259 -1520 <-> 94, 1542 -1521 <-> 1508 -1522 <-> 313, 1091, 1631 -1523 <-> 685 -1524 <-> 241, 1087, 1239 -1525 <-> 1174 -1526 <-> 1126 -1527 <-> 1835 -1528 <-> 803 -1529 <-> 460, 833, 1238, 1456 -1530 <-> 1784 -1531 <-> 1331 -1532 <-> 629, 1405 -1533 <-> 470, 1455, 1533, 1796 -1534 <-> 1072 -1535 <-> 605, 724, 1039 -1536 <-> 1178 -1537 <-> 273, 801, 935 -1538 <-> 1023, 1734 -1539 <-> 713 -1540 <-> 1748 -1541 <-> 1382, 1683 -1542 <-> 1520 -1543 <-> 781 -1544 <-> 1631 -1545 <-> 1910 -1546 <-> 1942 -1547 <-> 260 -1548 <-> 581, 747 -1549 <-> 804 -1550 <-> 159, 1143 -1551 <-> 1178 -1552 <-> 461, 1239, 1846 -1553 <-> 1553, 1982 -1554 <-> 68, 85, 1263, 1597 -1555 <-> 1713, 1931 -1556 <-> 946, 1556 -1557 <-> 718, 1060 -1558 <-> 783 -1559 <-> 640, 940 -1560 <-> 1488, 1806, 1898, 1949 -1561 <-> 441, 1046 -1562 <-> 715, 1889 -1563 <-> 552 -1564 <-> 986 -1565 <-> 1507, 1689 -1566 <-> 1570 -1567 <-> 1056 -1568 <-> 3, 371 -1569 <-> 119, 1057, 1852 -1570 <-> 1566, 1570 -1571 <-> 1283, 1736 -1572 <-> 569, 1164, 1995 -1573 <-> 1573, 1784, 1987 -1574 <-> 1244, 1574 -1575 <-> 1282, 1575, 1866 -1576 <-> 123 -1577 <-> 1030 -1578 <-> 289, 710 -1579 <-> 992, 1684 -1580 <-> 4 -1581 <-> 1581 -1582 <-> 128, 883 -1583 <-> 57 -1584 <-> 116 -1585 <-> 637 -1586 <-> 1134 -1587 <-> 1587 -1588 <-> 159, 1280 -1589 <-> 1915 -1590 <-> 136, 1508 -1591 <-> 1223 -1592 <-> 293, 1891 -1593 <-> 853, 1374 -1594 <-> 1349, 1886 -1595 <-> 994, 1595 -1596 <-> 364, 1116 -1597 <-> 1554 -1598 <-> 1729 -1599 <-> 583, 1055 -1600 <-> 147, 458, 1600 -1601 <-> 1894 -1602 <-> 116 -1603 <-> 1390 -1604 <-> 481, 657, 949, 1353, 1983 -1605 <-> 115, 668, 863, 1509 -1606 <-> 1406 -1607 <-> 261, 410, 821 -1608 <-> 690 -1609 <-> 1509 -1610 <-> 673, 1248 -1611 <-> 118, 1788 -1612 <-> 1854 -1613 <-> 547 -1614 <-> 547, 1807 -1615 <-> 479 -1616 <-> 222, 1517 -1617 <-> 880, 1989 -1618 <-> 826 -1619 <-> 860, 1807 -1620 <-> 291 -1621 <-> 618, 1957 -1622 <-> 535 -1623 <-> 480, 531 -1624 <-> 1303 -1625 <-> 223, 1282 -1626 <-> 503, 604 -1627 <-> 1495, 1933 -1628 <-> 288, 978 -1629 <-> 1629 -1630 <-> 465, 1872 -1631 <-> 1486, 1522, 1544 -1632 <-> 196 -1633 <-> 1327, 1329 -1634 <-> 123, 661, 740 -1635 <-> 139 -1636 <-> 913, 1462, 1752 -1637 <-> 404, 522 -1638 <-> 1779, 1813 -1639 <-> 33, 190, 1376, 1639 -1640 <-> 1816 -1641 <-> 554, 1285 -1642 <-> 1129 -1643 <-> 71, 1844 -1644 <-> 171, 987 -1645 <-> 1477 -1646 <-> 16, 199 -1647 <-> 1702 -1648 <-> 895 -1649 <-> 1286 -1650 <-> 344, 886, 945 -1651 <-> 799, 1151 -1652 <-> 1149, 1961, 1984 -1653 <-> 222, 1074, 1411 -1654 <-> 108, 553 -1655 <-> 35, 156, 226, 1992 -1656 <-> 537, 655 -1657 <-> 105, 609 -1658 <-> 1658 -1659 <-> 519, 1463 -1660 <-> 958 -1661 <-> 290, 1929 -1662 <-> 435 -1663 <-> 1855 -1664 <-> 345 -1665 <-> 554 -1666 <-> 1021, 1171 -1667 <-> 662, 687 -1668 <-> 1289 -1669 <-> 842, 1477, 1795, 1975 -1670 <-> 1119, 1921 -1671 <-> 941 -1672 <-> 115 -1673 <-> 385 -1674 <-> 518 -1675 <-> 247, 676 -1676 <-> 509, 1987 -1677 <-> 965, 1677 -1678 <-> 151, 1692 -1679 <-> 541 -1680 <-> 1680 -1681 <-> 221, 789 -1682 <-> 1736, 1767, 1947 -1683 <-> 1131, 1541 -1684 <-> 1579 -1685 <-> 1242, 1401 -1686 <-> 1736 -1687 <-> 680, 1330 -1688 <-> 881, 1829 -1689 <-> 1030, 1565 -1690 <-> 778, 1044, 1900 -1691 <-> 28, 75 -1692 <-> 627, 1678 -1693 <-> 122, 400, 671, 969 -1694 <-> 58, 61 -1695 <-> 741 -1696 <-> 224, 1958 -1697 <-> 1935 -1698 <-> 301, 1188 -1699 <-> 29, 37 -1700 <-> 742, 1883 -1701 <-> 662 -1702 <-> 441, 1647 -1703 <-> 1048, 1076 -1704 <-> 185 -1705 <-> 715 -1706 <-> 1313, 1467 -1707 <-> 867 -1708 <-> 1008, 1159, 1340 -1709 <-> 560, 561, 1253, 1976 -1710 <-> 840 -1711 <-> 1711 -1712 <-> 12, 1219 -1713 <-> 631, 1502, 1555 -1714 <-> 1403, 1714, 1902 -1715 <-> 1183 -1716 <-> 79 -1717 <-> 738 -1718 <-> 602, 1251 -1719 <-> 1203, 1432 -1720 <-> 1447 -1721 <-> 1155 -1722 <-> 930 -1723 <-> 941 -1724 <-> 941 -1725 <-> 432 -1726 <-> 1507 -1727 <-> 397 -1728 <-> 1728, 1937 -1729 <-> 1598, 1913 -1730 <-> 105, 757, 768, 1435, 1730 -1731 <-> 789 -1732 <-> 795, 1465 -1733 <-> 551, 1765, 1835 -1734 <-> 1538 -1735 <-> 755, 1347 -1736 <-> 1571, 1682, 1686 -1737 <-> 932, 1795 -1738 <-> 329, 1738 -1739 <-> 267, 1062, 1848 -1740 <-> 1325 -1741 <-> 326, 541, 1952 -1742 <-> 344, 754 -1743 <-> 75, 253, 507 -1744 <-> 288 -1745 <-> 1216 -1746 <-> 92, 138 -1747 <-> 333 -1748 <-> 182, 1540 -1749 <-> 853 -1750 <-> 88 -1751 <-> 363, 1060 -1752 <-> 1060, 1636 -1753 <-> 433, 583, 1873 -1754 <-> 1194, 1294 -1755 <-> 1138, 1279 -1756 <-> 538, 636 -1757 <-> 1080 -1758 <-> 472, 514 -1759 <-> 284 -1760 <-> 1760 -1761 <-> 326, 620 -1762 <-> 648, 939, 1989 -1763 <-> 383 -1764 <-> 599, 1019, 1941 -1765 <-> 1733 -1766 <-> 289, 365, 1331 -1767 <-> 993, 1682, 1767 -1768 <-> 1768, 1859 -1769 <-> 957 -1770 <-> 288 -1771 <-> 1875 -1772 <-> 1514, 1772 -1773 <-> 801, 1228 -1774 <-> 0 -1775 <-> 935 -1776 <-> 133 -1777 <-> 1310 -1778 <-> 17, 320 -1779 <-> 465, 1638 -1780 <-> 1906 -1781 <-> 1969 -1782 <-> 1330 -1783 <-> 97, 963, 1960, 1983 -1784 <-> 1132, 1530, 1573 -1785 <-> 422 -1786 <-> 1786 -1787 <-> 854, 1317 -1788 <-> 926, 1611 -1789 <-> 586, 1829 -1790 <-> 74, 1790 -1791 <-> 52, 109, 1448 -1792 <-> 1860 -1793 <-> 1316, 1981 -1794 <-> 138 -1795 <-> 1669, 1737, 1861 -1796 <-> 1177, 1533 -1797 <-> 327, 875 -1798 <-> 852, 1183 -1799 <-> 1101, 1399, 1964 -1800 <-> 491, 641, 807, 1353 -1801 <-> 20, 455 -1802 <-> 123 -1803 <-> 415, 1010 -1804 <-> 1804 -1805 <-> 1334, 1926 -1806 <-> 1517, 1560 -1807 <-> 1614, 1619 -1808 <-> 261, 643 -1809 <-> 145, 1122 -1810 <-> 1382 -1811 <-> 60 -1812 <-> 1084 -1813 <-> 213, 994, 1638 -1814 <-> 14, 355 -1815 <-> 841, 1996 -1816 <-> 1049, 1640 -1817 <-> 388 -1818 <-> 1051, 1516 -1819 <-> 1008 -1820 <-> 403 -1821 <-> 350, 1163 -1822 <-> 669, 1179, 1927 -1823 <-> 1323 -1824 <-> 667, 824, 1879 -1825 <-> 608, 839, 876, 1965 -1826 <-> 473, 907 -1827 <-> 1115, 1171 -1828 <-> 440, 1195, 1284, 1913 -1829 <-> 275, 1688, 1789 -1830 <-> 1830 -1831 <-> 1831 -1832 <-> 248, 726 -1833 <-> 1833 -1834 <-> 1190 -1835 <-> 639, 1527, 1733 -1836 <-> 250, 1836 -1837 <-> 577, 1970 -1838 <-> 1156, 1261 -1839 <-> 1192, 1244, 1298 -1840 <-> 1356 -1841 <-> 81 -1842 <-> 738, 1215 -1843 <-> 1843 -1844 <-> 383, 1257, 1643 -1845 <-> 260, 451 -1846 <-> 1552 -1847 <-> 755, 879, 1426 -1848 <-> 38, 1739 -1849 <-> 468, 1144 -1850 <-> 1092 -1851 <-> 934, 1395 -1852 <-> 198, 1569 -1853 <-> 718, 1178, 1387 -1854 <-> 588, 1197, 1612 -1855 <-> 162, 734, 1663 -1856 <-> 236, 751 -1857 <-> 1371 -1858 <-> 1015 -1859 <-> 1768 -1860 <-> 940, 1270, 1274, 1442, 1792 -1861 <-> 1014, 1795 -1862 <-> 1142, 1252 -1863 <-> 281 -1864 <-> 717 -1865 <-> 1865 -1866 <-> 574, 602, 1394, 1575 -1867 <-> 707, 1011 -1868 <-> 659, 1868 -1869 <-> 173, 1991 -1870 <-> 391, 828, 956, 1880 -1871 <-> 189, 692 -1872 <-> 1630 -1873 <-> 42, 1753 -1874 <-> 883 -1875 <-> 11, 1771 -1876 <-> 158 -1877 <-> 186 -1878 <-> 796, 1385 -1879 <-> 486, 1824 -1880 <-> 920, 1870 -1881 <-> 433, 573, 905 -1882 <-> 625, 1954 -1883 <-> 300, 1700 -1884 <-> 1884 -1885 <-> 1291, 1510 -1886 <-> 19, 209, 1300, 1594 -1887 <-> 277 -1888 <-> 85 -1889 <-> 489, 1286, 1562 -1890 <-> 170, 832 -1891 <-> 1211, 1592, 1973 -1892 <-> 611, 697, 914 -1893 <-> 1224 -1894 <-> 775, 1601 -1895 <-> 308, 323, 618 -1896 <-> 1106 -1897 <-> 118, 368, 408 -1898 <-> 1316, 1560, 1944 -1899 <-> 463, 1050 -1900 <-> 1088, 1690, 1951 -1901 <-> 16, 27 -1902 <-> 981, 1714 -1903 <-> 1380 -1904 <-> 278, 1052 -1905 <-> 20 -1906 <-> 671, 1225, 1780 -1907 <-> 800 -1908 <-> 583 -1909 <-> 1361, 1940 -1910 <-> 134, 967, 1545 -1911 <-> 1973 -1912 <-> 1262 -1913 <-> 832, 1426, 1729, 1828 -1914 <-> 1914 -1915 <-> 1399, 1589 -1916 <-> 650, 1916 -1917 <-> 726, 1917 -1918 <-> 1040 -1919 <-> 196, 1378, 1919 -1920 <-> 1, 218 -1921 <-> 1670, 1952 -1922 <-> 1381 -1923 <-> 892, 1012, 1247 -1924 <-> 373, 904 -1925 <-> 210, 1935 -1926 <-> 543, 1013, 1805 -1927 <-> 1102, 1822 -1928 <-> 346, 1928 -1929 <-> 1661 -1930 <-> 19 -1931 <-> 983, 1555 -1932 <-> 685 -1933 <-> 16, 1190, 1627, 1933 -1934 <-> 288, 1243 -1935 <-> 535, 1697, 1925 -1936 <-> 295 -1937 <-> 112, 157, 1728 -1938 <-> 293 -1939 <-> 689, 1059, 1463 -1940 <-> 616, 1909 -1941 <-> 1764 -1942 <-> 243, 256, 1546 -1943 <-> 1950 -1944 <-> 260, 1898 -1945 <-> 1504 -1946 <-> 1946 -1947 <-> 87, 1129, 1179, 1682 -1948 <-> 294 -1949 <-> 1560 -1950 <-> 21, 1943 -1951 <-> 407, 1900 -1952 <-> 1741, 1921 -1953 <-> 1067 -1954 <-> 696, 1882 -1955 <-> 754 -1956 <-> 1457 -1957 <-> 1322, 1621 -1958 <-> 48, 708, 1696 -1959 <-> 1959 -1960 <-> 389, 1783 -1961 <-> 1652 -1962 <-> 29 -1963 <-> 914 -1964 <-> 1428, 1799 -1965 <-> 1825 -1966 <-> 1385 -1967 <-> 1168 -1968 <-> 265, 475 -1969 <-> 4, 1781 -1970 <-> 315, 926, 1837 -1971 <-> 242, 545, 1971 -1972 <-> 1972 -1973 <-> 997, 1891, 1911 -1974 <-> 885 -1975 <-> 1196, 1669 -1976 <-> 1709 -1977 <-> 1977 -1978 <-> 1978 -1979 <-> 1979 -1980 <-> 598, 1487 -1981 <-> 1793 -1982 <-> 1553 -1983 <-> 1054, 1604, 1783 -1984 <-> 731, 1652 -1985 <-> 1355 -1986 <-> 795 -1987 <-> 1573, 1676 -1988 <-> 495, 1023, 1433 -1989 <-> 1617, 1762 -1990 <-> 376 -1991 <-> 1869 -1992 <-> 1035, 1655 -1993 <-> 1411 -1994 <-> 1235, 1994 -1995 <-> 57, 1209, 1572 -1996 <-> 181, 1815 -1997 <-> 395, 1436 -1998 <-> 1300 -1999 <-> 175, 1161 diff --git a/2017/d12/ex2/ex2.py b/2017/d12/ex2/ex2.py deleted file mode 100755 index c6c0fbf..0000000 --- a/2017/d12/ex2/ex2.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python - -import collections -import sys - - -class UnionFind: - _parent: list[int] - _rank: list[int] - - def __init__(self, size: int): - # Each node is in its own set, making it its own parent... - self._parent = list(range(size)) - # ... And its rank 0 - self._rank = [0] * size - - def find(self, elem: int) -> int: - while (parent := self._parent[elem]) != elem: - # Replace each parent link by a link to the grand-parent - elem, self._parent[elem] = parent, self._parent[parent] - return elem - - def union(self, lhs: int, rhs: int) -> int: - lhs = self.find(lhs) - rhs = self.find(rhs) - # Bail out early if they already belong to the same set - if lhs == rhs: - return lhs - # Always keep `lhs` as the taller tree - if self._rank[lhs] < self._rank[rhs]: - lhs, rhs = rhs, lhs - # Merge the smaller tree into the taller one - self._parent[rhs] = lhs - # Update the rank when merging trees of approximately the same size - if self._rank[lhs] == self._rank[rhs]: - self._rank[lhs] += 1 - return lhs - - def sets(self) -> dict[int, set[int]]: - res: dict[int, set[int]] = collections.defaultdict(set) - for elem in range(len(self._parent)): - res[self.find(elem)].add(elem) - return dict(res) - - -def solve(input: str) -> int: - def parse_line(input: str) -> tuple[int, set[int]]: - origin, others = input.split(" <-> ") - return int(origin), {int(n) for n in others.split(", ")} - - def parse(input: str) -> dict[int, set[int]]: - return {n: children for n, children in map(parse_line, input.splitlines())} - - def count_groups(graph: dict[int, set[int]]) -> int: - uf = UnionFind(len(graph)) - for n, children in graph.items(): - for child in children: - uf.union(n, child) - return len(uf.sets()) - - graph = parse(input) - return count_groups(graph) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d12/ex2/input b/2017/d12/ex2/input deleted file mode 100644 index 80e4ce6..0000000 --- a/2017/d12/ex2/input +++ /dev/null @@ -1,2000 +0,0 @@ -0 <-> 199, 1774 -1 <-> 350, 1328, 1920 -2 <-> 477, 984, 1419 -3 <-> 1465, 1568 -4 <-> 359, 1047, 1215, 1580, 1969 -5 <-> 613 -6 <-> 49, 617, 1213 -7 <-> 1263 -8 <-> 410 -9 <-> 1224 -10 <-> 1157 -11 <-> 304, 1168, 1875 -12 <-> 868, 891, 1369, 1712 -13 <-> 958, 1371 -14 <-> 1814 -15 <-> 261, 556 -16 <-> 830, 1646, 1901, 1933 -17 <-> 962, 1778 -18 <-> 109, 1229 -19 <-> 239, 1070, 1886, 1930 -20 <-> 327, 1307, 1801, 1905 -21 <-> 943, 1950 -22 <-> 1310 -23 <-> 659, 917 -24 <-> 373 -25 <-> 369 -26 <-> 947, 1023 -27 <-> 338, 1901 -28 <-> 1691 -29 <-> 132, 1219, 1699, 1962 -30 <-> 424, 822, 1419 -31 <-> 1444, 1464 -32 <-> 702, 1517 -33 <-> 1639 -34 <-> 909 -35 <-> 690, 1655 -36 <-> 988, 1149, 1166 -37 <-> 649, 1300, 1441, 1699 -38 <-> 1848 -39 <-> 382 -40 <-> 827, 1203, 1510 -41 <-> 714, 1056, 1184 -42 <-> 1018, 1873 -43 <-> 214 -44 <-> 670, 957 -45 <-> 45 -46 <-> 1195 -47 <-> 559, 1504 -48 <-> 1958 -49 <-> 6 -50 <-> 50, 1248 -51 <-> 1151 -52 <-> 52, 521, 1791 -53 <-> 304 -54 <-> 601 -55 <-> 1328 -56 <-> 939 -57 <-> 1583, 1995 -58 <-> 1422, 1694 -59 <-> 395, 1233 -60 <-> 862, 1811 -61 <-> 345, 1694 -62 <-> 62, 276 -63 <-> 280 -64 <-> 199 -65 <-> 117, 930 -66 <-> 364, 697 -67 <-> 1043 -68 <-> 287, 504, 1554 -69 <-> 498, 706 -70 <-> 77, 333, 713, 972, 1299 -71 <-> 1643 -72 <-> 694 -73 <-> 1381 -74 <-> 955, 1790 -75 <-> 1691, 1743 -76 <-> 76, 638, 1429 -77 <-> 70 -78 <-> 1513 -79 <-> 1397, 1716 -80 <-> 897 -81 <-> 968, 1841 -82 <-> 649 -83 <-> 522 -84 <-> 84, 125, 399, 498 -85 <-> 880, 1554, 1888 -86 <-> 86 -87 <-> 579, 1947 -88 <-> 470, 1451, 1750 -89 <-> 805, 1434 -90 <-> 453 -91 <-> 1208 -92 <-> 688, 1358, 1746 -93 <-> 357, 647 -94 <-> 234, 1270, 1520 -95 <-> 620, 1454 -96 <-> 390, 869, 919 -97 <-> 693, 1783 -98 <-> 259, 529, 782, 1018 -99 <-> 678 -100 <-> 1215 -101 <-> 459, 887 -102 <-> 888, 1135 -103 <-> 1006 -104 <-> 1375, 1422 -105 <-> 1657, 1730 -106 <-> 216, 1434 -107 <-> 333 -108 <-> 468, 1654 -109 <-> 18, 1791 -110 <-> 372 -111 <-> 111, 861, 1383 -112 <-> 1359, 1937 -113 <-> 414, 736, 1446 -114 <-> 426, 1457 -115 <-> 1605, 1672 -116 <-> 116, 713, 1584, 1602 -117 <-> 65 -118 <-> 1611, 1897 -119 <-> 541, 1569 -120 <-> 412, 787 -121 <-> 1344 -122 <-> 698, 752, 1693 -123 <-> 1173, 1576, 1634, 1802 -124 <-> 735 -125 <-> 84, 1032 -126 <-> 126, 225, 332 -127 <-> 1350 -128 <-> 128, 319, 327, 1582 -129 <-> 129, 654, 1260 -130 <-> 1080, 1296, 1350 -131 <-> 131 -132 <-> 29, 856, 1064 -133 <-> 659, 1367, 1776 -134 <-> 648, 1147, 1450, 1910 -135 <-> 411 -136 <-> 353, 935, 1590 -137 <-> 228 -138 <-> 194, 452, 1746, 1794 -139 <-> 139, 494, 1635 -140 <-> 681 -141 <-> 1507 -142 <-> 1288 -143 <-> 845 -144 <-> 1516 -145 <-> 502, 1146, 1155, 1809 -146 <-> 146, 750 -147 <-> 1600 -148 <-> 1206 -149 <-> 829, 1457 -150 <-> 675, 915 -151 <-> 651, 1678 -152 <-> 888, 1503 -153 <-> 498, 960, 1515 -154 <-> 1468 -155 <-> 751 -156 <-> 528, 803, 1655 -157 <-> 1486, 1937 -158 <-> 590, 1876 -159 <-> 159, 185, 1287, 1550, 1588 -160 <-> 160, 548 -161 <-> 1303, 1364 -162 <-> 1855 -163 <-> 1181 -164 <-> 442 -165 <-> 490 -166 <-> 1105 -167 <-> 1121 -168 <-> 760, 1129 -169 <-> 747 -170 <-> 1890 -171 <-> 1644 -172 <-> 593, 665 -173 <-> 1092, 1869 -174 <-> 705 -175 <-> 1345, 1999 -176 <-> 234, 606 -177 <-> 557, 688 -178 <-> 373 -179 <-> 1376 -180 <-> 638 -181 <-> 1996 -182 <-> 1094, 1206, 1748 -183 <-> 931 -184 <-> 880 -185 <-> 159, 1058, 1704 -186 <-> 765, 1178, 1877 -187 <-> 732 -188 <-> 188 -189 <-> 189, 1871 -190 <-> 395, 1639 -191 <-> 441 -192 <-> 192, 1034 -193 <-> 494 -194 <-> 138, 995, 1308 -195 <-> 1024 -196 <-> 226, 1632, 1919 -197 <-> 786 -198 <-> 286, 758, 1852 -199 <-> 0, 64, 1646 -200 <-> 314 -201 <-> 459, 658 -202 <-> 321, 492, 599, 1081, 1460 -203 <-> 225 -204 <-> 331, 462, 600 -205 <-> 898 -206 <-> 734, 1321 -207 <-> 558, 991 -208 <-> 397 -209 <-> 1145, 1886 -210 <-> 1343, 1925 -211 <-> 840, 1409 -212 <-> 1308 -213 <-> 1813 -214 <-> 43, 282 -215 <-> 1270 -216 <-> 106, 836, 1275, 1507 -217 <-> 312 -218 <-> 290, 386, 639, 1920 -219 <-> 784, 1001 -220 <-> 220, 322 -221 <-> 1681 -222 <-> 1616, 1653 -223 <-> 436, 1272, 1625 -224 <-> 1398, 1696 -225 <-> 126, 203, 1182 -226 <-> 196, 1655 -227 <-> 623 -228 <-> 137, 923 -229 <-> 253, 1387 -230 <-> 1374 -231 <-> 389, 1499 -232 <-> 442 -233 <-> 473, 1406 -234 <-> 94, 176 -235 <-> 235 -236 <-> 607, 838, 1487, 1856 -237 <-> 818 -238 <-> 387, 628 -239 <-> 19 -240 <-> 818 -241 <-> 1027, 1524 -242 <-> 1085, 1971 -243 <-> 1942 -244 <-> 299, 390, 916 -245 <-> 906 -246 <-> 246, 534, 763, 1427 -247 <-> 531, 1675 -248 <-> 336, 1832 -249 <-> 1497 -250 <-> 1836 -251 <-> 1309 -252 <-> 581, 1104 -253 <-> 229, 877, 1743 -254 <-> 254, 621 -255 <-> 831, 866, 874 -256 <-> 1942 -257 <-> 906 -258 <-> 1224 -259 <-> 98, 316, 419, 718, 1519 -260 <-> 1223, 1516, 1547, 1845, 1944 -261 <-> 15, 278, 1607, 1808 -262 <-> 1112, 1172 -263 <-> 424 -264 <-> 680 -265 <-> 1968 -266 <-> 804, 1252 -267 <-> 1739 -268 <-> 538, 546 -269 <-> 1265 -270 <-> 270 -271 <-> 1150 -272 <-> 272 -273 <-> 1208, 1537 -274 <-> 1427 -275 <-> 1349, 1829 -276 <-> 62, 906 -277 <-> 461, 634, 1887 -278 <-> 261, 1224, 1904 -279 <-> 303, 537 -280 <-> 63, 280, 926, 931 -281 <-> 862, 1041, 1119, 1863 -282 <-> 214, 488, 644 -283 <-> 646, 1124 -284 <-> 860, 1759 -285 <-> 746 -286 <-> 198 -287 <-> 68, 1045 -288 <-> 332, 1133, 1277, 1628, 1744, 1770, 1934 -289 <-> 1578, 1766 -290 <-> 218, 439, 1661 -291 <-> 596, 1377, 1620 -292 <-> 700, 848, 1099 -293 <-> 293, 1592, 1938 -294 <-> 653, 1948 -295 <-> 1505, 1936 -296 <-> 625, 925 -297 <-> 1105, 1185 -298 <-> 298, 544, 1444 -299 <-> 244, 933, 1012 -300 <-> 300, 1461, 1883 -301 <-> 880, 1698 -302 <-> 1221 -303 <-> 279, 375 -304 <-> 11, 53, 967, 1362 -305 <-> 777 -306 <-> 344 -307 <-> 582, 770 -308 <-> 792, 1895 -309 <-> 539 -310 <-> 390, 1482 -311 <-> 441, 1294 -312 <-> 217, 743 -313 <-> 1522 -314 <-> 200, 502, 835, 1084, 1134 -315 <-> 1970 -316 <-> 259 -317 <-> 1302, 1437 -318 <-> 365 -319 <-> 128, 976 -320 <-> 1056, 1466, 1778 -321 <-> 202 -322 <-> 220, 1431 -323 <-> 838, 1465, 1895 -324 <-> 443 -325 <-> 1056 -326 <-> 463, 1741, 1761 -327 <-> 20, 128, 681, 1797 -328 <-> 328, 348 -329 <-> 378, 1738 -330 <-> 459 -331 <-> 204, 331 -332 <-> 126, 288 -333 <-> 70, 107, 1747 -334 <-> 517, 614 -335 <-> 1259 -336 <-> 248, 550, 1485 -337 <-> 337 -338 <-> 27, 1212, 1264 -339 <-> 430, 963 -340 <-> 769 -341 <-> 341 -342 <-> 593, 718, 895 -343 <-> 569 -344 <-> 306, 1440, 1650, 1742 -345 <-> 61, 1006, 1664 -346 <-> 448, 1928 -347 <-> 1022, 1052 -348 <-> 328, 1232 -349 <-> 1232 -350 <-> 1, 526, 1086, 1821 -351 <-> 584 -352 <-> 518, 686, 1324, 1437 -353 <-> 136, 936 -354 <-> 1470 -355 <-> 1173, 1814 -356 <-> 698 -357 <-> 93 -358 <-> 737, 986, 1169 -359 <-> 4 -360 <-> 363 -361 <-> 417, 841 -362 <-> 928 -363 <-> 360, 1751 -364 <-> 66, 364, 1596 -365 <-> 318, 1766 -366 <-> 366 -367 <-> 367 -368 <-> 1897 -369 <-> 25, 369, 1460 -370 <-> 370 -371 <-> 1568 -372 <-> 110, 582 -373 <-> 24, 178, 1924 -374 <-> 374 -375 <-> 303 -376 <-> 1331, 1990 -377 <-> 388, 601, 837 -378 <-> 329 -379 <-> 623 -380 <-> 671 -381 <-> 938 -382 <-> 39, 1458 -383 <-> 383, 1490, 1763, 1844 -384 <-> 832 -385 <-> 745, 1673 -386 <-> 218, 779 -387 <-> 238 -388 <-> 377, 1817 -389 <-> 231, 656, 1038, 1960 -390 <-> 96, 244, 310, 721, 1094, 1501 -391 <-> 438, 819, 1870 -392 <-> 697 -393 <-> 443, 1275, 1463 -394 <-> 480 -395 <-> 59, 190, 1117, 1997 -396 <-> 595 -397 <-> 208, 397, 1727 -398 <-> 1153 -399 <-> 84 -400 <-> 825, 1693 -401 <-> 812 -402 <-> 1191 -403 <-> 1446, 1820 -404 <-> 442, 871, 1637 -405 <-> 426, 1067 -406 <-> 460, 1290 -407 <-> 1951 -408 <-> 1335, 1391, 1897 -409 <-> 984, 1217 -410 <-> 8, 1607 -411 <-> 135, 411, 454, 1393 -412 <-> 120 -413 <-> 1208 -414 <-> 113 -415 <-> 415, 1803 -416 <-> 428 -417 <-> 361 -418 <-> 1129 -419 <-> 259 -420 <-> 628 -421 <-> 1485 -422 <-> 1110, 1785 -423 <-> 1418 -424 <-> 30, 263 -425 <-> 1497 -426 <-> 114, 405, 780 -427 <-> 427 -428 <-> 416, 782 -429 <-> 429 -430 <-> 339, 1513 -431 <-> 886, 1408 -432 <-> 586, 1725 -433 <-> 889, 1753, 1881 -434 <-> 1078, 1120 -435 <-> 660, 1194, 1662 -436 <-> 223, 1332 -437 <-> 1487 -438 <-> 391 -439 <-> 290 -440 <-> 1828 -441 <-> 191, 311, 1003, 1561, 1702 -442 <-> 164, 232, 404 -443 <-> 324, 393 -444 <-> 1215, 1251 -445 <-> 792 -446 <-> 1015, 1392 -447 <-> 777 -448 <-> 346, 1097 -449 <-> 1117 -450 <-> 1395 -451 <-> 1414, 1845 -452 <-> 138 -453 <-> 90, 453 -454 <-> 411 -455 <-> 1801 -456 <-> 456, 791, 902, 1111 -457 <-> 457, 1075, 1384 -458 <-> 770, 1600 -459 <-> 101, 201, 330, 1108 -460 <-> 406, 1529 -461 <-> 277, 839, 1552 -462 <-> 204 -463 <-> 326, 1899 -464 <-> 1098 -465 <-> 764, 1630, 1779 -466 <-> 627 -467 <-> 904 -468 <-> 108, 1849 -469 <-> 469, 603, 780 -470 <-> 88, 1276, 1533 -471 <-> 1492 -472 <-> 472, 1048, 1409, 1518, 1758 -473 <-> 233, 1413, 1826 -474 <-> 780 -475 <-> 1005, 1968 -476 <-> 809 -477 <-> 2 -478 <-> 753 -479 <-> 479, 1296, 1615 -480 <-> 394, 775, 1623 -481 <-> 774, 1604 -482 <-> 763 -483 <-> 522, 591, 1344 -484 <-> 894, 1219 -485 <-> 507, 1114, 1250, 1351 -486 <-> 1099, 1879 -487 <-> 487 -488 <-> 282, 1164, 1189 -489 <-> 900, 1889 -490 <-> 165, 918, 1007 -491 <-> 1800 -492 <-> 202 -493 <-> 615, 899, 1200, 1326 -494 <-> 139, 193 -495 <-> 704, 1988 -496 <-> 496 -497 <-> 1149, 1216 -498 <-> 69, 84, 153 -499 <-> 1125, 1149 -500 <-> 642 -501 <-> 524, 1176 -502 <-> 145, 314 -503 <-> 1330, 1626 -504 <-> 68, 699 -505 <-> 672 -506 <-> 1083 -507 <-> 485, 1743 -508 <-> 520, 1236, 1296 -509 <-> 1676 -510 <-> 875, 1066 -511 <-> 511 -512 <-> 512, 1240 -513 <-> 705, 812 -514 <-> 1758 -515 <-> 1165, 1168 -516 <-> 811 -517 <-> 334, 1132, 1339 -518 <-> 352, 1674 -519 <-> 824, 1396, 1659 -520 <-> 508 -521 <-> 52, 915 -522 <-> 83, 483, 1637 -523 <-> 1317 -524 <-> 501 -525 <-> 525 -526 <-> 350, 850, 930 -527 <-> 527, 1338, 1449 -528 <-> 156 -529 <-> 98 -530 <-> 691, 1175, 1505 -531 <-> 247, 785, 1389, 1623 -532 <-> 1159 -533 <-> 1152, 1297 -534 <-> 246 -535 <-> 1144, 1491, 1622, 1935 -536 <-> 708 -537 <-> 279, 1656 -538 <-> 268, 538, 1756 -539 <-> 309, 802 -540 <-> 1239 -541 <-> 119, 1679, 1741 -542 <-> 1204 -543 <-> 642, 1926 -544 <-> 298 -545 <-> 1971 -546 <-> 268 -547 <-> 1465, 1613, 1614 -548 <-> 160 -549 <-> 820 -550 <-> 336 -551 <-> 1733 -552 <-> 552, 1563 -553 <-> 1654 -554 <-> 554, 1641, 1665 -555 <-> 555 -556 <-> 15 -557 <-> 177, 1204 -558 <-> 207, 1004 -559 <-> 47, 1297 -560 <-> 1189, 1709 -561 <-> 1013, 1709 -562 <-> 762, 912 -563 <-> 563 -564 <-> 585 -565 <-> 1333, 1494 -566 <-> 566, 938 -567 <-> 894 -568 <-> 586, 1397 -569 <-> 343, 1572 -570 <-> 704, 1220, 1459 -571 <-> 1451 -572 <-> 651, 846, 909 -573 <-> 1881 -574 <-> 1866 -575 <-> 1379 -576 <-> 1060, 1210 -577 <-> 1837 -578 <-> 1346 -579 <-> 87 -580 <-> 1509 -581 <-> 252, 1548 -582 <-> 307, 372 -583 <-> 624, 1599, 1753, 1908 -584 <-> 351, 774 -585 <-> 564, 977 -586 <-> 432, 568, 773, 1789 -587 <-> 826 -588 <-> 1854 -589 <-> 719, 845, 1214 -590 <-> 158, 1259 -591 <-> 483 -592 <-> 743, 898 -593 <-> 172, 342, 852, 943, 1053 -594 <-> 594 -595 <-> 396, 928 -596 <-> 291, 596 -597 <-> 597 -598 <-> 1980 -599 <-> 202, 1764 -600 <-> 204 -601 <-> 54, 377, 1340 -602 <-> 1718, 1866 -603 <-> 469, 789 -604 <-> 1006, 1033, 1626 -605 <-> 1535 -606 <-> 176 -607 <-> 236, 911, 1218 -608 <-> 1193, 1825 -609 <-> 1657 -610 <-> 733, 841 -611 <-> 747, 1892 -612 <-> 1098, 1196, 1267 -613 <-> 5, 1372 -614 <-> 334, 1492 -615 <-> 493, 798 -616 <-> 1025, 1940 -617 <-> 6, 666, 1155 -618 <-> 762, 1621, 1895 -619 <-> 1187 -620 <-> 95, 1761 -621 <-> 254 -622 <-> 784, 1476 -623 <-> 227, 379, 1081 -624 <-> 583 -625 <-> 296, 1222, 1882 -626 <-> 905 -627 <-> 466, 1692 -628 <-> 238, 420, 1004, 1412 -629 <-> 1532 -630 <-> 630 -631 <-> 977, 1092, 1458, 1713 -632 <-> 777, 1049, 1404 -633 <-> 994 -634 <-> 277 -635 <-> 635 -636 <-> 703, 1756 -637 <-> 840, 1585 -638 <-> 76, 180, 1373 -639 <-> 218, 639, 1835 -640 <-> 1559 -641 <-> 1800 -642 <-> 500, 543 -643 <-> 1808 -644 <-> 282 -645 <-> 1253, 1475 -646 <-> 283, 646, 864 -647 <-> 93, 1508 -648 <-> 134, 956, 1762 -649 <-> 37, 82 -650 <-> 1480, 1916 -651 <-> 151, 572, 1357 -652 <-> 1261 -653 <-> 294, 653 -654 <-> 129, 1139, 1176 -655 <-> 1251, 1656 -656 <-> 389 -657 <-> 1604 -658 <-> 201, 1208 -659 <-> 23, 133, 1868 -660 <-> 435 -661 <-> 1634 -662 <-> 1667, 1701 -663 <-> 974 -664 <-> 664, 1167 -665 <-> 172, 1370 -666 <-> 617 -667 <-> 1824 -668 <-> 952, 1605 -669 <-> 1822 -670 <-> 44, 670 -671 <-> 380, 1145, 1693, 1906 -672 <-> 505, 693 -673 <-> 1610 -674 <-> 1249, 1302 -675 <-> 150, 777 -676 <-> 1675 -677 <-> 910, 1282 -678 <-> 99, 1004 -679 <-> 679 -680 <-> 264, 917, 1137, 1687 -681 <-> 140, 327, 746 -682 <-> 682 -683 <-> 794, 1315 -684 <-> 1000, 1342 -685 <-> 1111, 1348, 1523, 1932 -686 <-> 352 -687 <-> 979, 1667 -688 <-> 92, 177 -689 <-> 937, 1939 -690 <-> 35, 1608 -691 <-> 530, 691 -692 <-> 1871 -693 <-> 97, 672 -694 <-> 72, 694 -695 <-> 1076 -696 <-> 1954 -697 <-> 66, 392, 1892 -698 <-> 122, 356, 698 -699 <-> 504, 1470 -700 <-> 292, 1407 -701 <-> 1231, 1327 -702 <-> 32 -703 <-> 636, 1083, 1210 -704 <-> 495, 570 -705 <-> 174, 513, 1332 -706 <-> 69, 1088 -707 <-> 1036, 1867 -708 <-> 536, 805, 1958 -709 <-> 709 -710 <-> 915, 1578 -711 <-> 711, 1478 -712 <-> 813, 927 -713 <-> 70, 116, 1469, 1539 -714 <-> 41 -715 <-> 840, 1473, 1562, 1705 -716 <-> 716 -717 <-> 949, 1864 -718 <-> 259, 342, 1557, 1853 -719 <-> 589, 781, 802 -720 <-> 1125 -721 <-> 390, 878 -722 <-> 1026 -723 <-> 1039, 1467 -724 <-> 1535 -725 <-> 883 -726 <-> 1832, 1917 -727 <-> 1245 -728 <-> 1291 -729 <-> 1203 -730 <-> 824 -731 <-> 1984 -732 <-> 187, 1214 -733 <-> 610, 1079, 1198 -734 <-> 206, 872, 1479, 1855 -735 <-> 124, 1371 -736 <-> 113, 736 -737 <-> 358, 1426 -738 <-> 974, 1024, 1717, 1842 -739 <-> 1489 -740 <-> 1634 -741 <-> 873, 1695 -742 <-> 1700 -743 <-> 312, 592, 1493 -744 <-> 948, 1306, 1400 -745 <-> 385, 1029, 1315, 1474 -746 <-> 285, 681, 793 -747 <-> 169, 611, 814, 1548 -748 <-> 748 -749 <-> 1134, 1498 -750 <-> 146 -751 <-> 155, 783, 1856 -752 <-> 122, 1417 -753 <-> 478, 1505 -754 <-> 810, 1742, 1955 -755 <-> 1735, 1847 -756 <-> 978, 1095 -757 <-> 1153, 1730 -758 <-> 198, 1476 -759 <-> 759 -760 <-> 168 -761 <-> 1496 -762 <-> 562, 618 -763 <-> 246, 482, 1258 -764 <-> 465 -765 <-> 186 -766 <-> 1448 -767 <-> 893, 896, 1019 -768 <-> 1730 -769 <-> 340, 1043, 1065 -770 <-> 307, 458, 1453 -771 <-> 1168 -772 <-> 911 -773 <-> 586 -774 <-> 481, 584, 774, 1148 -775 <-> 480, 1485, 1894 -776 <-> 926 -777 <-> 305, 447, 632, 675 -778 <-> 1690 -779 <-> 386 -780 <-> 426, 469, 474 -781 <-> 719, 1543 -782 <-> 98, 428, 903 -783 <-> 751, 1558 -784 <-> 219, 622 -785 <-> 531 -786 <-> 197, 911, 1312 -787 <-> 120, 880 -788 <-> 1089, 1487 -789 <-> 603, 844, 1681, 1731 -790 <-> 790, 1126 -791 <-> 456, 1363 -792 <-> 308, 445 -793 <-> 746 -794 <-> 683, 951 -795 <-> 1732, 1986 -796 <-> 1210, 1878 -797 <-> 804 -798 <-> 615 -799 <-> 1651 -800 <-> 851, 860, 1907 -801 <-> 1110, 1537, 1773 -802 <-> 539, 719 -803 <-> 156, 1528 -804 <-> 266, 797, 1549 -805 <-> 89, 708, 962 -806 <-> 1429 -807 <-> 1800 -808 <-> 873, 1421 -809 <-> 476, 809 -810 <-> 754 -811 <-> 516, 965 -812 <-> 401, 513 -813 <-> 712, 1023 -814 <-> 747 -815 <-> 1145 -816 <-> 1413 -817 <-> 1235 -818 <-> 237, 240, 1506 -819 <-> 391, 857 -820 <-> 549, 1162 -821 <-> 1410, 1607 -822 <-> 30, 1485 -823 <-> 1445, 1454 -824 <-> 519, 730, 1824 -825 <-> 400, 1381, 1472 -826 <-> 587, 1040, 1198, 1618 -827 <-> 40 -828 <-> 1870 -829 <-> 149 -830 <-> 16 -831 <-> 255 -832 <-> 384, 1890, 1913 -833 <-> 1529 -834 <-> 834 -835 <-> 314 -836 <-> 216, 1166 -837 <-> 377, 988 -838 <-> 236, 323 -839 <-> 461, 1825 -840 <-> 211, 637, 715, 1710 -841 <-> 361, 610, 841, 1815 -842 <-> 1669 -843 <-> 874, 1468 -844 <-> 789 -845 <-> 143, 589, 1053 -846 <-> 572 -847 <-> 1285 -848 <-> 292 -849 <-> 849 -850 <-> 526 -851 <-> 800, 1368, 1497 -852 <-> 593, 1798 -853 <-> 1339, 1593, 1749 -854 <-> 1445, 1787 -855 <-> 1026, 1356 -856 <-> 132 -857 <-> 819 -858 <-> 1511 -859 <-> 1191 -860 <-> 284, 800, 1619 -861 <-> 111, 1266 -862 <-> 60, 281 -863 <-> 1605 -864 <-> 646 -865 <-> 873 -866 <-> 255, 924 -867 <-> 871, 1707 -868 <-> 12 -869 <-> 96, 1278 -870 <-> 1307 -871 <-> 404, 867, 1482 -872 <-> 734, 1200 -873 <-> 741, 808, 865, 873 -874 <-> 255, 843, 1201 -875 <-> 510, 1325, 1797 -876 <-> 1504, 1825 -877 <-> 253 -878 <-> 721 -879 <-> 948, 1291, 1847 -880 <-> 85, 184, 301, 787, 1503, 1617 -881 <-> 1688 -882 <-> 882 -883 <-> 725, 1582, 1874 -884 <-> 1352 -885 <-> 885, 1974 -886 <-> 431, 1650 -887 <-> 101 -888 <-> 102, 152 -889 <-> 433, 1016 -890 <-> 890 -891 <-> 12 -892 <-> 1402, 1923 -893 <-> 767 -894 <-> 484, 567 -895 <-> 342, 1123, 1158, 1648 -896 <-> 767 -897 <-> 80, 986, 1418 -898 <-> 205, 592, 1019 -899 <-> 493, 1053 -900 <-> 489 -901 <-> 901 -902 <-> 456 -903 <-> 782 -904 <-> 467, 904, 1924 -905 <-> 626, 1881 -906 <-> 245, 257, 276 -907 <-> 907, 1101, 1826 -908 <-> 908, 1230 -909 <-> 34, 572, 1186 -910 <-> 677, 961 -911 <-> 607, 772, 786, 1196, 1405 -912 <-> 562 -913 <-> 1636 -914 <-> 1892, 1963 -915 <-> 150, 521, 710 -916 <-> 244 -917 <-> 23, 680, 1336 -918 <-> 490, 1483 -919 <-> 96 -920 <-> 1880 -921 <-> 921 -922 <-> 975, 1255 -923 <-> 228, 1202, 1452 -924 <-> 866 -925 <-> 296, 1270 -926 <-> 280, 776, 1170, 1788, 1970 -927 <-> 712 -928 <-> 362, 595, 1103 -929 <-> 929 -930 <-> 65, 526, 1256, 1500, 1722 -931 <-> 183, 280, 1484 -932 <-> 1737 -933 <-> 299 -934 <-> 1387, 1851 -935 <-> 136, 935, 1537, 1775 -936 <-> 353 -937 <-> 689, 1347 -938 <-> 381, 566 -939 <-> 56, 1762 -940 <-> 1559, 1860 -941 <-> 1504, 1671, 1723, 1724 -942 <-> 1293 -943 <-> 21, 593 -944 <-> 1335 -945 <-> 1650 -946 <-> 1556 -947 <-> 26 -948 <-> 744, 879 -949 <-> 717, 1604 -950 <-> 1201, 1322 -951 <-> 794 -952 <-> 668, 1371 -953 <-> 1272 -954 <-> 954 -955 <-> 74 -956 <-> 648, 1870 -957 <-> 44, 1769 -958 <-> 13, 1388, 1660 -959 <-> 959 -960 <-> 153 -961 <-> 910 -962 <-> 17, 805 -963 <-> 339, 1783 -964 <-> 1100 -965 <-> 811, 1677 -966 <-> 966 -967 <-> 304, 1029, 1269, 1910 -968 <-> 81, 1091 -969 <-> 1379, 1693 -970 <-> 1289 -971 <-> 971 -972 <-> 70 -973 <-> 973 -974 <-> 663, 738, 1005 -975 <-> 922 -976 <-> 319 -977 <-> 585, 631 -978 <-> 756, 1628 -979 <-> 687, 979 -980 <-> 1151, 1317 -981 <-> 1199, 1902 -982 <-> 1223 -983 <-> 1931 -984 <-> 2, 409 -985 <-> 985 -986 <-> 358, 897, 1564 -987 <-> 987, 1644 -988 <-> 36, 837 -989 <-> 1275 -990 <-> 990, 1295 -991 <-> 207, 1415 -992 <-> 1242, 1397, 1467, 1579 -993 <-> 1042, 1767 -994 <-> 633, 1595, 1813 -995 <-> 194 -996 <-> 1096, 1369 -997 <-> 1231, 1973 -998 <-> 1367 -999 <-> 999 -1000 <-> 684, 1078 -1001 <-> 219 -1002 <-> 1442 -1003 <-> 441 -1004 <-> 558, 628, 678 -1005 <-> 475, 974 -1006 <-> 103, 345, 604 -1007 <-> 490, 1274 -1008 <-> 1708, 1819 -1009 <-> 1009, 1118 -1010 <-> 1223, 1803 -1011 <-> 1867 -1012 <-> 299, 1923 -1013 <-> 561, 1187, 1477, 1926 -1014 <-> 1861 -1015 <-> 446, 1015, 1858 -1016 <-> 889 -1017 <-> 1435 -1018 <-> 42, 98 -1019 <-> 767, 898, 1764 -1020 <-> 1020 -1021 <-> 1666 -1022 <-> 347, 1022, 1310 -1023 <-> 26, 813, 1109, 1538, 1988 -1024 <-> 195, 738 -1025 <-> 616 -1026 <-> 722, 855, 1337, 1415 -1027 <-> 241, 1309 -1028 <-> 1028 -1029 <-> 745, 967 -1030 <-> 1577, 1689 -1031 <-> 1031 -1032 <-> 125 -1033 <-> 604, 1127, 1194 -1034 <-> 192 -1035 <-> 1992 -1036 <-> 707, 1509 -1037 <-> 1347 -1038 <-> 389 -1039 <-> 723, 1535 -1040 <-> 826, 1245, 1918 -1041 <-> 281 -1042 <-> 993 -1043 <-> 67, 769, 1142 -1044 <-> 1690 -1045 <-> 287 -1046 <-> 1561 -1047 <-> 4 -1048 <-> 472, 1703 -1049 <-> 632, 1816 -1050 <-> 1157, 1899 -1051 <-> 1818 -1052 <-> 347, 1904 -1053 <-> 593, 845, 899 -1054 <-> 1983 -1055 <-> 1599 -1056 <-> 41, 320, 325, 1567 -1057 <-> 1372, 1569 -1058 <-> 185 -1059 <-> 1112, 1939 -1060 <-> 576, 1314, 1557, 1751, 1752 -1061 <-> 1285 -1062 <-> 1162, 1338, 1739 -1063 <-> 1291 -1064 <-> 132 -1065 <-> 769, 1317 -1066 <-> 510 -1067 <-> 405, 1452, 1953 -1068 <-> 1200 -1069 <-> 1069 -1070 <-> 19 -1071 <-> 1361, 1382 -1072 <-> 1307, 1534 -1073 <-> 1282 -1074 <-> 1323, 1653 -1075 <-> 457 -1076 <-> 695, 1703 -1077 <-> 1180 -1078 <-> 434, 1000 -1079 <-> 733 -1080 <-> 130, 1757 -1081 <-> 202, 623 -1082 <-> 1082 -1083 <-> 506, 703, 1279 -1084 <-> 314, 1812 -1085 <-> 242 -1086 <-> 350 -1087 <-> 1524 -1088 <-> 706, 1900 -1089 <-> 788 -1090 <-> 1260 -1091 <-> 968, 1522 -1092 <-> 173, 631, 1850 -1093 <-> 1093, 1390 -1094 <-> 182, 390 -1095 <-> 756 -1096 <-> 996 -1097 <-> 448 -1098 <-> 464, 612 -1099 <-> 292, 486 -1100 <-> 964, 1326 -1101 <-> 907, 1799 -1102 <-> 1927 -1103 <-> 928, 1103 -1104 <-> 252 -1105 <-> 166, 297 -1106 <-> 1106, 1896 -1107 <-> 1107 -1108 <-> 459 -1109 <-> 1023 -1110 <-> 422, 801 -1111 <-> 456, 685 -1112 <-> 262, 1059 -1113 <-> 1267 -1114 <-> 485 -1115 <-> 1115, 1827 -1116 <-> 1596 -1117 <-> 395, 449, 1382 -1118 <-> 1009 -1119 <-> 281, 1670 -1120 <-> 434, 1165 -1121 <-> 167, 1121 -1122 <-> 1809 -1123 <-> 895 -1124 <-> 283 -1125 <-> 499, 720, 1308 -1126 <-> 790, 1526 -1127 <-> 1033 -1128 <-> 1500 -1129 <-> 168, 418, 1642, 1947 -1130 <-> 1454 -1131 <-> 1683 -1132 <-> 517, 1784 -1133 <-> 288 -1134 <-> 314, 749, 1586 -1135 <-> 102 -1136 <-> 1136 -1137 <-> 680 -1138 <-> 1755 -1139 <-> 654 -1140 <-> 1140 -1141 <-> 1141 -1142 <-> 1043, 1862 -1143 <-> 1550 -1144 <-> 535, 1144, 1849 -1145 <-> 209, 671, 815, 1268 -1146 <-> 145 -1147 <-> 134 -1148 <-> 774 -1149 <-> 36, 497, 499, 1652 -1150 <-> 271, 1150 -1151 <-> 51, 980, 1651 -1152 <-> 533 -1153 <-> 398, 757 -1154 <-> 1313 -1155 <-> 145, 617, 1336, 1721 -1156 <-> 1838 -1157 <-> 10, 1050 -1158 <-> 895 -1159 <-> 532, 1708 -1160 <-> 1357 -1161 <-> 1200, 1999 -1162 <-> 820, 1062 -1163 <-> 1821 -1164 <-> 488, 1572 -1165 <-> 515, 1120 -1166 <-> 36, 836 -1167 <-> 664 -1168 <-> 11, 515, 771, 1967 -1169 <-> 358 -1170 <-> 926 -1171 <-> 1666, 1827 -1172 <-> 262, 1439 -1173 <-> 123, 355, 1341 -1174 <-> 1204, 1525 -1175 <-> 530 -1176 <-> 501, 654 -1177 <-> 1311, 1796 -1178 <-> 186, 1536, 1551, 1853 -1179 <-> 1822, 1947 -1180 <-> 1077, 1264 -1181 <-> 163, 1181 -1182 <-> 225 -1183 <-> 1237, 1715, 1798 -1184 <-> 41 -1185 <-> 297, 1185 -1186 <-> 909 -1187 <-> 619, 1013 -1188 <-> 1698 -1189 <-> 488, 560 -1190 <-> 1834, 1933 -1191 <-> 402, 859, 1191 -1192 <-> 1839 -1193 <-> 608, 1438 -1194 <-> 435, 1033, 1754 -1195 <-> 46, 1828 -1196 <-> 612, 911, 1975 -1197 <-> 1503, 1854 -1198 <-> 733, 826 -1199 <-> 981 -1200 <-> 493, 872, 1068, 1161 -1201 <-> 874, 950 -1202 <-> 923 -1203 <-> 40, 729, 1719 -1204 <-> 542, 557, 1174 -1205 <-> 1332 -1206 <-> 148, 182 -1207 <-> 1207 -1208 <-> 91, 273, 413, 658, 1234 -1209 <-> 1995 -1210 <-> 576, 703, 796 -1211 <-> 1227, 1891 -1212 <-> 338, 1362 -1213 <-> 6 -1214 <-> 589, 732 -1215 <-> 4, 100, 444, 1842 -1216 <-> 497, 1745 -1217 <-> 409, 1354 -1218 <-> 607 -1219 <-> 29, 484, 1712 -1220 <-> 570 -1221 <-> 302, 1429 -1222 <-> 625, 1412 -1223 <-> 260, 982, 1010, 1591 -1224 <-> 9, 258, 278, 1506, 1893 -1225 <-> 1906 -1226 <-> 1226 -1227 <-> 1211 -1228 <-> 1773 -1229 <-> 18 -1230 <-> 908 -1231 <-> 701, 997 -1232 <-> 348, 349 -1233 <-> 59 -1234 <-> 1208 -1235 <-> 817, 1994 -1236 <-> 508 -1237 <-> 1183 -1238 <-> 1529 -1239 <-> 540, 1524, 1552 -1240 <-> 512 -1241 <-> 1241 -1242 <-> 992, 1685 -1243 <-> 1934 -1244 <-> 1574, 1839 -1245 <-> 727, 1040 -1246 <-> 1380 -1247 <-> 1506, 1923 -1248 <-> 50, 1610 -1249 <-> 674 -1250 <-> 485 -1251 <-> 444, 655, 1718 -1252 <-> 266, 1862 -1253 <-> 645, 1709 -1254 <-> 1254 -1255 <-> 922, 1255, 1341 -1256 <-> 930, 1346 -1257 <-> 1465, 1844 -1258 <-> 763 -1259 <-> 335, 590, 1259 -1260 <-> 129, 1090 -1261 <-> 652, 1261, 1838 -1262 <-> 1262, 1912 -1263 <-> 7, 1438, 1554 -1264 <-> 338, 1180 -1265 <-> 269, 1265 -1266 <-> 861, 1281, 1423 -1267 <-> 612, 1113, 1289 -1268 <-> 1145 -1269 <-> 967 -1270 <-> 94, 215, 925, 1860 -1271 <-> 1376 -1272 <-> 223, 953 -1273 <-> 1301 -1274 <-> 1007, 1860 -1275 <-> 216, 393, 989, 1275 -1276 <-> 470 -1277 <-> 288 -1278 <-> 869 -1279 <-> 1083, 1755 -1280 <-> 1588 -1281 <-> 1266 -1282 <-> 677, 1073, 1575, 1625 -1283 <-> 1571 -1284 <-> 1828 -1285 <-> 847, 1061, 1641 -1286 <-> 1494, 1649, 1889 -1287 <-> 159 -1288 <-> 142, 1288 -1289 <-> 970, 1267, 1668 -1290 <-> 406 -1291 <-> 728, 879, 1063, 1885 -1292 <-> 1407 -1293 <-> 942, 1318, 1459 -1294 <-> 311, 1754 -1295 <-> 990, 1512 -1296 <-> 130, 479, 508 -1297 <-> 533, 559 -1298 <-> 1839 -1299 <-> 70 -1300 <-> 37, 1886, 1998 -1301 <-> 1273, 1340 -1302 <-> 317, 674, 1485 -1303 <-> 161, 1624 -1304 <-> 1304 -1305 <-> 1410 -1306 <-> 744 -1307 <-> 20, 870, 1072 -1308 <-> 194, 212, 1125 -1309 <-> 251, 1027 -1310 <-> 22, 1022, 1777 -1311 <-> 1177 -1312 <-> 786 -1313 <-> 1154, 1706 -1314 <-> 1060 -1315 <-> 683, 745 -1316 <-> 1793, 1898 -1317 <-> 523, 980, 1065, 1787 -1318 <-> 1293 -1319 <-> 1319 -1320 <-> 1320 -1321 <-> 206 -1322 <-> 950, 1957 -1323 <-> 1074, 1823 -1324 <-> 352 -1325 <-> 875, 1740 -1326 <-> 493, 1100 -1327 <-> 701, 1633 -1328 <-> 1, 55 -1329 <-> 1633 -1330 <-> 503, 1687, 1782 -1331 <-> 376, 1531, 1766 -1332 <-> 436, 705, 1205 -1333 <-> 565 -1334 <-> 1805 -1335 <-> 408, 944 -1336 <-> 917, 1155 -1337 <-> 1026 -1338 <-> 527, 1062 -1339 <-> 517, 853 -1340 <-> 601, 1301, 1708 -1341 <-> 1173, 1255 -1342 <-> 684 -1343 <-> 210 -1344 <-> 121, 483 -1345 <-> 175 -1346 <-> 578, 1256 -1347 <-> 937, 1037, 1735 -1348 <-> 685 -1349 <-> 275, 1594 -1350 <-> 127, 130 -1351 <-> 485 -1352 <-> 884, 1352 -1353 <-> 1604, 1800 -1354 <-> 1217 -1355 <-> 1355, 1985 -1356 <-> 855, 1840 -1357 <-> 651, 1160, 1388 -1358 <-> 92 -1359 <-> 112 -1360 <-> 1455 -1361 <-> 1071, 1909 -1362 <-> 304, 1212 -1363 <-> 791 -1364 <-> 161, 1426 -1365 <-> 1365 -1366 <-> 1366, 1433 -1367 <-> 133, 998 -1368 <-> 851 -1369 <-> 12, 996, 1425 -1370 <-> 665 -1371 <-> 13, 735, 952, 1371, 1857 -1372 <-> 613, 1057 -1373 <-> 638, 1511 -1374 <-> 230, 1593 -1375 <-> 104 -1376 <-> 179, 1271, 1639 -1377 <-> 291 -1378 <-> 1919 -1379 <-> 575, 969 -1380 <-> 1246, 1501, 1903 -1381 <-> 73, 825, 1922 -1382 <-> 1071, 1117, 1541, 1810 -1383 <-> 111 -1384 <-> 457 -1385 <-> 1878, 1966 -1386 <-> 1396 -1387 <-> 229, 934, 1853 -1388 <-> 958, 1357, 1424 -1389 <-> 531 -1390 <-> 1093, 1603 -1391 <-> 408 -1392 <-> 446 -1393 <-> 411 -1394 <-> 1866 -1395 <-> 450, 1851 -1396 <-> 519, 1386 -1397 <-> 79, 568, 992 -1398 <-> 224 -1399 <-> 1443, 1799, 1915 -1400 <-> 744 -1401 <-> 1685 -1402 <-> 892 -1403 <-> 1714 -1404 <-> 632 -1405 <-> 911, 1532 -1406 <-> 233, 1606 -1407 <-> 700, 1292 -1408 <-> 431, 1408, 1416 -1409 <-> 211, 472 -1410 <-> 821, 1305 -1411 <-> 1653, 1993 -1412 <-> 628, 1222 -1413 <-> 473, 816 -1414 <-> 451 -1415 <-> 991, 1026 -1416 <-> 1408 -1417 <-> 752 -1418 <-> 423, 897 -1419 <-> 2, 30 -1420 <-> 1420 -1421 <-> 808 -1422 <-> 58, 104 -1423 <-> 1266 -1424 <-> 1388 -1425 <-> 1369 -1426 <-> 737, 1364, 1847, 1913 -1427 <-> 246, 274 -1428 <-> 1964 -1429 <-> 76, 806, 1221 -1430 <-> 1430 -1431 <-> 322 -1432 <-> 1719 -1433 <-> 1366, 1988 -1434 <-> 89, 106 -1435 <-> 1017, 1730 -1436 <-> 1997 -1437 <-> 317, 352 -1438 <-> 1193, 1263 -1439 <-> 1172 -1440 <-> 344 -1441 <-> 37 -1442 <-> 1002, 1860 -1443 <-> 1399 -1444 <-> 31, 298 -1445 <-> 823, 854 -1446 <-> 113, 403 -1447 <-> 1508, 1720 -1448 <-> 766, 1791 -1449 <-> 527 -1450 <-> 134 -1451 <-> 88, 571 -1452 <-> 923, 1067 -1453 <-> 770 -1454 <-> 95, 823, 1130, 1454 -1455 <-> 1360, 1533 -1456 <-> 1456, 1489, 1529 -1457 <-> 114, 149, 1956 -1458 <-> 382, 631, 1458 -1459 <-> 570, 1293 -1460 <-> 202, 369 -1461 <-> 300 -1462 <-> 1636 -1463 <-> 393, 1659, 1939 -1464 <-> 31 -1465 <-> 3, 323, 547, 1257, 1732 -1466 <-> 320 -1467 <-> 723, 992, 1706 -1468 <-> 154, 843 -1469 <-> 713 -1470 <-> 354, 699 -1471 <-> 1471 -1472 <-> 825 -1473 <-> 715 -1474 <-> 745 -1475 <-> 645 -1476 <-> 622, 758 -1477 <-> 1013, 1645, 1669 -1478 <-> 711 -1479 <-> 734 -1480 <-> 650 -1481 <-> 1481 -1482 <-> 310, 871 -1483 <-> 918, 1504 -1484 <-> 931 -1485 <-> 336, 421, 775, 822, 1302 -1486 <-> 157, 1631 -1487 <-> 236, 437, 788, 1980 -1488 <-> 1560 -1489 <-> 739, 1456 -1490 <-> 383 -1491 <-> 535 -1492 <-> 471, 614 -1493 <-> 743 -1494 <-> 565, 1286 -1495 <-> 1627 -1496 <-> 761, 1496 -1497 <-> 249, 425, 851 -1498 <-> 749 -1499 <-> 231 -1500 <-> 930, 1128 -1501 <-> 390, 1380 -1502 <-> 1713 -1503 <-> 152, 880, 1197 -1504 <-> 47, 876, 941, 1483, 1945 -1505 <-> 295, 530, 753 -1506 <-> 818, 1224, 1247 -1507 <-> 141, 216, 1565, 1726 -1508 <-> 647, 1447, 1521, 1590 -1509 <-> 580, 1036, 1605, 1609 -1510 <-> 40, 1885 -1511 <-> 858, 1373 -1512 <-> 1295 -1513 <-> 78, 430 -1514 <-> 1772 -1515 <-> 153 -1516 <-> 144, 260, 1818 -1517 <-> 32, 1616, 1806 -1518 <-> 472 -1519 <-> 259 -1520 <-> 94, 1542 -1521 <-> 1508 -1522 <-> 313, 1091, 1631 -1523 <-> 685 -1524 <-> 241, 1087, 1239 -1525 <-> 1174 -1526 <-> 1126 -1527 <-> 1835 -1528 <-> 803 -1529 <-> 460, 833, 1238, 1456 -1530 <-> 1784 -1531 <-> 1331 -1532 <-> 629, 1405 -1533 <-> 470, 1455, 1533, 1796 -1534 <-> 1072 -1535 <-> 605, 724, 1039 -1536 <-> 1178 -1537 <-> 273, 801, 935 -1538 <-> 1023, 1734 -1539 <-> 713 -1540 <-> 1748 -1541 <-> 1382, 1683 -1542 <-> 1520 -1543 <-> 781 -1544 <-> 1631 -1545 <-> 1910 -1546 <-> 1942 -1547 <-> 260 -1548 <-> 581, 747 -1549 <-> 804 -1550 <-> 159, 1143 -1551 <-> 1178 -1552 <-> 461, 1239, 1846 -1553 <-> 1553, 1982 -1554 <-> 68, 85, 1263, 1597 -1555 <-> 1713, 1931 -1556 <-> 946, 1556 -1557 <-> 718, 1060 -1558 <-> 783 -1559 <-> 640, 940 -1560 <-> 1488, 1806, 1898, 1949 -1561 <-> 441, 1046 -1562 <-> 715, 1889 -1563 <-> 552 -1564 <-> 986 -1565 <-> 1507, 1689 -1566 <-> 1570 -1567 <-> 1056 -1568 <-> 3, 371 -1569 <-> 119, 1057, 1852 -1570 <-> 1566, 1570 -1571 <-> 1283, 1736 -1572 <-> 569, 1164, 1995 -1573 <-> 1573, 1784, 1987 -1574 <-> 1244, 1574 -1575 <-> 1282, 1575, 1866 -1576 <-> 123 -1577 <-> 1030 -1578 <-> 289, 710 -1579 <-> 992, 1684 -1580 <-> 4 -1581 <-> 1581 -1582 <-> 128, 883 -1583 <-> 57 -1584 <-> 116 -1585 <-> 637 -1586 <-> 1134 -1587 <-> 1587 -1588 <-> 159, 1280 -1589 <-> 1915 -1590 <-> 136, 1508 -1591 <-> 1223 -1592 <-> 293, 1891 -1593 <-> 853, 1374 -1594 <-> 1349, 1886 -1595 <-> 994, 1595 -1596 <-> 364, 1116 -1597 <-> 1554 -1598 <-> 1729 -1599 <-> 583, 1055 -1600 <-> 147, 458, 1600 -1601 <-> 1894 -1602 <-> 116 -1603 <-> 1390 -1604 <-> 481, 657, 949, 1353, 1983 -1605 <-> 115, 668, 863, 1509 -1606 <-> 1406 -1607 <-> 261, 410, 821 -1608 <-> 690 -1609 <-> 1509 -1610 <-> 673, 1248 -1611 <-> 118, 1788 -1612 <-> 1854 -1613 <-> 547 -1614 <-> 547, 1807 -1615 <-> 479 -1616 <-> 222, 1517 -1617 <-> 880, 1989 -1618 <-> 826 -1619 <-> 860, 1807 -1620 <-> 291 -1621 <-> 618, 1957 -1622 <-> 535 -1623 <-> 480, 531 -1624 <-> 1303 -1625 <-> 223, 1282 -1626 <-> 503, 604 -1627 <-> 1495, 1933 -1628 <-> 288, 978 -1629 <-> 1629 -1630 <-> 465, 1872 -1631 <-> 1486, 1522, 1544 -1632 <-> 196 -1633 <-> 1327, 1329 -1634 <-> 123, 661, 740 -1635 <-> 139 -1636 <-> 913, 1462, 1752 -1637 <-> 404, 522 -1638 <-> 1779, 1813 -1639 <-> 33, 190, 1376, 1639 -1640 <-> 1816 -1641 <-> 554, 1285 -1642 <-> 1129 -1643 <-> 71, 1844 -1644 <-> 171, 987 -1645 <-> 1477 -1646 <-> 16, 199 -1647 <-> 1702 -1648 <-> 895 -1649 <-> 1286 -1650 <-> 344, 886, 945 -1651 <-> 799, 1151 -1652 <-> 1149, 1961, 1984 -1653 <-> 222, 1074, 1411 -1654 <-> 108, 553 -1655 <-> 35, 156, 226, 1992 -1656 <-> 537, 655 -1657 <-> 105, 609 -1658 <-> 1658 -1659 <-> 519, 1463 -1660 <-> 958 -1661 <-> 290, 1929 -1662 <-> 435 -1663 <-> 1855 -1664 <-> 345 -1665 <-> 554 -1666 <-> 1021, 1171 -1667 <-> 662, 687 -1668 <-> 1289 -1669 <-> 842, 1477, 1795, 1975 -1670 <-> 1119, 1921 -1671 <-> 941 -1672 <-> 115 -1673 <-> 385 -1674 <-> 518 -1675 <-> 247, 676 -1676 <-> 509, 1987 -1677 <-> 965, 1677 -1678 <-> 151, 1692 -1679 <-> 541 -1680 <-> 1680 -1681 <-> 221, 789 -1682 <-> 1736, 1767, 1947 -1683 <-> 1131, 1541 -1684 <-> 1579 -1685 <-> 1242, 1401 -1686 <-> 1736 -1687 <-> 680, 1330 -1688 <-> 881, 1829 -1689 <-> 1030, 1565 -1690 <-> 778, 1044, 1900 -1691 <-> 28, 75 -1692 <-> 627, 1678 -1693 <-> 122, 400, 671, 969 -1694 <-> 58, 61 -1695 <-> 741 -1696 <-> 224, 1958 -1697 <-> 1935 -1698 <-> 301, 1188 -1699 <-> 29, 37 -1700 <-> 742, 1883 -1701 <-> 662 -1702 <-> 441, 1647 -1703 <-> 1048, 1076 -1704 <-> 185 -1705 <-> 715 -1706 <-> 1313, 1467 -1707 <-> 867 -1708 <-> 1008, 1159, 1340 -1709 <-> 560, 561, 1253, 1976 -1710 <-> 840 -1711 <-> 1711 -1712 <-> 12, 1219 -1713 <-> 631, 1502, 1555 -1714 <-> 1403, 1714, 1902 -1715 <-> 1183 -1716 <-> 79 -1717 <-> 738 -1718 <-> 602, 1251 -1719 <-> 1203, 1432 -1720 <-> 1447 -1721 <-> 1155 -1722 <-> 930 -1723 <-> 941 -1724 <-> 941 -1725 <-> 432 -1726 <-> 1507 -1727 <-> 397 -1728 <-> 1728, 1937 -1729 <-> 1598, 1913 -1730 <-> 105, 757, 768, 1435, 1730 -1731 <-> 789 -1732 <-> 795, 1465 -1733 <-> 551, 1765, 1835 -1734 <-> 1538 -1735 <-> 755, 1347 -1736 <-> 1571, 1682, 1686 -1737 <-> 932, 1795 -1738 <-> 329, 1738 -1739 <-> 267, 1062, 1848 -1740 <-> 1325 -1741 <-> 326, 541, 1952 -1742 <-> 344, 754 -1743 <-> 75, 253, 507 -1744 <-> 288 -1745 <-> 1216 -1746 <-> 92, 138 -1747 <-> 333 -1748 <-> 182, 1540 -1749 <-> 853 -1750 <-> 88 -1751 <-> 363, 1060 -1752 <-> 1060, 1636 -1753 <-> 433, 583, 1873 -1754 <-> 1194, 1294 -1755 <-> 1138, 1279 -1756 <-> 538, 636 -1757 <-> 1080 -1758 <-> 472, 514 -1759 <-> 284 -1760 <-> 1760 -1761 <-> 326, 620 -1762 <-> 648, 939, 1989 -1763 <-> 383 -1764 <-> 599, 1019, 1941 -1765 <-> 1733 -1766 <-> 289, 365, 1331 -1767 <-> 993, 1682, 1767 -1768 <-> 1768, 1859 -1769 <-> 957 -1770 <-> 288 -1771 <-> 1875 -1772 <-> 1514, 1772 -1773 <-> 801, 1228 -1774 <-> 0 -1775 <-> 935 -1776 <-> 133 -1777 <-> 1310 -1778 <-> 17, 320 -1779 <-> 465, 1638 -1780 <-> 1906 -1781 <-> 1969 -1782 <-> 1330 -1783 <-> 97, 963, 1960, 1983 -1784 <-> 1132, 1530, 1573 -1785 <-> 422 -1786 <-> 1786 -1787 <-> 854, 1317 -1788 <-> 926, 1611 -1789 <-> 586, 1829 -1790 <-> 74, 1790 -1791 <-> 52, 109, 1448 -1792 <-> 1860 -1793 <-> 1316, 1981 -1794 <-> 138 -1795 <-> 1669, 1737, 1861 -1796 <-> 1177, 1533 -1797 <-> 327, 875 -1798 <-> 852, 1183 -1799 <-> 1101, 1399, 1964 -1800 <-> 491, 641, 807, 1353 -1801 <-> 20, 455 -1802 <-> 123 -1803 <-> 415, 1010 -1804 <-> 1804 -1805 <-> 1334, 1926 -1806 <-> 1517, 1560 -1807 <-> 1614, 1619 -1808 <-> 261, 643 -1809 <-> 145, 1122 -1810 <-> 1382 -1811 <-> 60 -1812 <-> 1084 -1813 <-> 213, 994, 1638 -1814 <-> 14, 355 -1815 <-> 841, 1996 -1816 <-> 1049, 1640 -1817 <-> 388 -1818 <-> 1051, 1516 -1819 <-> 1008 -1820 <-> 403 -1821 <-> 350, 1163 -1822 <-> 669, 1179, 1927 -1823 <-> 1323 -1824 <-> 667, 824, 1879 -1825 <-> 608, 839, 876, 1965 -1826 <-> 473, 907 -1827 <-> 1115, 1171 -1828 <-> 440, 1195, 1284, 1913 -1829 <-> 275, 1688, 1789 -1830 <-> 1830 -1831 <-> 1831 -1832 <-> 248, 726 -1833 <-> 1833 -1834 <-> 1190 -1835 <-> 639, 1527, 1733 -1836 <-> 250, 1836 -1837 <-> 577, 1970 -1838 <-> 1156, 1261 -1839 <-> 1192, 1244, 1298 -1840 <-> 1356 -1841 <-> 81 -1842 <-> 738, 1215 -1843 <-> 1843 -1844 <-> 383, 1257, 1643 -1845 <-> 260, 451 -1846 <-> 1552 -1847 <-> 755, 879, 1426 -1848 <-> 38, 1739 -1849 <-> 468, 1144 -1850 <-> 1092 -1851 <-> 934, 1395 -1852 <-> 198, 1569 -1853 <-> 718, 1178, 1387 -1854 <-> 588, 1197, 1612 -1855 <-> 162, 734, 1663 -1856 <-> 236, 751 -1857 <-> 1371 -1858 <-> 1015 -1859 <-> 1768 -1860 <-> 940, 1270, 1274, 1442, 1792 -1861 <-> 1014, 1795 -1862 <-> 1142, 1252 -1863 <-> 281 -1864 <-> 717 -1865 <-> 1865 -1866 <-> 574, 602, 1394, 1575 -1867 <-> 707, 1011 -1868 <-> 659, 1868 -1869 <-> 173, 1991 -1870 <-> 391, 828, 956, 1880 -1871 <-> 189, 692 -1872 <-> 1630 -1873 <-> 42, 1753 -1874 <-> 883 -1875 <-> 11, 1771 -1876 <-> 158 -1877 <-> 186 -1878 <-> 796, 1385 -1879 <-> 486, 1824 -1880 <-> 920, 1870 -1881 <-> 433, 573, 905 -1882 <-> 625, 1954 -1883 <-> 300, 1700 -1884 <-> 1884 -1885 <-> 1291, 1510 -1886 <-> 19, 209, 1300, 1594 -1887 <-> 277 -1888 <-> 85 -1889 <-> 489, 1286, 1562 -1890 <-> 170, 832 -1891 <-> 1211, 1592, 1973 -1892 <-> 611, 697, 914 -1893 <-> 1224 -1894 <-> 775, 1601 -1895 <-> 308, 323, 618 -1896 <-> 1106 -1897 <-> 118, 368, 408 -1898 <-> 1316, 1560, 1944 -1899 <-> 463, 1050 -1900 <-> 1088, 1690, 1951 -1901 <-> 16, 27 -1902 <-> 981, 1714 -1903 <-> 1380 -1904 <-> 278, 1052 -1905 <-> 20 -1906 <-> 671, 1225, 1780 -1907 <-> 800 -1908 <-> 583 -1909 <-> 1361, 1940 -1910 <-> 134, 967, 1545 -1911 <-> 1973 -1912 <-> 1262 -1913 <-> 832, 1426, 1729, 1828 -1914 <-> 1914 -1915 <-> 1399, 1589 -1916 <-> 650, 1916 -1917 <-> 726, 1917 -1918 <-> 1040 -1919 <-> 196, 1378, 1919 -1920 <-> 1, 218 -1921 <-> 1670, 1952 -1922 <-> 1381 -1923 <-> 892, 1012, 1247 -1924 <-> 373, 904 -1925 <-> 210, 1935 -1926 <-> 543, 1013, 1805 -1927 <-> 1102, 1822 -1928 <-> 346, 1928 -1929 <-> 1661 -1930 <-> 19 -1931 <-> 983, 1555 -1932 <-> 685 -1933 <-> 16, 1190, 1627, 1933 -1934 <-> 288, 1243 -1935 <-> 535, 1697, 1925 -1936 <-> 295 -1937 <-> 112, 157, 1728 -1938 <-> 293 -1939 <-> 689, 1059, 1463 -1940 <-> 616, 1909 -1941 <-> 1764 -1942 <-> 243, 256, 1546 -1943 <-> 1950 -1944 <-> 260, 1898 -1945 <-> 1504 -1946 <-> 1946 -1947 <-> 87, 1129, 1179, 1682 -1948 <-> 294 -1949 <-> 1560 -1950 <-> 21, 1943 -1951 <-> 407, 1900 -1952 <-> 1741, 1921 -1953 <-> 1067 -1954 <-> 696, 1882 -1955 <-> 754 -1956 <-> 1457 -1957 <-> 1322, 1621 -1958 <-> 48, 708, 1696 -1959 <-> 1959 -1960 <-> 389, 1783 -1961 <-> 1652 -1962 <-> 29 -1963 <-> 914 -1964 <-> 1428, 1799 -1965 <-> 1825 -1966 <-> 1385 -1967 <-> 1168 -1968 <-> 265, 475 -1969 <-> 4, 1781 -1970 <-> 315, 926, 1837 -1971 <-> 242, 545, 1971 -1972 <-> 1972 -1973 <-> 997, 1891, 1911 -1974 <-> 885 -1975 <-> 1196, 1669 -1976 <-> 1709 -1977 <-> 1977 -1978 <-> 1978 -1979 <-> 1979 -1980 <-> 598, 1487 -1981 <-> 1793 -1982 <-> 1553 -1983 <-> 1054, 1604, 1783 -1984 <-> 731, 1652 -1985 <-> 1355 -1986 <-> 795 -1987 <-> 1573, 1676 -1988 <-> 495, 1023, 1433 -1989 <-> 1617, 1762 -1990 <-> 376 -1991 <-> 1869 -1992 <-> 1035, 1655 -1993 <-> 1411 -1994 <-> 1235, 1994 -1995 <-> 57, 1209, 1572 -1996 <-> 181, 1815 -1997 <-> 395, 1436 -1998 <-> 1300 -1999 <-> 175, 1161 diff --git a/2017/d13/ex1/ex1.py b/2017/d13/ex1/ex1.py deleted file mode 100755 index 3c23665..0000000 --- a/2017/d13/ex1/ex1.py +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env python - -import sys - - -def solve(input: str) -> int: - def parse(input: str) -> dict[int, int]: - return { - depth: range - for depth, range in (map(int, l.split(": ")) for l in input.splitlines()) - } - - def would_catch(depth: int, range: int) -> bool: - cycle_length = (range - 1) * 2 - return depth % cycle_length == 0 - - def compute_severity(firewall: dict[int, int]) -> int: - return sum( - depth * range - for depth, range in firewall.items() - if would_catch(depth, range) - ) - - firewall = parse(input) - return compute_severity(firewall) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d13/ex1/input b/2017/d13/ex1/input deleted file mode 100644 index 269c1e7..0000000 --- a/2017/d13/ex1/input +++ /dev/null @@ -1,44 +0,0 @@ -0: 3 -1: 2 -2: 4 -4: 4 -6: 5 -8: 6 -10: 8 -12: 8 -14: 6 -16: 6 -18: 8 -20: 8 -22: 6 -24: 12 -26: 9 -28: 12 -30: 8 -32: 14 -34: 12 -36: 8 -38: 14 -40: 12 -42: 12 -44: 12 -46: 14 -48: 12 -50: 14 -52: 12 -54: 10 -56: 14 -58: 12 -60: 14 -62: 14 -66: 10 -68: 14 -74: 14 -76: 12 -78: 14 -80: 20 -86: 18 -92: 14 -94: 20 -96: 18 -98: 17 diff --git a/2017/d13/ex2/ex2.py b/2017/d13/ex2/ex2.py deleted file mode 100755 index 3c146c3..0000000 --- a/2017/d13/ex2/ex2.py +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env python - -import itertools -import sys - - -def solve(input: str) -> int: - def parse(input: str) -> dict[int, int]: - return { - depth: range - for depth, range in (map(int, l.split(": ")) for l in input.splitlines()) - } - - def would_catch(depth: int, range: int, offset: int) -> bool: - cycle_length = (range - 1) * 2 - return (depth + offset) % cycle_length == 0 - - def compute_delay(firewall: dict[int, int]) -> int: - for i in itertools.count(): - if any(would_catch(depth, range, i) for depth, range in firewall.items()): - continue - return i - assert False # Sanity check - - firewall = parse(input) - return compute_delay(firewall) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d13/ex2/input b/2017/d13/ex2/input deleted file mode 100644 index 269c1e7..0000000 --- a/2017/d13/ex2/input +++ /dev/null @@ -1,44 +0,0 @@ -0: 3 -1: 2 -2: 4 -4: 4 -6: 5 -8: 6 -10: 8 -12: 8 -14: 6 -16: 6 -18: 8 -20: 8 -22: 6 -24: 12 -26: 9 -28: 12 -30: 8 -32: 14 -34: 12 -36: 8 -38: 14 -40: 12 -42: 12 -44: 12 -46: 14 -48: 12 -50: 14 -52: 12 -54: 10 -56: 14 -58: 12 -60: 14 -62: 14 -66: 10 -68: 14 -74: 14 -76: 12 -78: 14 -80: 20 -86: 18 -92: 14 -94: 20 -96: 18 -98: 17 diff --git a/2017/d14/ex1/ex1.py b/2017/d14/ex1/ex1.py deleted file mode 100755 index 0875b32..0000000 --- a/2017/d14/ex1/ex1.py +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env python - -import functools -import itertools -import operator -import sys - - -def solve(input: str) -> int: - def knot_hash(byte_string: str) -> str: - def compute_sparse_hash(lengths: list[int]) -> list[int]: - circle = list(range(256)) - cur_pos, skip_size = 0, 0 - for _ in range(64): - for n in lengths: - # Invalid length - assert n < len(circle) # Sanity check - # Reverse - for i, j in zip( - range(cur_pos, cur_pos + n // 2), - # Avoid off-by-one by going further than necessary - range(cur_pos + n - 1, cur_pos, -1), - ): - i %= len(circle) - j %= len(circle) - circle[i], circle[j] = circle[j], circle[i] - # Move - cur_pos += n + skip_size - # Increase - skip_size += 1 - return circle - - def compute_dense_hash(sparse_hash: list[int]) -> list[int]: - assert len(sparse_hash) == 256 # Sanity check - return [ - functools.reduce(operator.xor, chunk) - for chunk in itertools.batched(sparse_hash, 16) - ] - - lengths = [ord(c) for c in byte_string] - lengths += [17, 31, 73, 47, 23] # Additional lengths - sparse_hash = compute_sparse_hash(lengths) - dense_hash = compute_dense_hash(sparse_hash) - return "".join(f"{n:02x}" for n in dense_hash) - - input = input.strip() - hashes = [int(knot_hash(f"{input}-{i}"), 16) for i in range(128)] - return sum(n.bit_count() for n in hashes) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d14/ex1/input b/2017/d14/ex1/input deleted file mode 100644 index 191abdd..0000000 --- a/2017/d14/ex1/input +++ /dev/null @@ -1 +0,0 @@ -hxtvlmkl diff --git a/2017/d14/ex2/ex2.py b/2017/d14/ex2/ex2.py deleted file mode 100755 index 0875507..0000000 --- a/2017/d14/ex2/ex2.py +++ /dev/null @@ -1,128 +0,0 @@ -#!/usr/bin/env python - -import collections -import functools -import itertools -import operator -import sys - - -class UnionFind: - _parent: list[int] - _rank: list[int] - - def __init__(self, size: int): - # Each node is in its own set, making it its own parent... - self._parent = list(range(size)) - # ... And its rank 0 - self._rank = [0] * size - - def find(self, elem: int) -> int: - while (parent := self._parent[elem]) != elem: - # Replace each parent link by a link to the grand-parent - elem, self._parent[elem] = parent, self._parent[parent] - return elem - - def union(self, lhs: int, rhs: int) -> int: - lhs = self.find(lhs) - rhs = self.find(rhs) - # Bail out early if they already belong to the same set - if lhs == rhs: - return lhs - # Always keep `lhs` as the taller tree - if self._rank[lhs] < self._rank[rhs]: - lhs, rhs = rhs, lhs - # Merge the smaller tree into the taller one - self._parent[rhs] = lhs - # Update the rank when merging trees of approximately the same size - if self._rank[lhs] == self._rank[rhs]: - self._rank[lhs] += 1 - return lhs - - def sets(self) -> dict[int, set[int]]: - res: dict[int, set[int]] = collections.defaultdict(set) - for elem in range(len(self._parent)): - res[self.find(elem)].add(elem) - return dict(res) - - -def solve(input: str) -> int: - def knot_hash(byte_string: str) -> str: - def compute_sparse_hash(lengths: list[int]) -> list[int]: - circle = list(range(256)) - cur_pos, skip_size = 0, 0 - for _ in range(64): - for n in lengths: - # Invalid length - assert n < len(circle) # Sanity check - # Reverse - for i, j in zip( - range(cur_pos, cur_pos + n // 2), - # Avoid off-by-one by going further than necessary - range(cur_pos + n - 1, cur_pos, -1), - ): - i %= len(circle) - j %= len(circle) - circle[i], circle[j] = circle[j], circle[i] - # Move - cur_pos += n + skip_size - # Increase - skip_size += 1 - return circle - - def compute_dense_hash(sparse_hash: list[int]) -> list[int]: - assert len(sparse_hash) == 256 # Sanity check - return [ - functools.reduce(operator.xor, chunk) - for chunk in itertools.batched(sparse_hash, 16) - ] - - lengths = [ord(c) for c in byte_string] - lengths += [17, 31, 73, 47, 23] # Additional lengths - sparse_hash = compute_sparse_hash(lengths) - dense_hash = compute_dense_hash(sparse_hash) - return "".join(f"{n:02x}" for n in dense_hash) - - def count_regions(hashes: list[int]) -> int: - def occupied(row: int, bit: int) -> bool: - return (hashes[row] & 1 << bit) != 0 - - def key(row: int, bit: int) -> int: - return row * 128 + bit - - def unkey(key: int) -> tuple[int, int]: - return key // 128, key % 128 - - uf = UnionFind(128 * 128) - for i in range(128): - for bit in range(128): - if not occupied(i, bit): - continue - for ni, nbit in ( - (i - 1, bit), - (i, bit - 1), - (i + 1, bit), - (i, bit + 1), - ): - if ni < 0 or ni >= 128: - continue - if nbit < 0 or nbit >= 128: - continue - if not occupied(ni, nbit): - continue - uf.union(key(i, bit), key(ni, nbit)) - # We created a UnionFind over *all* squares, only count *occupied* squares - return sum(occupied(*unkey(root)) for root in uf.sets()) - - input = input.strip() - hashes = [int(knot_hash(f"{input}-{i}"), 16) for i in range(128)] - return count_regions(hashes) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d14/ex2/input b/2017/d14/ex2/input deleted file mode 100644 index 191abdd..0000000 --- a/2017/d14/ex2/input +++ /dev/null @@ -1 +0,0 @@ -hxtvlmkl diff --git a/2017/d15/ex1/ex1.py b/2017/d15/ex1/ex1.py deleted file mode 100755 index 24bd9ba..0000000 --- a/2017/d15/ex1/ex1.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python - -import functools -import itertools -import sys -from collections.abc import Iterator - - -def solve(input: str) -> int: - def parse(input: str) -> tuple[int, int]: - a, b = input.splitlines() - return int(a.split()[-1]), int(b.split()[-1]) - - def generate(seed: int, factor: int) -> int: - seed *= factor - return seed % 2147483647 - - def judge(a: int, b: int) -> bool: - mask = (1 << 16) - 1 - return (a & mask) == (b & mask) - - def iter_judgements(seed_a: int, seed_b: int) -> Iterator[bool]: - generate_a = functools.partial(generate, factor=16807) - generate_b = functools.partial(generate, factor=48271) - - while True: - seed_a, seed_b = generate_a(seed_a), generate_b(seed_b) - yield judge(seed_a, seed_b) - - seed_a, seed_b = parse(input) - return sum(itertools.islice(iter_judgements(seed_a, seed_b), 40000000)) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d15/ex1/input b/2017/d15/ex1/input deleted file mode 100644 index 4cac76f..0000000 --- a/2017/d15/ex1/input +++ /dev/null @@ -1,2 +0,0 @@ -Generator A starts with 699 -Generator B starts with 124 diff --git a/2017/d15/ex2/ex2.py b/2017/d15/ex2/ex2.py deleted file mode 100755 index 17eab8e..0000000 --- a/2017/d15/ex2/ex2.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env python - -import functools -import itertools -import sys -from collections.abc import Iterator - - -def solve(input: str) -> int: - def parse(input: str) -> tuple[int, int]: - a, b = input.splitlines() - return int(a.split()[-1]), int(b.split()[-1]) - - def generate(seed: int, factor: int, criteria: int) -> int: - while True: - seed *= factor - seed %= 2147483647 - if (seed % criteria) == 0: - return seed - - def judge(a: int, b: int) -> bool: - mask = (1 << 16) - 1 - return (a & mask) == (b & mask) - - def iter_judgements(seed_a: int, seed_b: int) -> Iterator[bool]: - generate_a = functools.partial(generate, factor=16807, criteria=4) - generate_b = functools.partial(generate, factor=48271, criteria=8) - - while True: - seed_a, seed_b = generate_a(seed_a), generate_b(seed_b) - yield judge(seed_a, seed_b) - - seed_a, seed_b = parse(input) - return sum(itertools.islice(iter_judgements(seed_a, seed_b), 5000000)) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d15/ex2/input b/2017/d15/ex2/input deleted file mode 100644 index 4cac76f..0000000 --- a/2017/d15/ex2/input +++ /dev/null @@ -1,2 +0,0 @@ -Generator A starts with 699 -Generator B starts with 124 diff --git a/2017/d16/ex1/ex1.py b/2017/d16/ex1/ex1.py deleted file mode 100755 index 98d6107..0000000 --- a/2017/d16/ex1/ex1.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python - -import sys -from typing import NamedTuple - - -class Spin(NamedTuple): - n: int - - -class Exchange(NamedTuple): - a: int - b: int - - -class Partner(NamedTuple): - a: str - b: str - - -Move = Spin | Exchange | Partner - -Programs = tuple[str, ...] - - -def solve(input: str) -> str: - def parse_move(input: str) -> Move: - if input[0] == "s": - return Spin(int(input[1:])) - if input[0] == "x": - return Exchange(*map(int, input[1:].split("/"))) - if input[0] == "p": - return Partner(*input[1:].split("/")) - assert False # Sanity check - - def parse(input: str) -> list[Move]: - return [parse_move(move) for move in input.strip().split(",")] - - def apply_move(programs: Programs, move: Move) -> Programs: - match move: - case Spin(n): - return programs[-n:] + programs[:-n] - case Exchange(a, b): - tmp = list(programs) - tmp[a], tmp[b] = tmp[b], tmp[a] - return tuple(tmp) - case Partner(a, b): - ia, ib = programs.index(a), programs.index(b) - tmp = list(programs) - tmp[ia], tmp[ib] = tmp[ib], tmp[ia] - return tuple(tmp) - - moves = parse(input) - programs = tuple(chr(ord("a") + i) for i in range(16)) - for move in moves: - programs = apply_move(programs, move) - return "".join(programs) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d16/ex1/input b/2017/d16/ex1/input deleted file mode 100644 index 205f5dc..0000000 --- a/2017/d16/ex1/input +++ /dev/null @@ -1 +0,0 @@ -x6/12,s14,x14/1,s5,x12/7,pn/i,x10/11,ph/p,x7/4,s7,x3/11,s4,pf/d,x13/12,s14,x1/8,pc/p,x13/0,s5,x1/6,s11,x4/8,s8,x6/12,s10,x3/4,pf/h,x14/11,pe/k,x10/13,s13,x11/5,pl/j,x15/13,pp/a,x14/2,pn/g,x5/0,pe/m,x13/8,s6,x5/3,ph/k,x1/4,s5,x5/15,s3,x11/14,s12,x9/3,po/f,x11/0,pj/k,x12/5,s14,x9/3,s1,x8/6,s10,x9/2,s11,x11/13,pp/d,x4/0,s2,x7/9,s1,x6/15,pk/h,x3/1,s10,x5/11,s14,x14/13,s2,pe/b,x1/12,pn/g,x4/3,pj/a,x10/2,s3,x8/9,pk/b,x3/2,s9,x15/11,pe/g,x3/9,pn/i,x4/10,pb/g,s15,x0/6,pa/e,x7/14,s3,x3/10,pp/f,s13,x4/9,pl/n,x5/8,s7,x9/15,s14,x6/14,pg/j,x13/15,po/m,x2/5,s8,x14/3,s15,x5/2,pe/l,s13,x12/11,pj/i,x2/6,pm/p,x5/13,s3,x9/6,pn/h,x3/12,s14,x10/8,po/g,x1/13,s15,x5/0,pj/c,x7/2,s9,x5/14,pl/o,x11/2,pi/h,x3/4,po/p,s2,pf/c,x6/8,pi/e,s9,x0/15,s3,x10/1,s12,x6/3,s7,x8/4,pp/g,x9/6,s6,x11/0,pi/h,x2/12,s10,x4/11,s12,x12/7,s8,x11/8,s8,x5/15,s13,x0/14,pc/b,x1/9,pd/a,x13/15,s13,pn/l,x1/3,s12,x4/11,pd/h,x6/9,po/e,x1/14,pg/k,x8/6,s1,x10/0,s9,x2/8,pd/l,x15/4,s8,x9/1,s11,x15/3,s7,x12/2,s8,x3/1,s12,x9/5,s11,x3/7,s4,x8/13,pf/i,x11/9,s4,x5/0,s6,x8/12,pk/n,x7/14,s10,x2/5,pl/c,x1/13,pa/d,x11/0,s9,x6/3,pn/c,x2/5,s14,x15/10,s4,x9/2,pi/a,x15/10,pc/o,x0/9,pe/j,x8/3,po/l,x9/0,s10,x5/2,s12,x6/11,s6,x12/8,s6,x4/15,pp/j,x3/10,s13,x15/11,pg/f,x3/14,s10,x7/9,s7,x2/5,s2,x0/7,pl/m,x3/8,s14,x14/0,s1,x4/10,s12,x15/8,s15,x2/6,pc/a,s12,x15/5,ph/b,x6/12,s1,x11/8,s15,x10/13,po/a,s13,x5/14,pi/e,x4/12,s13,x7/9,s15,x15/8,s4,x3/7,pb/c,x13/5,s11,x12/1,s13,x14/6,s15,x1/2,s9,x10/11,pp/f,x14/5,pb/d,x10/8,s4,pl/k,x5/11,pn/d,x8/15,s1,x2/4,s4,x12/8,s11,x2/10,pb/m,x8/15,ph/i,x7/6,s3,x2/12,s3,pg/n,x8/9,pe/j,x4/11,s13,x13/5,s13,x9/10,pi/n,x5/3,s11,x12/0,s4,x4/6,s12,x14/2,s15,x0/4,s2,x5/15,s6,po/l,x8/11,s4,x14/6,pg/f,x3/4,pb/j,x15/8,pe/i,x12/6,pb/h,s12,x1/8,pg/j,x11/15,pf/i,x6/2,s6,x15/3,pk/g,x14/4,s8,x8/10,s9,pj/n,x1/6,s15,x7/0,pb/h,x2/11,pm/d,s3,x6/8,s9,x2/14,s12,x7/12,pb/g,x11/5,s10,x4/2,s12,x9/13,pn/d,s3,x2/12,po/h,x5/8,s2,x13/9,s15,x4/7,s9,x14/0,s13,pj/g,x3/2,s13,x12/14,s5,x0/5,s14,pl/p,x1/6,s2,x3/12,pi/b,s11,x6/5,pj/a,x14/7,s14,x3/12,s6,x10/7,po/k,x8/1,s13,x3/5,pe/f,x13/12,s12,x8/3,pj/n,x12/13,pm/f,s3,x8/14,po/e,x4/5,pk/l,s12,x2/3,s13,x10/15,s4,x4/12,pg/b,x9/14,pa/e,x13/4,s5,pb/p,x6/11,s1,x2/7,s11,x6/4,s3,x5/1,pi/d,x4/15,pc/e,s5,x8/1,s5,x7/0,s11,x4/15,pl/m,x8/14,pe/g,s13,pm/c,x4/0,pp/l,x9/15,pn/e,x4/8,s8,x7/15,s4,x4/8,s14,x9/0,s7,x14/2,s10,x1/11,s2,x5/0,pp/c,x3/1,s14,x4/2,po/b,s10,x15/9,s4,x0/6,s4,x12/14,s6,pe/n,x7/9,pj/a,x4/11,pn/c,x8/0,pb/f,x10/2,s15,x4/5,s3,x7/14,pg/h,x6/8,pd/i,x10/3,pc/a,x5/14,ph/n,x11/8,s6,x6/7,s6,x2/5,s12,x6/14,pi/p,x8/10,s11,x2/7,s13,x10/8,pd/g,x11/2,s7,x4/15,s2,x3/12,s4,x7/13,s6,x3/15,s8,pa/i,x14/13,pj/e,x7/10,s4,x1/6,s3,ph/i,s13,x13/11,s2,x7/12,s4,x5/6,s14,x12/13,s8,pk/e,x14/7,s13,x5/10,s9,x4/12,s3,x10/11,ph/n,x0/12,pb/o,x9/14,s13,x6/4,ph/m,x0/1,pc/d,x3/6,po/h,x1/14,pe/k,x9/12,pf/n,s3,pp/e,s15,x5/10,pf/b,x0/1,s2,x11/15,pj/a,x0/6,s15,x9/4,s11,x3/11,pn/l,x4/14,pi/d,x13/7,pp/a,x2/9,pg/j,x15/1,pl/b,x14/5,pg/k,x10/6,pm/i,x4/11,ph/f,x12/0,s3,pn/o,s13,x4/15,pa/b,x13/10,pi/j,x4/15,s5,x12/13,s11,x2/5,s9,x8/9,s7,x5/14,s5,x0/15,s10,pb/h,x2/13,pn/a,x5/15,pf/g,s15,x4/12,pd/k,s9,x8/13,s3,x12/3,pa/b,s1,x14/2,s8,pm/d,x6/15,s5,x12/11,s7,x0/15,s1,x5/13,pg/b,x0/11,s13,x14/2,s8,x5/15,pc/l,x10/0,pf/i,x12/9,s8,pg/h,s8,x7/14,s5,x13/0,pj/d,x1/8,pb/c,x2/6,s10,pa/h,x1/14,pk/b,x2/8,s2,x0/10,po/i,s11,pp/b,x12/7,s4,x14/15,s5,x2/7,pf/k,x1/6,pl/g,x0/7,pp/e,x8/12,s1,x5/3,s9,x0/8,pg/d,x10/3,pk/b,x15/2,pf/h,x12/14,pl/n,x4/3,s7,x12/10,pg/f,x6/0,ph/o,x7/9,pm/p,x1/14,s14,x4/11,s9,x6/5,s14,x7/12,s8,x14/6,s12,x8/13,s5,x5/9,s9,x2/11,s5,x9/14,s8,x15/6,s11,x1/0,s11,x11/14,pc/o,x10/7,s2,x5/15,pi/l,x12/14,s5,x7/6,pa/f,x4/2,pk/e,x6/13,s5,x5/4,s13,x10/6,pc/l,x12/3,pf/h,x15/8,s13,x13/5,pd/m,x15/12,s7,pb/i,x7/13,s11,x10/4,po/g,x3/13,s14,x11/15,s8,x13/10,pc/p,x9/12,pn/e,x15/8,s14,x3/7,pc/k,x10/8,s4,x9/1,s4,x7/3,s11,x15/8,s2,x2/3,s4,x12/4,s2,x9/14,pp/i,x11/7,s15,pe/b,x2/5,s13,x1/0,pn/p,x6/12,s8,x15/10,pg/d,s10,x4/9,pb/e,s8,x3/1,s7,x4/6,s10,x15/12,pi/o,x10/9,s6,x7/15,s5,x5/4,pl/b,x14/0,s6,x7/6,s7,x12/8,pa/f,s13,x4/13,s14,x8/9,s3,x14/12,s6,x15/6,s13,x11/10,pl/o,x5/0,s1,x1/11,s13,pg/k,x13/5,s1,x6/1,pm/o,x4/2,s13,x1/15,s15,x10/8,ph/b,x6/2,pj/m,s15,x7/13,s5,x9/3,pn/f,x6/7,pl/e,x12/8,pa/p,x15/10,s4,x2/8,s9,x7/0,s1,x6/5,s3,x8/9,pc/g,x13/14,s7,x0/5,pd/n,x15/3,pj/c,x2/7,pi/p,x14/13,ph/m,x11/0,s15,x15/10,pk/p,x7/0,pf/b,x11/13,s11,x2/14,s10,x12/15,s5,x13/5,pg/j,x15/0,s1,pb/p,x11/3,pf/o,x6/2,s6,x5/1,s12,x2/15,pj/n,x13/1,s13,x9/11,s4,x5/12,s12,x6/2,ph/f,x4/3,pj/g,x2/12,pp/m,x9/13,s4,x11/3,s14,x14/6,s13,x5/9,s12,x3/8,pk/j,x4/1,pb/d,x7/5,s1,pa/c,x15/9,s6,x14/7,s2,x12/3,po/m,x15/1,pp/e,x2/3,pa/i,x6/4,s5,x13/15,s6,x6/5,pj/p,x4/12,s6,pg/o,x7/10,s8,x15/12,s10,x1/9,s11,x4/12,s10,x3/7,s4,x5/13,s14,pb/p,x7/3,s6,pf/a,x4/1,s5,x11/5,s4,x14/1,pm/n,x11/15,s3,x12/13,s12,x14/6,s2,x2/3,pj/c,x7/1,s3,x2/11,s15,x13/5,pk/m,x4/1,pc/e,x14/11,pk/l,x7/15,s6,x6/9,s6,x15/2,pj/n,x9/12,pp/g,x2/3,pm/c,x4/9,s6,x13/10,s3,x5/14,pf/a,s7,x4/2,ph/c,x7/6,s7,pg/b,x3/14,pi/j,x0/1,s3,x13/12,s5,x8/0,s2,x6/1,s12,x14/7,s11,po/c,s13,x5/9,pf/a,x12/2,s2,x3/11,s3,x2/1,pm/i,x12/4,s5,x13/10,s2,x4/1,pf/b,x9/8,s12,pm/a,x0/3,pj/f,x4/6,pb/d,x15/10,pe/g,x2/7,s4,x10/9,s4,x1/7,s1,x8/12,s5,x10/0,s9,x1/11,s9,x2/14,s12,x3/6,s3,x13/8,s6,pi/c,x6/2,pa/h,x5/8,s4,x4/1,s6,x6/8,pg/l,x10/4,ph/o,x12/8,s7,x13/10,pa/d,x0/3,pm/l,x1/15,s1,x9/10,s3,pp/g,x13/7,s3,x3/11,pk/h,x14/6,s14,x12/9,s12,x15/8,pl/p,x5/13,s6,pg/d,x6/14,pb/a,x4/13,s15,x12/3,s3,x1/0,s7,x5/4,s8,x3/7,s9,x2/6,po/c,x0/7,s11,x3/1,s2,x12/7,s6,x6/5,s12,x15/13,s14,x14/11,s8,x8/13,pp/g,x15/6,pk/d,x8/1,s9,x7/12,pe/c,x13/2,s9,x1/12,s8,x2/11,s1,x0/13,pl/a,x3/5,s9,x14/2,s12,x5/12,pn/k,x0/14,s3,x7/6,s9,pl/f,x10/2,pe/m,x4/14,s15,x0/3,s15,x15/10,s14,x6/7,pd/h,x13/2,s1,x0/11,s6,x14/6,pp/a,x4/11,s9,x2/14,s3,x9/8,s7,x7/5,pi/f,x10/9,s6,x15/11,pm/a,x13/14,s1,x3/6,s6,x1/9,s11,pp/i,x11/12,pd/n,x5/0,pk/l,x2/1,ph/p,s9,x13/8,s12,x1/9,s10,x11/10,s15,x8/3,s12,pj/f,x1/7,s11,x4/3,pp/g,s2,ph/n,x7/9,s9,x1/3,pg/k,x13/15,s7,x5/10,po/e,x9/12,s1,x8/11,ph/l,x13/4,s7,x15/10,s13,x9/8,pp/k,x4/2,s6,x9/10,s9,pa/g,s9,x1/7,s9,x9/10,s4,x3/4,s10,po/f,x5/2,s10,x14/15,pc/h,x5/0,s14,x3/7,pi/a,s11,x15/9,s6,x12/2,po/l,s11,x10/4,ph/p,x1/0,pe/c,x3/15,s9,x9/1,s1,pg/j,x2/12,s6,x5/6,ph/l,x7/4,pp/b,s7,x3/9,s13,x1/8,s15,x2/13,pe/n,s9,x9/12,s15,x14/6,s1,x11/2,s11,x1/12,s1,x13/11,s15,x2/8,pf/j,x12/0,po/n,s4,x9/1,s5,x10/8,pj/p,x9/12,pn/d,x0/15,pk/h,s3,x8/4,pi/o,x14/10,s12,x13/3,s12,x10/1,s4,x11/13,s11,x9/1,s6,x13/8,s2,x1/0,s13,x6/9,pd/l,x12/14,pp/h,x11/9,pc/f,s9,ph/k,x14/1,pj/g,x8/15,pf/e,x13/1,pb/o,x5/14,pa/c,x9/13,s9,x15/7,pp/m,x10/1,s7,x0/13,pi/j,s1,x14/2,s6,pc/b,x15/13,pp/i,x14/7,s14,x5/12,s2,x8/6,s12,x0/3,s10,x13/7,s12,x10/4,s5,x2/7,pm/e,x3/15,s6,x11/9,s14,x15/10,pi/o,s4,x7/12,pf/l,x9/11,s7,x4/2,pk/m,x0/8,pb/p,x6/9,pc/o,x11/13,pe/f,x5/3,s4,x9/12,s8,x15/10,s12,x1/9,s7,x0/10,s3,x4/15,s7,x3/13,s7,x7/5,s5,x4/14,s13,x15/9,s1,x12/10,s15,x14/9,pl/a,x10/6,pd/n,x0/5,pp/i,x3/11,s15,x10/2,pk/d,x15/1,s4,x3/14,s7,x8/13,s3,pm/o,x3/1,s3,x0/2,s3,x15/8,ph/e,x12/9,pl/k,x0/11,pf/e,x8/10,s10,x2/6,s4,x7/4,s8,x2/13,pj/p,x15/4,s11,x11/10,s4,pe/f,x5/8,s11,x3/15,s5,x0/9,s15,x6/15,pl/h,x0/2,s10,x13/8,pd/m,x11/3,pb/n,x2/12,s15,x15/14,s2,x1/9,ph/d,x8/14,pj/a,x3/5,s2,x14/10,s2,x0/11,pl/f,s11,x4/8,s4,x7/15,s3,x13/0,pb/c,x12/2,pp/o,s11,x14/5,pk/h,x12/11,pm/l,x6/3,s9,x7/0,s8,x5/9,pf/n,x15/4,s7,x9/12,s11,x8/11,pb/i,x6/15,s1,x9/14,s1,x7/10,ph/l,x11/0,pp/e,x8/14,pd/l,x5/9,s6,x4/10,pb/c,x15/11,s5,x7/10,s2,x2/8,s4,x6/9,pd/h,x2/5,pc/o,x6/4,pf/i,x15/8,pl/e,s5,x12/9,pf/p,x14/0,pb/m,x7/15,s3,x1/8,s6,x0/6,s12,x13/15,pj/l,s15,x12/2,pf/h,x10/8,s10,x14/7,pm/a,x1/15,s8,x10/6,pf/e,s10,x15/7,s12,x9/0,s2,x10/14,s1,x0/2,s14,x13/6,s13,x9/15,s11,x3/11,s11,x15/6,pi/d,s13,x7/9,s1,x4/15,s12,x8/5,s8,x10/7,s15,x12/13,s5,x11/10,s8,x13/7,s4,x10/2,s5,x3/1,pl/b,x10/6,pg/d,x8/11,s5,x7/1,s2,x13/0,s6,x11/8,s8,x13/3,s10,x14/7,s14,x12/5,s14,x10/6,s1,x4/13,pn/b,x14/6,s13,x5/3,s15,x7/2,pm/i,x13/11,pe/h,x15/3,s3,x14/2,pk/n,x13/0,s3,x2/1,pe/b,x3/10,s1,x12/1,pd/l,x0/8,pe/m,x9/14,ph/i,x12/8,pm/e,s5,x4/10,s13,x2/7,s2,x4/12,s13,x7/3,pj/g,x2/13,s2,x0/1,pa/n,s8,ph/l,x14/7,s13,x0/13,s8,x6/9,pe/a,x10/1,s13,x13/11,s5,x10/7,s1,x4/1,pd/g,x9/11,s5,x6/2,s5,x4/1,s10,x0/14,s14,x13/6,pl/c,x7/0,s1,x12/11,s3,x10/3,s8,x7/12,s3,pe/k,x2/4,pa/p,s4,x12/7,pe/g,x15/1,s9,x8/2,s8,x15/14,pj/d,x13/8,pp/b,x14/3,s2,x1/9,s3,x13/5,s8,x15/11,pn/e,x9/0,s15,x1/13,pa/p,x9/6,s15,x15/14,s15,x7/5,s4,x15/3,pf/g,x7/6,s5,x3/12,pd/l,x15/8,s7,x7/3,s6,x9/14,s8,x0/7,s6,po/c,x12/9,s11,x13/7,s8,x14/6,s6,x10/11,s1,x2/1,ph/m,x0/4,s14,x2/12,s2,x9/1,pl/f,s15,x4/3,s13,x12/15,pg/d,x10/2,s5,x0/6,pi/k,x5/1,pg/d,x10/6,pj/a,x8/2,pn/o,x13/12,s5,x8/0,s8,x10/4,s6,x9/6,s4,x13/3,s1,x4/5,pp/h,x3/10,s12,x7/15,s12,x2/8,s2,x10/15,s12,x11/12,pl/f,x9/4,s2,x12/5,pk/d,x1/6,pg/j,x9/7,pd/c,x5/14,s11,x2/0,s15,x15/4,pn/l,x8/11,s1,x14/12,s12,x6/4,pc/h,x3/8,s6,x4/7,pl/j,x6/1,pn/g,s2,x3/0,s5,x15/6,pf/e,x11/1,po/k,x4/15,s12,x10/7,pl/c,s8,x5/3,pj/n,x6/12,pd/h,x15/8,s12,pn/l,s3,x11/1,s2,x6/15,pa/m,x11/0,pn/i,x14/10,pd/m,x4/1,po/p,x9/8,ph/b,x14/6,s11,x13/9,s9,x12/4,pp/g,x14/2,s4,pn/b,x6/15,pc/m,x1/0,s7,x9/15,s12,x7/13,s10,x9/5,pe/h,x2/7,s4,pl/m,s7,x10/12,s3,x4/9,pn/o,x12/7,pf/h,x5/13,pp/o,x2/12,pm/j,s10,x7/13,s5,x12/15,pf/b,s6,x1/0,pm/e,x4/12,pb/d,x5/2,pg/e,x9/11,pd/o,x10/5,s8,x11/3,s7,x9/1,s2,pn/j,x4/0,s5,x7/15,s5,x8/1,pb/i,x2/0,pn/j,x7/5,s15,x2/6,pi/g,x14/12,pj/d,x2/1,s4,x10/4,pi/n,x9/14,s14,x8/11,pg/m,x15/2,pp/b,x11/14,s12,x9/8,s7,x7/2,pk/j,x3/15,pc/i,x1/9,s7,x7/8,s2,x12/6,s10,x2/15,pe/g,x6/0,s2,x5/13,s2,pp/f,x11/3,s1,x4/14,s7,x9/6,s10,x7/5,s13,x11/13,s7,x7/6,pd/b,x1/8,s8,x13/15,pm/e,x4/7,pd/c,s11,x3/12,pj/a,x5/8,s7,x1/11,s12,x0/10,pb/e,x4/8,s9,x13/0,pp/m,x6/8,pd/i,x10/0,pg/h,x5/2,s1,x3/4,s8,pc/b,s5,x12/8,pe/a,x11/6,pm/h,x3/12,pf/b,x14/13,pm/o,x10/4,s7,x13/12,s3,x4/5,s14,x7/8,s13,pg/l,x1/14,po/f,x13/8,pg/l,x1/7,pc/f,x2/14,s15,x9/10,pd/p,x1/11,s13,x15/12,s12,x8/6,s7,x10/5,pc/m,x13/12,pg/a,x8/9,s15,x13/1,s12,x7/8,pi/l,x12/14,s6,x8/3,pp/h,s10,x12/2,pk/m,x5/13,s8,x8/15,s14,ph/o,x5/1,pj/m,x6/0,s13,pf/c,x15/12,pk/d,x10/2,s3,pg/o,x5/8,pm/f,x9/0,s9,x12/5,pg/d,x9/11,pl/h,x0/6,pk/i,x8/15,s12,x7/3,s3,x12/4,s10,x5/3,s1,x0/4,s2,x1/15,s2,x8/9,s7,x3/11,pe/a,x15/5,s7,pk/n,x2/14,pe/o,x8/13,s4,x2/11,pg/b,x0/9,pm/h,x4/8,s3,pe/p,x2/1,pm/f,x0/6,s10,pj/a,x5/1,pg/d,x2/6,po/a,x5/0,pc/h,x3/15,pb/g,s9,x4/8,pf/i,x15/10,s3,x11/6,s7,x14/0,s5,x6/11,pj/b,x13/9,s3,x15/5,s9,x3/12,s13,x14/13,s9,pf/k,x1/7,s14,x8/13,s10,x15/4,pe/b,s15,x1/14,s1,pc/i,x8/6,pp/f,x10/13,pn/j,x12/14,s9,x8/0,s14,x13/7,s3,x15/1,s15,x11/12,s8,x1/2,s1,x0/7,s5,x12/6,pi/d,x13/9,pc/g,s6,pi/k,x11/6,pd/h,x8/12,s14,x1/10,pj/b,x5/13,s9,x8/2,pk/n,x7/11,pl/e,x2/12,s10,x7/15,s4,x11/0,s1,x2/7,pb/n,x4/0,s15,x7/14,s6,x8/1,s14,po/k,x5/15,s7,pe/a,x11/8,pl/o,x4/3,pj/e,s13,x11/1,s10,x4/13,pa/d,x8/3,s12,x14/15,s7,x1/5,pc/b,s15,x9/4,s9,x8/11,s1,x10/5,pd/p,s2,ph/o,x2/4,s5,x13/11,s14,x4/3,pb/n,x7/12,s14,x15/11,s13,x7/0,s3,x2/13,pk/o,x8/7,pm/a,x4/3,s10,x6/15,s15,x11/4,s4,x5/2,pk/l,x10/8,pa/f,x12/3,pd/i,x5/7,s11,x8/15,s13,x13/14,pe/p,x9/3,s1,x6/7,pd/j,x14/4,pn/e,x12/11,ph/c,x0/15,s13,pk/o,x11/10,pa/e,x12/13,s10,x10/2,pg/l,x15/1,s13,x10/13,pd/c,x0/11,s3,x5/13,pb/f,x2/15,s1,x11/6,s12,x2/14,s8,x13/6,pc/d,s15,x11/0,s1,x10/2,pf/b,x1/6,s10,x15/12,pe/j,x6/4,s1,pf/l,x13/2,pj/b,x0/14,s13,x10/5,s8,x15/0,s12,x7/13,pg/c,x14/15,pl/n,x5/7,s3,x12/9,s3,x3/15,pb/m,x12/6,s4,x15/11,s3,pl/j,s2,x2/7,pb/d,s14,x9/4,pp/m,x5/6,pj/h,s8,x2/4,s14,x1/8,s7,x10/3,pe/d,x15/14,s2,x4/1,s14,x14/11,pc/g,x7/4,s4,x14/15,pa/h,x12/9,pe/j,x8/4,pf/l,x13/7,s14,x9/6,s8,x10/13,s9,x15/7,s1,x6/9,pb/n,x0/11,s3,x6/14,s6,x5/7,s7,x1/10,pi/f,s12,x5/3,s6,x2/1,pa/l,x4/10,s3,x12/2,s2,x0/10,pp/f,x3/9,pm/h,x11/14,pk/n,x15/8,pg/h,s1,x6/11,s10,x2/10,s15,x4/7,pp/e,x5/10,pb/m,x7/2,s11,x13/3,pj/a,x5/8,pm/e,x7/1,s2,x8/3,pa/f,s9,x6/2,s3,x5/12,pc/l,x6/0,s1,x10/12,pi/m,x3/4,s3,pc/h,x14/10,pe/a,x7/5,s6,x13/2,s5,x14/15,pj/g,x9/13,s2,x4/11,s14,x15/0,s8,x1/8,s6,x10/6,pa/c,x4/3,s13,pm/b,x12/13,s3,x14/9,s9,x15/2,s10,x9/13,s10,x10/14,s8,x13/2,s10,x0/5,pe/g,x9/3,ph/p,x15/2,pl/k,x7/6,pb/i,x0/15,po/e,x4/6,pj/f,s4,x15/2,pk/e,x9/11,s7,x13/12,pg/p,x11/3,pc/m,x5/14,pf/l,x13/11,pg/a,x0/10,pm/o,x5/15,s12,x1/6,s5,x12/4,pg/d,x15/1,pc/e,x11/4,s14,x3/2,s9,x13/10,s6,pd/i,x9/2,s8,x8/12,ph/p,x7/3,s8,pn/o,x6/14,pd/e,x15/0,s2,x7/1,s8,x14/4,s3,x7/15,s4,x9/8,pm/k,x7/5,s5,x13/8,pd/o,x4/10,pf/i,x9/14,s6,x11/13,s5,x2/5,pk/o,s1,pi/a,x7/11,s5,x6/9,s12,x7/4,s1,x10/13,s1,x0/11,s11,x13/14,s2,x2/15,pm/l,x6/12,pk/p,x14/1,po/e,x7/15,pb/a,x3/11,pj/d,x6/1,s9,x8/10,s4,x2/7,pk/n,x5/4,s3,x12/7,s6,x13/4,s6,x3/2,s8,x11/13,s4,x7/4,pe/h,x1/6,s1,x4/15,s11,x1/13,pb/p,x7/15,s15,x5/9,ph/e,x6/10,s14,x1/5,s15,x6/11,pm/i,x7/14,s3,x12/3,s12,x9/13,s7,x15/2,s8,x7/12,s8,x6/0,s4,pj/g,x10/3,s5,x5/14,s2,x0/8,pk/b,s10,x4/13,s13,x6/0,pg/c,x7/9,s11,pd/f,x11/0,pk/j,x1/12,s11,x6/7,s10,x9/0,pb/d,x4/14,s5,x10/5,pn/f,x2/3,s10,pc/j,s2,x14/15,pb/g,x12/7,s7,x11/6,s8,x14/15,s3,x13/7,s9,x15/0,pl/k,x3/10,s14,x8/11,s1,x3/1,s14,x10/9,pp/o,x2/4,pk/a,x11/14,s14,x12/3,s8,x2/8,s3,x11/7,s4,x15/12,s14,x3/7,s13,x15/9,ph/i,x2/11,s8,pd/c,x0/6,s11,po/l,x11/15,ph/k,x14/13,pm/n,x6/10,s8,x7/5,pf/p,x2/12,pe/i,x11/8,pl/a,x12/13,s8,x14/8,s9,x3/1,s7,x15/10,s12,x2/13,pe/b,x1/5,s14,x9/4,pm/p,s4,x11/12,pb/f,s5,pk/c,x6/5,pi/b,s14,x0/3,s13,x2/15,s5,x9/6,s4,x2/11,s12,x9/6,s10,x13/11,s15,x12/2,s6,x9/11,s10,x8/7,s14,x0/14,pg/f,x15/1,s2,pb/h,x4/12,pl/k,x5/6,s4,pj/i,x7/13,s5,x14/0,s11,x1/15,pa/f,s5,x6/14,s14,x15/2,s8,x5/0,pd/h,x1/13,pm/f,x3/5,s11,x11/6,pp/n,x15/0,s2,pi/f,x9/2,s2,x12/0,s13,x2/13,pn/k,s11,pp/a,x10/14,s10,x3/0,s7,x10/13,s11,x15/2,pj/m,x13/0,s14,x4/6,s5,x9/13,s12,po/n,s2,x8/3,pf/e,x15/2,s10,pc/o,x8/0,pj/h,x6/15,s14,x10/1,pd/p,s3,x13/12,ph/b,s9,pf/n,x7/2,s7,pg/d,x13/6,pc/k,x14/10,s12,x8/0,s2,x12/1,s9,x4/8,s15,x7/10,pj/p,x5/0,s4,x14/11,s12,x5/0,s12,x10/6,pe/a,x15/0,pd/h,x7/1,pf/n,x5/2,s12,x9/12,po/l,s5,x7/5,s5,x4/2,pm/i,x5/6,s6,x8/9,pk/d,x11/5,s7,x4/1,s4,x11/13,s1,x15/7,s3,x9/11,s14,x13/3,pi/a,s3,x1/4,s6,x11/3,pj/e,x1/7,pi/h,x5/4,po/e,x6/12,s12,x3/9,s6,x10/8,s13,x3/15,pc/b,s13,x11/8,s14,x6/12,s14,x7/9,s11,x1/8,s4,x10/3,pe/k,x6/1,pj/l,x5/15,pi/e,s5,x8/0,s1,x1/3,s14,x13/0,s9,x5/2,s5,x3/11,pg/o,x5/10,pe/a,x11/14,pj/l,x15/8,s1,x12/13,s3,pc/g,x5/11,pb/p,x1/12,pf/o,x7/11,s4,pl/h,x10/0,s6,x3/12,pi/e,x7/15,pp/b,x12/6,s8,x5/11,s5,x6/7,pe/l,s7,x8/2,pd/c,x15/5,pm/e,x13/0,s1,x14/8,s6,x6/3,s15,x5/12,pk/f,x3/4,s11,x14/8,pg/a,x6/1,s7,x12/11,s12,x1/10,s5,x12/8,s8,x14/4,s10,pf/c,x1/10,s7,x0/12,pj/n,s11,x13/15,s9,x3/9,po/a,x7/8,pk/d,x10/0,s13,pl/n,x3/14,po/d,x11/2,s7,pc/i,x13/1,s13,x6/12,pa/b,x8/1,pd/k,s11,x12/0,s1,po/n,x14/15,s11,x8/4,s2,pm/c,x15/7,pg/l,x3/1,pp/j,x11/5,pn/l,x6/4,s6,x12/9,s10,x14/10,pa/e,x4/13,s8,x12/2,pj/l,x14/6,s10,pe/d,x12/2,s11,x8/15,pj/h,x0/13,pn/m,s4,x7/2,s10,x12/11,ph/g,x14/15,pj/m,x10/2,s9,x7/14,pp/g,x10/13,s7,x12/3,s15,x15/5,s1,x3/12,s12,x9/13,pf/o,x14/7,s13,x6/1,s2,x10/0,s10,x4/15,pl/g,x1/6,pm/j,x8/15,pa/f,x14/5,po/l,x10/12,s4,x1/14,s12,x3/6,pa/h,x11/14,s9,x8/4,s4,pc/m,x15/10,s6,ph/b,x13/9,s5,x14/0,s6,x3/6,s2,pk/n,x15/8,s7,x4/13,s1,x14/0,pp/i,x6/12,s4,x10/11,s5,pk/e,x7/14,s11,x6/15,s9,pa/b,x9/7,s13,x4/5,s1,x8/11,pe/d,x10/4,s15,x9/6,pl/p,x4/7,s3,x9/14,s7,x8/10,s12,x11/14,s1,x12/7,pi/f,x13/9,pm/h,x7/1,s10,x5/15,pf/l,x10/4,s7,pc/b,x5/0,pf/o,x13/14,pk/d,x10/5,pc/m,x2/12,pn/o,s6,x4/1,pg/h,x0/3,s11,x2/8,s10,x12/1,pm/j,x15/2,s9,x1/14,pk/g,x7/5,pm/a,x14/13,s9,x8/6,s13,x13/14,s11,x3/7,po/d,x14/5,s4,x11/4,pi/j,x8/10,ph/a,s14,x3/1,s9,x5/4,pb/k,x10/15,s13,x5/12,s9,x8/10,po/f,x1/9,pn/g,x8/15,s11,x7/9,s13,x4/2,s12,x14/11,ph/o,x13/10,pe/p,x15/3,pf/i,x7/1,ph/g,x13/9,pp/f,x7/15,pe/o,x8/10,s15,x13/7,pl/c,x9/14,s9,x12/0,pa/b,s7,x1/6,s7,x5/8,s8,pn/o,x4/3,pp/m,x7/1,pk/d,x11/0,s11,x15/4,pi/e,x13/5,s3,x14/4,pg/l,x1/7,s10,x9/8,s13,x3/11,po/h,x9/15,pi/l,x2/14,s12,x12/4,ph/e,x7/10,s15,x1/15,s8,x10/13,pg/p,x7/0,pb/i,x8/14,s4,x0/11,pn/o,x6/15,pm/c,x13/9,s11,x0/6,s5,x3/4,s12,x15/0,s13,x8/1,s14,pa/d,x13/14,s4,x8/10,pg/h,x1/7,s5,x5/3,s6,x2/15,s11,pj/k,s2,x4/7,pm/p,x14/15,s4,x5/4,pf/c,x3/13,s13,x4/12,s2,x11/9,s14,x15/1,pd/k,x8/6,pp/m,x4/2,s14,x8/1,s15,x15/10,s5,x7/6,s12,x11/15,pj/e,x5/7,pb/a,x0/2,s7,x14/13,pc/k,x11/9,s13,x3/2,pa/i,x14/11,s2,x0/1,s9,x14/3,pd/j,x15/12,s9,x11/10,s4,x14/13,s4,x3/12,pg/i,x14/10,s10,x1/9,s1,x12/15,ph/k,x0/8,pj/p,x7/1,s13,x9/6,s14,x12/8,pk/f,x6/1,s12,x8/2,pj/o,x9/13,s6,x1/8,s12,x9/14,ph/i,x15/8,s5,x0/3,pm/k,x6/14,s7,x4/2,pg/d,x14/5,s13,x6/1,s9,x3/5,s12,pn/j,x6/14,s13,x12/0,s13,x1/3,s11,x0/6,po/l,s8,x9/2,pj/e,x3/1,s8,pa/f,x0/8,s8,pc/h,x7/9,s4,x0/14,pd/l,x9/6,s12,x13/12,pi/p,x2/6,s11,x11/9,s14,x2/4,s15,x12/14,s14,x3/7,pb/d,x12/0,s6,x9/10,s11,x4/8,pp/i,x11/7,pj/g,x13/8,s1,x6/11,s12,x15/9,s2,pp/f,s3,x14/5,s6,x7/8,s8,x5/9,s5,x10/11,pg/c,x14/13,s5,x6/0,s12,x9/12,s8,x5/3,ph/i,x7/2,s14,x9/0,s9,x7/10,pg/l,x11/3,pd/o,x4/13,s7,pn/k,x2/7,s10,x3/9,ph/a,x14/8,pe/n,x12/2,s7,x13/14,po/k,x9/11,pj/d,x8/1,s10,x3/15,pc/k,x6/4,s9,x5/0,s11,x3/9,s11,x14/13,s11,x2/0,pj/i,x1/14,pa/c,x11/13,s11,x5/0,s8,x2/8,pf/e,x15/14,pc/j,x1/7,pm/i,x11/5,s9,x13/1,s6,x15/9,pk/g,s7,x5/0,pf/p,x14/9,s1,x1/11,pe/h,x4/9,pd/m,x14/2,s4,x1/7,s4,x15/4,s2,ph/l,x14/3,s5,pi/d,x9/12,s8,x4/2,pb/f,x0/1,s15,pd/a,x2/9,s5,x14/7,s2,x5/1,s6,x7/9,po/i,x6/10,s11,x15/4,s5,x14/9,s4,x1/7,pf/b,x3/2,pd/j,x15/5,s3,x13/7,s8,x1/9,pe/p,x2/6,s14,x9/15,pc/h,x2/14,s13,x3/1,pd/f,s13,x0/5,pl/i,x13/14,s1,x8/4,s3,pf/j,s1,x12/11,pn/e,x3/10,s12,x0/13,s14,x1/8,s13,x2/5,s12,x9/14,s14,x11/8,s14,x6/5,pb/o,x14/12,s10,x15/8,s3,x1/2,pj/m,x3/10,s4,x0/6,pd/a,x3/7,pp/m,x9/15,pa/j,x8/14,po/n,x2/13,pg/f,x0/9,s1,pa/n,x7/1,s6,x3/13,s15,x10/2,s6,x4/0,pk/d,x9/13,s14,x5/11,s4,x8/2,s13,x12/11,s7,x0/8,s15,x13/1,s5,x10/15,s8,pa/p,x4/13,s11,x7/10,po/c,x13/3,pe/n,x10/7,s9,x6/13,s2,x9/0,pj/o,x11/12,pe/b,x13/9,s6,x2/6,pd/h,x14/12,s14,pk/o,x13/7,pj/c,x15/4,s1,x0/2,pb/p,x12/1,s3,x15/4,pd/n,x0/10,s10,x6/13,po/f,x2/9,pm/j,s2,x15/13,s7,x12/14,pn/i,x3/11,s8,x1/5,s5,x0/2,s6,x9/1,s12,x8/10,s2,x5/15,pb/a,x12/14,s7,x4/0,s13,x10/11,pe/j,x9/15,s13,x10/14,s15,x1/2,pb/k,x8/3,s10,x11/12,s13,x3/0,pi/p,x10/8,pe/j,x3/5,s8,x1/8,s3,ph/g,x11/6,s12,pa/n,x15/10,s6,pe/p,x11/9,s7,x5/13,s8,x4/0,s4,x6/14,s6,x2/10,s10,x0/5,pl/g,x3/13,s14,x12/7,s4,x15/1,pf/b,s15,x10/4,s7,x13/7,s11,x2/5,pa/j,x13/1,s9,x5/7,s2,x0/8,s9,x11/12,pf/i,s9,x10/8,pe/g,x5/3,s10,x8/12,pf/h,x2/10,s15,x6/4,pc/k,x7/14,pm/o,x5/11,s8,x10/1,pp/j,x9/5,s13,x2/14,s5,x4/1,s9,x12/10,s14,pf/n,x11/1,pl/c,x14/5,s11,x3/6,pg/f,s14,x5/4,s5,x2/1,s5,x11/14,pl/a,x0/6,s5,x9/4,pg/n,x1/6,s6,x13/2,s1,x3/7,pj/k,x6/13,s3,x1/3,s4,x7/8,s1,x12/15,s15,x7/1,pa/d,x3/8,pn/o,x15/1,pi/b,x10/6,s1,pg/a,x14/15,s5,x11/5,s2,x15/1,pd/f,x9/11,s9,x1/5,s8,x9/12,pa/h,x1/0,s11,x5/7,pe/j,x3/13,pl/f,x1/8,s5,x11/14,s14,x9/7,s8,x13/11,pe/k,x10/4,ph/m,x13/5,s3,x0/14,s11,x12/7,s13,x9/3,s2,pd/b,x15/8,s12,x4/5,s4,x2/14,pp/n,x3/8,pi/l,x0/7,s4,x15/6,s10,x11/9,s9,x6/5,s7,x1/7,ph/d,x10/12,s4,x3/14,s2,x15/1,s6,x10/4,pc/l,x6/0,s5,x9/12,s4,pa/p,x2/8,pf/o,x10/1,pp/g,x3/2,pl/a,s13,x6/13,s15,x2/1,s14,x10/5,s11,x0/2,pf/j,s12,x4/11,s8,x14/2,s6,x6/10,s13,x15/13,s1,x10/0,s15,x11/12,s12,x10/14,pi/o,s9,x4/8,ph/a,x1/2,pe/m,x5/14,pj/f,x4/12,pi/h,x15/6,s8,x12/14,s5,x1/2,pb/o,x7/8,s7,pk/e,x12/10,s9,x3/15,s12,x0/6,s5,x3/14,s1,pn/m,s15,x7/5,ph/d,x11/4,s6,x5/15,pp/c,x2/8,pd/i,x9/13,pf/a,x2/4,s5,x12/0,s2,x10/1,s9,x15/13,s5,x8/11,pb/c,x9/1,s9,x7/12,s2,x13/4,pd/n,x11/8,s12,x2/10,pe/g,s10,x4/8,s3,x14/12,s3,x9/6,s5,pa/b,x8/1,s3,x2/3,s12,x11/8,s3,x9/7,s12,x5/13,s5,x8/10,pp/c,x13/0,pk/h,x10/4,pe/n,x0/9,pa/i,x2/5,pd/b,x0/7,pi/p,x13/11,s6,x7/0,ph/n,x8/4,s8,x12/0,s15,x13/1,s9,x8/2,pj/m,x5/15,s15,x13/4,s8,x10/6,s9,pd/g,x1/3,s11,pn/i,x11/9,pj/f,x14/0,pi/n,x5/4,pb/h,x14/13,pm/j,x2/7,s8,x8/15,s3,x0/12,s3,x1/3,s8,x12/7,s1,x14/15,s5,x8/9,pn/a,x10/13,s9,pp/c,x15/2,s8,x8/14,ph/k,s8,x3/4,s1,x2/12,s3,pn/c,x11/0,s10,x2/9,pl/k,x4/7,pg/i,x1/11,s7,x6/3,s11,x13/9,pl/f,x4/3,pc/p,x5/0,s14,x11/4,s10,ph/j,x6/14,s14,x10/1,pf/o,x7/5,s9,x15/12,s11,x8/11,pp/m,x9/3,pg/a,x7/5,ph/e,x2/12,pm/l,x3/9,s13,x8/4,s7,x2/13,s13,x4/14,pe/g,s4,x12/6,po/l,x13/7,pj/c,x11/1,s1,x0/7,pn/l,x10/14,pd/g,x4/12,s2,x8/14,pk/c,x7/12,s1,x1/3,pp/j,x13/9,s3,x12/6,s10,x13/10,s4,x11/5,pn/b,x3/10,s1,x1/9,pc/g,x15/5,s7,x8/4,pe/m,x0/13,s11,x8/1,s8,x5/2,s3,x11/4,pa/l,x10/7,s4,x6/4,po/g,x13/3,pj/b,x2/0,s9,x8/1,pi/k,x3/7,s14,po/p,x8/2,pm/k,x0/14,pe/i,x11/10,pl/f,x0/4,s10,pi/d,x9/6,pc/j,x12/13,s2,x6/0,s12,x7/14,pg/e,x5/9,pk/f,x12/1,s1,x7/4,s9,x0/15,s14,x10/7,s8,x1/11,s10,x2/13,pm/a,s8,po/h,s14,x7/15,pl/i,x10/2,s10,x13/9,s2,pb/e,s1,x7/8,s5,x15/14,pd/a,x7/0,s9,x14/15,s12,x5/0,pi/c,x2/4,pd/l,x8/1,s13,x7/0,s15,x4/3,ph/n,x8/13,pm/o,x1/11,s12,pn/c,x9/0,s2,x8/15,pa/p,x10/2,pm/l,x1/9,pi/f,x3/5,s1,x6/10,s2,pk/m,x5/0,s10,x10/2,s4,pc/g,s7,pk/l,x14/4,s9,x8/5,s6,x13/10,s14,x5/14,s9,x4/11,s7,x0/6,s10,x12/2,s13,x7/6,s7,x12/3,pc/d,s2,pm/j,x6/0,pd/o,x13/7,pn/k,s9,x3/12,ph/e,x9/8,s3,x7/3,s4,x12/4,pg/o,x6/13,pb/d,x15/1,po/c,s14,x6/8,s13,x12/7,pb/f,x8/1,s5,x12/4,pc/a,x6/13,s3,x0/1,s9,x6/15,s7,pm/e,x1/9,s11,x15/4,pk/g,s9,x3/6,s12,x7/14,ph/p,x11/4,s15,pk/e,x7/10,pj/o,x13/9,s11,x7/5,pi/l,x14/15,s1,x8/10,s1,x11/4,s2,x8/12,pe/g,x10/2,pm/l,x4/0,s9,x6/3,pb/f,x10/5,s6,x14/8,s12,x7/12,s15,x0/15,pc/e,x9/3,s9,x7/4,pd/h,x2/11,pp/b,x1/7,s11,x13/11,pk/e,s6,x8/10,s10,x1/2,s3,x12/3,s7,pd/g,x2/0,pa/e,x8/3,s8,x14/9,s2,pk/d,x11/6,po/i,s6,pf/m,x5/0,pn/g,x7/3,pc/o,x11/4,s13,x14/3,s8,x2/15,s14,x5/4,s4,x12/0,s7,x15/11,s10,x12/9,pe/g,x15/5,s4,x7/6,s7,x11/0,pa/b,x12/4,s8,x15/11,s7,x13/5,s15,x2/3,s6,x0/7,s13,x2/14,s11,x1/12,s4,x4/15,s2,x14/3,s5,x12/7,pn/m,x4/0,s11,x11/9,s6,pi/k,x10/6,s11,x2/11,pg/j,x8/15,s2,x4/13,s8,x3/8,pp/i,x14/4,s4,x11/0,s4,x10/14,s1,x5/2,s14,x9/6,s2,x4/8,s13,x7/9,s11,x8/12,s14,pm/f,x7/2,pn/j,x4/8,s4,x10/6,pk/l,x8/11,s5,x2/15,s13,x4/14,po/n,s2,x9/10,s1,x6/2,pk/g,x15/12,s8,x3/14,pj/h,s12,x9/13,s13,x6/12,s4,x15/9,pa/b,x7/2,s10,x8/10,s4,x0/6,s14,x9/14,s1,x11/13,pg/l,x12/5,s4,x11/9,s8,x14/3,pa/n,x7/5,s7,x14/3,pg/c,x7/1,s8,x3/9,s14,x1/8,pm/l,x12/7,pf/e,x8/9,s6,po/m,x0/11,s10,x1/3,s4,x13/0,s13,x8/5,pi/n,x15/3,pm/j,s4,x4/0,pl/h,x5/2,s3,x13/9,s8,x7/14,s12,x11/15,s15,x3/6,pf/n,x5/7,pl/i,x0/14,s9,po/e,x11/9,s12,x12/3,pm/c,s6,x1/6,s4,x12/5,s1,pf/j,x2/6,pb/n,x15/0,s14,x10/7,s15,x15/4,pl/f,x2/10,s2,x3/11,s8,x9/1,pm/k,x4/6,pb/j,x9/7,s1,x11/0,pf/g,x9/14,s4,x13/3,pk/l,x9/12,s13,x1/8,ph/a,x0/4,s10,x12/13,s6,x10/9,s4,x15/6,s13,x2/8,s3,x11/7,po/g,x4/8,s4,x6/3,pn/m,x5/15,pb/g,x10/4,ph/n,x3/11,pf/e,x2/12,pn/p,x9/6,s8,x8/5,s11,x7/2,s1,x15/6,s9,pd/c,x5/2,s2,x7/3,pk/j,x14/6,s4,x11/3,s9,x5/13,pm/h,x0/6,pl/b,x5/2,pa/e,x3/4,pm/d,x6/15,pe/l,x0/3,pi/n,x11/2,pl/j,s7,x0/12,pk/c,x4/13,s10,x5/6,s12,x12/15,s3,x6/10,s13,x1/8,s13,x12/4,s15,x0/10,pb/o,x1/3,s15,x14/15,pe/j,x10/2,s1,x6/15,pp/f,x3/7,s6,x10/13,s3,x5/2,s12,x13/6,s9,x10/14,s13,x5/1,s8,x11/9,s13,x5/14,s7,x0/15,s11,x1/8,s11,x11/9,s13,x0/4,pb/g,x8/7,pp/l,s7,x4/15,s11,x12/1,pf/k,x6/9,ph/i,s4,x0/4,s14,x14/9,s13,x2/10,s13,x1/4,pe/p,x10/14,s2,x7/12,pg/b,x2/3,s6,x8/9,s14,ph/n,x1/12,s13,x15/9,pi/d,x12/6,s9,x7/10,pn/l,x2/11,s13,x10/15,s9,x3/7,pj/g,x1/8,pd/b,x2/4,s10,x5/6,s12,x8/7,s10,x15/13,pn/k,x14/2,pc/a,x8/6,pk/f,x11/4,pc/a,x0/1,pj/l,x10/3,s9,x14/12,s2,x9/2,pn/d,x10/11,s1,x9/8,s6,x13/0,s10,x1/3,s8,x9/8,s3,x11/14,pl/h,x5/1,pn/p,x14/6,s6,x11/4,s15,x3/2,s13,x10/6,s9,x4/1,s3,x15/11,pj/k,s12,x14/1,pm/i,x2/11,pb/o,x10/7,pd/p,x6/11,s8,x12/0,s2,x6/11,s6,x1/10,s7,x12/9,po/l,x14/2,ph/d,x15/9,pl/p,s5,x6/8,s5,x10/13,s5,x12/9,s15,x4/1,s11,x7/11,s9,x3/15,pm/i,x10/5,pd/l,x8/13,pp/n,x0/3,s3,x10/1,pf/e,x5/13,s3,x4/12,s12,x3/11,s4,x6/10,pb/o,x2/8,s2,pf/n,x0/10,s11,x8/11,s10,x14/15,ph/g,x8/0,s13,x11/1,s15,x14/3,pi/l,x11/15,pk/d,x8/12,pm/i,s5,x4/7,s14,x2/9,pc/a,x8/4,s10,x5/12,po/h,x4/9,s8,pk/e,x13/1,s5,x4/14,pi/m,s9,pb/k,x7/12,s6,x2/14,s14,x6/0,s5,x7/8,s15,x15/4,s2,x5/8,s5,x6/0,s7,x8/3,s14,x4/12,pd/m,x7/15,s13,x9/11,s3,x3/12,pp/l,x8/0,s11,x4/3,s5,x15/8,pn/e,x6/2,pp/h,x9/11,s7,x1/15,s8,x10/5,s9,x0/9,s4,x8/3,pd/f,x12/6,pm/o,s3,x10/13,pc/e,x9/14,s12,x3/6,s8,x13/2,s15,x12/10,s9,x9/1,ph/a,s2,x0/4,s4,x9/5,s9,x3/12,s15,x5/9,s13,x14/15,s2,x4/5,pe/m,s10,x11/6,ph/f,x12/14,pa/l,x1/11,s15,x14/7,s3,x10/15,s2,x6/5,s6,x9/2,s10,x13/1,pb/h,x4/10,pe/m,x15/2,pk/h,x4/1,s13,x12/0,pl/o,x13/11,pb/d,x6/1,ph/e,s8,x13/9,pp/k,s7,x10/14,s8,x12/11,pl/h,x9/10,s12,x11/6,pp/i,x8/10,s15,x0/1,pd/c,x10/5,ph/a,s13,x1/15,s2,x7/5,pg/p,x6/15,pb/l,x1/2,s4,x12/8,s7,x5/2,s8,x10/15,s2,x9/1,pj/p,x7/8,s15,x14/9,s10,x6/11,s14,po/f,x7/15,s13,x12/3,s12,x2/13,s2,x10/5,pl/a,x15/9,s5,x12/1,s2,pf/j,s4,x7/4,s3,x2/15,s14,x9/12,pi/c,x3/8,pl/b,s10,pd/a,x10/12,s8,x14/11,pp/b,x3/0,pc/o,x6/10,s5,x8/0,s7,x7/9,pj/l,x2/8,pi/e,x3/6,s8,x7/1,po/m,x8/4,s9,x10/7,pk/c,x1/9,s7,x2/0,s13,x11/4,pd/g,x2/9,ph/j,x3/0,s7,x10/9,s15,x8/2,pm/o,x0/4,s8,x8/7,s10,x4/13,s3,pk/j,x12/3,s13,x7/0,po/d,s7,x9/3,pp/n,s5,x0/1,s1,x3/5,s7,x15/11,s6,x8/1,pb/f,x6/2,pg/h,s9,x10/14,s7,x15/5,pd/f,x4/14,pc/g,x2/7,pd/n,x14/0,po/h,x7/5,s5,x15/10,pf/e,x5/4,s4,x10/0,s12,x15/3,s1,x14/8,s6,x0/13,s13,x5/3,s3,pl/c,x13/6,pn/a,x1/2,pi/p,x7/3,s7,x1/10,pe/n,x4/15,s9,x9/10,s8,ph/b,x1/8,pj/f,s11,x13/6,s8,x8/2,s13,pe/k,x7/0,pc/d,x13/6,s11,x9/1,pg/f,x14/0,s13,pp/i,x13/4,pj/a,x8/9,s5,x12/1,s7,x8/14,pf/h,x5/9,pi/g,x15/13,s1,x5/14,s5,ph/b,x3/10,pm/p,x13/9,s12,x15/0,pf/n,x13/2,pd/a,x8/15,pp/f,x6/9,s15,x14/1,pm/e,x7/5,s10,x10/4,pa/p,s10,x13/8,s8,x3/5,s7,x14/10,s6,x3/8,pe/o,x14/1,s2,x3/9,pi/m,s10,x11/2,s5,x6/7,s9,x8/15,s11,x14/10,pp/b,s2,x3/11,s8,x1/5,s13,x9/12,s9,x5/10,s13,x14/0,pk/l,x2/13,s2,x7/11,s7,x4/10,s11,x8/6,s15,x1/10,pc/d,x4/7,pi/o,s9,x9/2,s2,x10/1,pj/d,x7/11,po/l,x0/1,pb/m,x13/11,s4,x10/4,s2,x0/15,s10,x12/3,s1,x4/1,s13,x6/9,s13,x7/10,s13,x4/9,s1,x14/1,s15,x6/15,s1,x2/10,s10,x9/15,pa/k,x12/0,pl/b,x15/13,pc/m,x14/3,s3,x7/2,pp/e,x8/1,s12,x6/3,pf/d,x9/15,s7,x0/2,pm/p,s7,x3/6,s13,x5/8,s4,x7/1,s7,x10/3,s12,x13/5,s14,x1/9,s1,x14/11,pk/c,s12,pa/m,s8,x2/0,s14,x1/11,s2,x3/7,s5,x15/6,s4,x5/2,s11,x14/11,s3,x8/5,s9,x7/2,s4,x14/13,pe/d,s10,x5/3,s14,x6/10,s2,x15/2,s3,x12/11,pm/n,x3/15,pg/b,x6/1,s10,x13/0,s4,x1/3,pd/a,x7/11,pk/n,x3/2,s12,x15/6,pp/m,x9/7,s6,x10/3,s9,x4/6,s2,x1/0,s13,x15/2,s13,x6/5,s12,x12/9,ph/k,x7/11,pd/p,x9/5,pb/m,x2/12,pn/h,x7/3,pa/f,x10/12,s9,x4/9,pc/n,x15/11,pa/d,x10/0,s1,x1/12,pi/e,x15/5,po/g,x12/8,s9,x7/5,s2,x3/0,s7,x6/15,s13,x3/1,pj/p,x12/0,pn/a,x8/7,s6,x11/14,po/b,x13/6,s12,x9/10,pj/h,s2,pn/a,x11/15,s6,x5/1,s8,x7/11,s5,pm/j,x10/2,pf/n,x12/6,s10,x5/15,pi/b,x9/4,pl/n,x13/15,s1,ph/j,x2/12,s10,x5/9,s10,x12/10,s13,x11/8,s8,x7/3,s9,x12/2,pn/b,x1/6,s5,x10/2,s4,x5/1,s13,x4/8,s4,x13/1,s2,x12/0,s1,x6/1,s13,x10/12,pd/m,x5/15,s3,x12/1,s1,x2/11,s6,x0/13,s8,x9/7,s4,x11/1,po/b,x8/13,pj/d,x5/6,s7,x15/12,pa/n,x14/4,ph/j,x9/8,pb/i,x2/6,s3,x9/3,pa/n,x6/0,pi/j,x15/3,pe/h,x9/1,pa/f,x5/12,s3,x7/9,pc/i,x10/12,ph/b,x9/14,s11,pd/a,x4/7,ph/c,s10,x0/9,s14,x10/4,s6,x7/15,pl/f,x14/1,s3,x0/7,pm/j,x8/10,s8,pf/k,x2/9,s9,x7/3,pn/l,x14/13,s4,x6/2,s8,x8/12,s5,x10/4,ph/f,x2/13,s14,x5/4,s15,x13/14,s6,pk/d,x2/15,pn/b,x13/3,po/i,x0/10,pc/d,x6/15,pn/k,x9/8,pe/f,s5,x13/0,s4,pa/d,x7/11,s7,x4/1,s1,x9/11,s11,x13/12,pm/g,x6/2,s2,x3/5,pp/e,x13/10,s12,x5/9,pn/f,x3/10,s2,x4/15,s11,pe/k,x5/10,pn/o,s2,x6/8,s2,x2/1,s11,x14/3,s12,x6/10,s2,x12/8,pl/j,x1/13,pm/p,s13,pc/j,x5/10,s11,x15/1,pg/b,x6/13,s6,x5/0,s2,x3/14,pa/n,x10/2,pi/c,x7/13,pa/d,x4/0,pm/f,x3/13,po/i,x8/11,pf/c,x1/9,pd/e,x11/13,s3,x15/1,pk/i,x14/7,pp/a,x11/15,s13,x2/7,s1,x10/11,pi/h,x0/15,pk/g,x11/13,pe/f,x9/8,pm/p,x4/13,po/n,x9/10,pf/j,x8/14,s14,x0/2,s3,x3/11,s2,x12/7,s15,x5/8,s15,x10/2,s7,x8/15,pg/d,x13/14,pa/m,x0/1,s10,x8/15,pk/i,x14/6,s14,x4/2,pj/g,x11/12,pa/m,s13,pg/f,x5/4,po/l,x13/8,ph/a,x0/6,s2,x10/3,s12,x7/11,po/k,x15/12,s9,x14/5,s8,x7/3,s12,x12/13,s11,x7/15,ph/p,x2/0,s14,x4/9,s14,x1/5,s7,x14/3,pi/f,x4/12,pg/h,x2/5,s10,x15/12,pp/f,x4/13,s14,x10/9,s11,x2/6,s6,x1/14,pn/b,x13/9,pl/k,s14,x11/15,pf/g,x14/5,s11,x2/10,s6,x7/8,s9,x10/2,s12,x9/11,pb/d,x7/3,pc/n,x10/6,s11,x8/11,s3,x12/5,s1,x15/13,pg/p,x14/1,pl/d,x4/13,s2,x14/7,s11,x3/12,s2,x13/8,pa/f,x12/14,s10,x15/3,s6,x14/2,s5,x5/15,s7,x14/1,pl/c,x4/12,pd/o,x0/11,pn/i,x10/15,s15,x14/12,s14,x3/1,pl/k,s15,x13/5,s6,x14/11,s15,x3/0,pi/a,s2,x11/9,po/e,x13/2,pk/h,x11/6,s14,pj/m,x13/12,s1,x11/6,s3,x1/12,s10,x8/9,pa/e,x12/13,pf/c,s6,x10/6,pp/j,x5/14,s14,x0/1,s13,x13/3,s13,x12/8,s5,x0/5,s1,pf/g,x7/6,s5,x3/11,s5,x5/13,s5,x15/0,s13,x8/13,s14,x15/9,s13,x3/10,s4,x9/1,s15,x14/11,pm/a,x7/5,pb/k,x11/3,s6,x12/4,s5,x13/3,pn/c,x1/12,pj/o,x10/6,s8,x2/7,s4,x10/9,s2,x11/12,s14,x13/8,s6,x2/11,s15,x5/6,s4,x12/9,pn/d,x6/7,s11,x2/5,ph/g,x1/12,s11,pb/o,x7/11,pi/h,x3/4,s12,pm/n,x1/10,s11,x4/9,pg/i,x15/2,pf/p,x8/13,ph/e,x7/15,pf/j,x8/13,s3,x15/12,s15,x0/11,s2,x7/8,pc/i,x15/14,s10,x3/13,s7,x7/15,s11,x13/1,pa/j,x15/7,po/l,x9/5,s2,x7/6,pa/b,x0/12,pn/h,s1,x14/4,s13,x15/10,pk/p,x2/1,s8,x8/4,s5,x13/1,pm/b,x11/15,pc/k,x13/3,s5,x10/9,pl/i,x11/6,s9,x2/5,ph/c,x0/9,s8,x1/5,s4,x12/10,s4,x8/6,s6,x4/0,s9,x1/15,pa/b,x11/9,s12,x1/7,s6,x10/13,s3,x9/0,s7,x1/7,s2,x4/9,s2,x14/8,ph/o,x13/7,pd/g,s9,x11/0,s9,x3/2,pk/c,x13/7,s15,x11/8,pf/o,x7/15,s14,x10/0,pk/i,x2/15,pc/d,x4/0,s9,x9/5,s10,x7/13,s1,x5/15,s11,x14/4,s13,x6/9,pn/f,s3,x10/12,s15,x2/4,s14,x12/3,s15,x5/0,pc/k,x4/13,pj/o,x14/3,pe/d,x13/0,s2,x6/8,s12,x1/11,pm/b,s14,x14/10,pl/p,x1/13,s6,x0/8,pb/n,x14/7,s15,x6/2,pi/g,x3/7,ph/a,x2/14,s8,pf/d,x6/5,s3,x0/11,pn/b,x15/2,pf/p,x1/12,pe/g,x13/15,pb/o,x6/2,s7,x1/15,ph/j,s15,x4/11,s7,x5/10,s3,x7/12,pf/i,x11/0,s14,x13/6,s3,x3/9,s2,x12/0,s8,x7/2,s14,x15/6,s6,x12/9,s4,x1/6,s15,x3/15,s1,pk/j,x0/7,pi/d,x3/4,s11,x5/15,pb/p,x0/7,s2,x10/1,s4,x11/0,s13,x10/5,s13,pn/c,x4/14,pj/g,x7/9,s12,x13/11,pb/i,x8/15,s13,x7/12,pd/f,s14,x11/14,pn/k,x9/7,s7,x8/1,s10,x9/4,s4,x2/6,ph/c,x8/5,pi/d,x0/15,s3,x6/5,s6,x11/0,pg/p,x2/5,s1,x12/14,pj/k,x13/5,pm/a,x3/10,pl/f,x1/2,s7,x11/5,pn/k,x10/7,s13,x13/14,s3,x2/0,s5,pd/e,x7/14,s11,x11/4,pa/m,x13/14,s3,x6/1,s7,x14/5,s6,x11/6,pc/p,x3/14,s15,pm/g,x10/6,pb/k,x5/13,s1,x1/11,s6,pg/c,x4/12,s9,x9/0,s7,x7/15,s15,x14/1,pp/j,x9/10,pg/l,x0/2,po/j,x14/3,pn/k,x6/10,s14,x8/1,s3,x0/4,pi/a,x7/11,pj/l,x1/0,s3,x10/6,s5,x1/14,pa/k,x8/7,s1,x3/1,s9,x9/4,s13,x13/2,pn/h,x3/4,s4,x8/6,s14,x9/13,s15,x4/1,s1,x2/12,s3,x11/7,pm/c,x4/14,pb/l,s4,x5/2,s8,x3/4,pm/f,x12/9,pp/g,x8/14,s7,x12/13,pk/l,x6/4,pb/i,x1/13,s10,x3/2,s13,x1/11,pf/k,x12/9,s10,x11/3,s11,x4/9,pp/n,x15/0,pf/o,x1/2,s12,x6/11,s15,x4/9,pd/i,x6/3,s6,x12/7,pj/n,x9/8,s9,x10/2,s5,x12/8,s3,x1/4,s10,x2/7,pb/k,x0/5,s4,x15/10,pn/l,x3/9,s14,x0/2,pp/i,x11/8,s6,x4/13,pg/m,x3/15,s2,x8/9,s9,x12/3,s1,x10/4,pe/i,x9/15,s4,pf/l,x8/2,s10,pa/n,x4/11,pk/b,x1/9,s10,pf/a,x15/2,s15,x12/10,pg/k,x1/11,pl/e,x14/8,pi/a,x11/12,s9,x2/1,s14,x6/7,pc/m,x9/4,ph/n,x15/11,s10,x1/0,pj/e,x5/4,s3,x8/2,s6,x3/11,pm/c,x1/12,pn/l,s12,x10/8,s4,x7/11,pk/h,x15/5,pc/l,x7/10,s5,x9/4,s14,x6/12,po/d,x8/13,pa/c,x6/14,s13,x10/11,s6,x8/7,s4,pb/m,x2/5,pa/g,s12,x7/0,pj/k,x14/11,pg/d,x8/0,s15,x4/13,pc/i,x15/8,s7,pg/a,x1/4,s10,x2/0,s13,x10/13,s6,x1/7,s13,x15/11,pe/o,x0/12,s10,x10/3,s12,x6/9,pl/f,x3/14,pn/e,x12/0,s15,x4/7,s10,x5/13,s11,x6/12,s5,x14/8,s12,x15/13,s13,x1/4,s14,x13/0,s12,x2/8,s11,x15/13,s14,x6/4,s1,x1/7,s1,x11/2,s9,pc/b,x10/1,pg/k,x0/15,pa/h,x5/3,s7,x13/0,s1,x8/6,s11,x2/3,pm/c,x1/14,s6,x10/13,ph/p,x15/12,pd/g,x5/4,s14,x11/13,s8,x14/1,pk/h,x3/13,s7,x9/4,s2,pn/g,x2/13,pl/o,s1,x11/15,s15,x4/6,s1,x9/8,pc/e,x15/11,s12,x8/4,po/d,x1/14,pp/f,x15/5,pi/n,x11/6,pd/o,x14/3,s4,pm/j,s10,x1/5,s9,x14/11,s12,x1/12,s13,x5/4,s1,x11/14,s7,x5/6,s10,x3/8,pp/d,x6/13,s2,pf/o,x10/4,s14,x5/6,pm/l,x13/10,s12,x3/5,pg/j,x11/15,pm/o,x3/7,pn/e,x10/13,pf/c,x8/4,s12,x14/13,s13,x5/12,s6,x1/0,s5,x9/7,pm/i,x1/5,pd/c,s8,x11/2,s3,x0/10,s8,x13/7,s7,x9/11,s8,x12/8,s13,x7/9,s11,x6/10,s14,x9/5,s14,x7/1,s1,pe/b,x12/5,ph/g,x3/7,s9,x6/10,s8,x9/13,pm/l,x12/8,s12,x6/15,s5,x2/3,s4,x0/11,s7,x3/6,pn/k,x2/4,s3,x9/1,s11,x11/6,s3,x9/1,s14,x15/2,s3,x3/11,pe/m,x0/15,po/j,x5/12,pa/d,x7/9,s2,pl/p,x1/2,s6,x14/8,s3,pj/e,x5/9,s1,x8/2,pi/n,s8,x9/13,s4,x7/15,pd/o,x9/6,pi/p,s8,x13/12,pc/h,x0/9,s6,x8/5,pm/i,x4/12,s12,x9/2,s7,x6/14,ph/g,x5/9,pe/f,x15/7,pi/c,x11/6,s12,x13/10,s11,x12/15,pj/g,x14/8,s14,x2/13,s9,x5/0,s11,x4/3,s15,x1/10,pf/m,x12/11,po/e,x10/2,s8,x8/1,s3,x6/10,pc/g,x2/11,s1,x4/7,pj/o,s14,x6/15,s13,pm/f,x4/9,pc/k,x7/8,pd/h,x2/15,pj/l,x10/7,pi/e,x9/11,s4,x2/13,s15,x0/5,s6,x3/8,s12,x11/4,s10,x14/1,pf/n,s15,x10/12,s14,x11/1,pd/m,x12/15,s4,x6/13,pi/n,x2/8,s14,x7/1,s8,x6/15,pc/f,x4/9,s15,x0/2,s9,x14/12,s8,x6/5,s8,x3/2,pb/g,x0/10,s15,x1/11,s2,x6/12,s15,x2/14,pc/d,x0/8,pg/f,x1/3,s10,x10/2,pp/e,x4/7,s14,x6/8,s11,x0/4,pm/n,s11,x10/3,s1,x15/13,pi/h,x12/9,pc/j,x0/5,s5,pl/b,x14/7,s6,x11/8,s14,x4/2,s8,x10/0,pd/i,x7/9,s13,x3/0,pp/e,x5/6,s8,x7/12,ph/d,x2/14,pa/c,x15/0,s12,x9/12,s11,x2/14,pe/p,x10/7,po/n,x13/11,pg/k,x15/12,s9,x2/9,s15,x6/4,s4,x5/10,s13,x4/1,s1,x9/7,pf/c,x1/2,s11,x4/15,s11,x1/8,pe/h,x12/7,s15,x13/1,s7,pp/c,x6/5,pl/e,x10/3,s12,x13/15,s1,x0/1,pi/o,x14/2,s10,x13/1,s15,x7/15,s5,x11/1,s6,x13/10,pl/k,x0/1,pf/d,x7/12,s2,x13/6,s5,x10/1,s10,x6/13,pc/b,x3/0,pn/d,x12/8,pf/j,s11,x0/15,s9,x10/12,pg/n,x3/13,po/k,x14/10,s8,x7/1,pd/i,x10/3,s13,x11/6,s2,x12/0,s4,x8/14,pk/j,x15/10,pi/h,x9/0,s12,x10/12,pc/p,x5/3,pl/m,x0/12,s8,x10/5,pe/g,x7/0,s15,x5/11,pk/d,x6/0,s1,x1/9,pe/m,x5/13,s7,x12/15,pl/j,x10/2,s12,x0/13,s13,x5/3,s4,x0/13,pc/g,x1/6,s1,x13/5,pj/a,x3/15,s8,x10/9,pc/f,x1/7,s5,x11/6,s13,x1/5,s6,x9/2,po/m,x15/6,s3,x0/3,pn/e,x15/6,pp/b,x14/9,s13,x3/12,s3,x8/0,pi/e,s3,x1/13,s13,x5/0,s14,x3/14,s11,x7/4,s10,x2/3,s12,x15/13,s9,x7/5,ph/l,x3/0,pj/n,x1/6,s1,x12/3,pl/b,x0/1,pf/o,x14/15,s12,x13/5,pa/e,x6/1,s13,x12/11,pc/b,x0/1,pi/h,x2/10,pk/l,x5/12,s2,x8/7,s1,x15/5,pf/o,x9/1,pd/l,s4,x5/14,pm/c,x3/9,pa/h,x0/15,po/p,s1,x5/1,s7,x0/14,pi/e,s2,x10/6,s11,x9/12,pg/a,x6/10,s14,x14/11,pd/b,x8/12,s1,x9/13,pg/h,s11,x4/0,s10,x13/10,s3,x15/9,pn/b,x2/0,s2,x13/5,s2,x1/6,s4,x4/12,s6,x1/5,s2,pg/m,x4/13,s1,x14/0,s5,x11/8,s6,x10/12,pe/p,x9/8,s7,x10/3,s7,x6/8,s5,x10/14,pg/a,x3/15,pk/c,x2/7,pa/b,x1/13,s11,pi/c,x11/9,s7,x2/3,s11,x10/4,s15,po/g,x15/7,s5,pc/e,x8/3,s10,x10/14,s2,x1/8,s6,x7/6,s11,x2/0,pm/k,x8/9,s1,x13/10,s7,x3/14,pg/p,s10,x2/8,s6,x1/4,pj/l,x11/12,s8,x1/5,s12,x15/13,s2,x1/3,s4,x13/2,s15,x7/5,s15,pn/c,x14/8,s10,x6/9,s3,x8/7,s3,x0/2,pe/g,x8/13,pj/i,x9/11,s10,x13/12,s6,x6/10,s8,x3/4,po/p,x13/10,pk/l,x4/12,pb/e,x0/5,ph/n,x6/11,s10,x1/14,s3,x8/7,s11,x5/13,s7,x10/9,pd/b,s1,x7/15,pn/f,x8/13,s12,x2/0,po/k,x15/12,s7,x8/10,pl/h,x2/6,s7,pf/m,x5/10,s5,x13/7,s8,x12/8,pg/d,x4/14,pm/c,x0/9,pk/j,x6/5,s11,x14/9,s10,pe/g,x8/1,s13,x3/2,s1,x15/5,s2,x9/6,s5,x4/5,s1,x13/10,pp/j,x15/5,s14,x12/4,s10,x2/1,pf/i,x5/8,s7,x14/9,ph/o,s4,x8/5,s7,pm/n,x14/2,s13,x3/5,s7,x13/8,s14,x10/3,s8,pe/o,s4,x14/1,s9,x3/10,s7,x4/0,s13,x3/1,pn/i,x11/0,pk/f,s7,x15/6,s3,x13/8,s3,ph/c,s5,x11/14,s6,x7/15,s9,x11/12,s10,x0/7,pb/d,x6/5,s14,x4/13,pj/e,x3/11,pc/b,x6/10,pg/m,x7/8,s5,x2/1,s7,x5/10,po/d,s9,x3/14,pk/c,x4/11,pa/e,x5/15,s11,x14/1,pb/i,s2,x0/3,s13,x15/13,s1,x3/0,s9,x2/6,pm/e,x15/4,pi/o,s5,x14/9,pf/b,x2/4,pd/h,x3/8,pc/f,x14/0,pl/a,x8/2,s8,x15/9,s7,x2/1,pi/j,x5/8,s7,x1/12,s4,x4/10,s13,pc/g,s7,x6/7,s11,x10/8,s4,x2/15,pe/l,x0/12,s2,x11/7,s8,x1/13,pm/b,x14/15,s8,x0/4,s8,x1/10,pf/p,x15/6,pi/b,x3/7,s12,x9/12,s7,x4/15,s15,x8/6,s12,x10/11,pa/f,x2/14,s4,x6/4,s13,x14/13,pd/l,s9,x4/2,s1,x8/7,s2,x9/11,pi/b,x2/8,ph/a,x1/9,pg/f,x2/12,s12,x5/8,pd/l,s15,pa/f,x13/3,s7,x6/5,s6,x0/9,s7,x5/13,pi/p,x10/11,pk/o,s5,x8/15,s5,x0/10,pp/l,x11/9,pf/i,x8/14,po/d,x15/13,s1,x1/7,pb/i,x11/5,pl/f,s14,x12/15,s4,x11/0,s1,x15/14,s1,x4/0,s11,x8/9,s1,x6/1,s11,x5/8,pm/i,x9/7,ph/d,s13,x8/4,pp/n,x1/12,pj/b,x3/9,s1,x8/15,ph/p,x11/1,s11,x9/12,s4,x10/0,pg/k,s12,x14/2,pi/e,x3/1,s3,x13/7,s5,x2/6,s9,x4/13,s1,x0/14,pk/g,x13/8,s3,x1/9,s12,x15/5,pm/d,x11/2,pc/g,x13/5,pb/m,x1/14,pa/o,x11/0,s5,x15/10,s3,x8/4,pd/n,x10/5,pe/b,x8/13,s15,x7/5,pa/g,x4/1,s7,x11/6,pb/f,x9/2,pp/d,x10/8,pf/h,x12/3,pc/g,x0/13,s13,x9/1,s13,x10/0,pk/b,s5,x5/4,pd/p,x8/11,s15,x15/4,pg/b,x5/10,pc/f,x9/12,ph/k,x0/10,s10,x6/3,s3,x7/11,pb/l,x15/12,pj/n,x13/5,s14,x12/11,pd/l,x9/6,pf/b,x4/2,s8,x8/9,s13,x6/10,pa/g,x9/0,s4,x4/2,s13,x7/8,s8,x12/11,pb/f,x4/15,po/j,x12/7,s4,x9/4,pe/a,x6/13,s2,x7/4,s14,x5/15,s13,x6/12,s4,x11/5,s13,x8/1,pm/c,x5/10,pb/h,s3,x11/13,s10,x3/9,pm/p,x2/15,pe/h,s13,x8/5,s1,x9/7,s4,x3/4,pa/j,x6/0,pg/e,s14,x1/10,pf/n,x15/12,s15,x3/8,po/k,x0/2,s2,x3/1,s2,x12/6,pe/g,s7,x9/10,pj/i,s1,x6/8,s7,x14/13,s7,x5/3,pg/a,x11/0,s13,x3/14,pe/f,x15/2,s14,pm/k,x12/9,s1,pp/n,x6/15,s9,x12/2,s2,x14/0,s15,x10/5,s13,x15/13,pd/g,x4/6,s8,x3/14,pe/p,x9/1,s15,x15/11,s5,x14/12,s4,x5/7,pg/c,s10,x9/12,s8,x5/1,s10,x4/0,s6,x5/11,s9,x14/1,s1,x12/7,s2,x2/10,s14,x7/12,s8,x13/14,s6,x2/0,pm/k,x8/9,s9,x4/5,s4,x2/7,pc/h,x11/6,pm/b,x2/14,s14,x13/7,s14,x2/3,pe/d,s13,x4/15,s15,x13/10,pp/b,x11/6,pf/o,x13/0,pj/e,x3/10,s13,x6/2,s10,x13/10,pb/d,x11/6,s15,x4/2,pi/g,x11/7,s3,x15/4,pj/e,s11,x8/12,po/c,x7/5,s13,x13/10,s6,x6/8,s12,x5/11,s5,x7/9,s13,x6/3,s14,x11/10,pa/p,x9/1,pn/m,x6/4,pd/a,x7/14,po/j,x10/2,s9,x8/12,pm/e,s3,x5/10,s13,x12/7,s9,x13/1,s3,x9/6,s4,x14/2,s6,x0/1,s13,x10/9,s11,x14/5,pf/a,x15/9,ph/j,x8/0,s14,x10/15,s14,x5/1,pb/o,x8/0,s10,x14/10,s7,x11/9,s7,x10/4,pj/e,x2/0,pn/o,x8/12,s4,pa/d,s11,x6/15,s3,x10/0,po/h,x11/1,s9,x6/3,pk/i,x9/5,s11,x13/12,s9,pl/f,x0/6,s14,x9/5,s13,x1/7,s12,x14/13,pc/e,x9/6,s11,po/a,x4/1,pd/p,s7,x2/13,pk/o,x4/0,pb/c,x15/9,pg/j,x0/8,s2,x7/11,pc/n,x2/13,pb/i,x5/15,s1,x2/10,s3,x14/13,pd/a,x5/3,pe/n,x1/0,s2,pk/g,x13/6,pl/a,s4,x0/10,s12,x6/11,pi/n,x0/5,pb/d,x2/7,s5,x11/9,s8,x12/7,s11,pn/c,x11/1,s4,ph/g,x7/15,s11,pl/k,x9/0,po/p,x7/5,pm/j,s3,x11/0,s15,x1/9,s1,x11/10,pg/p,x8/6,pc/l,x14/2,pe/h,x9/0,s3,x3/12,s5,pf/l,x4/0,s14,x11/1,s9,x9/5,ph/d,x2/11,pm/e,x12/0,s15,x11/10,ph/f,s9,x2/4,s10,x11/13,s6,x1/15,po/d,x11/9,pc/p,x1/12,s6,x15/11,s6,pn/e,x1/4,s6,po/k,s10,x2/0,pl/m,x13/9,pp/n,x6/8,pk/c,x10/4,pa/d,x9/7,pe/f,x5/14,s8,x10/1,pm/g,x3/6,pk/b,x11/9,pl/g,x14/4,pi/h,s11,x3/2,s2,x1/13,pc/p,x9/14,s6,x8/6,s14,x5/13,s9,pi/k,x1/11,s7,x0/4,s11,x5/11,s4,x12/0,s7,x1/2,pl/o,x12/10,s10,pc/e,x1/11,s1,po/n,x2/4,s3,x7/6,pk/p,x5/4,pc/e,x7/9,pm/b,s7,x1/6,s8,pj/a,s6,x12/11,pk/h,x10/6,s4,x11/1,s13,x3/4,s5,x10/9,s15,x2/3,pi/p,x12/7,s2,x6/1,s13,x10/15,ph/d,x1/11,pn/p,x9/8,pf/o,x15/6,s11,x13/12,pe/j,x15/11,s4,x14/13,s3,pb/i,s7,x0/1,po/l,x4/5,s3,x2/3,pi/c,x15/7,s5,x2/9,s3,x14/15,s3,x3/11,s1,x13/2,s14,x8/9,pp/o,s12,x2/5,s13,x3/14,s13,x11/9,s14,x0/4,pl/f,x9/12,s1,x0/3,s11,x4/2,pp/i,x8/10,po/c,x6/0,s5,x11/7,s8,x5/8,s5,x3/4,s4,x1/12,s14,x11/14,s2,x9/3,s11,x5/10,pg/f,x14/7,s8,x3/0,pi/h,x9/4,s7,x3/5,pm/f,x2/9,s3,x0/14,s11,x12/7,s8,pb/l,x6/5,pp/j,x12/10,s5,x15/11,pl/d,x7/4,s10,x14/9,s5,x0/6,s9,x7/9,s8,x3/14,s15,x15/13,s12,x10/1,pp/e,x9/2,s13,x3/8,ph/a,x14/7,s1,x9/11,pb/c,x5/1,s1,x15/7,s9,x11/2,s3,x6/3,s15,pl/k,x1/9,s14,x5/15,pn/h,x12/2,pp/c,x13/9,pd/m,x5/0,pa/f,x13/11,s6,x10/3,pd/o,x1/15,s10,x10/3,s7,x13/4,pg/e,s15,x14/2,pi/l,x7/8,s4,x15/3,s14,x0/8,s15,x14/2,ph/g,x13/6,pi/n,x10/1,pe/b,x5/6,s7,x11/12,s8,x6/2,s1,x13/9,s10,x15/3,s7,x14/8,s4,pg/n,x1/9,s13,x12/3,s6,pa/h,x14/9,s1,x2/3,pc/m,x7/6,pa/k,x14/15,pj/g,x11/8,pe/i,x14/1,s4,x15/13,s15,x11/7,pl/k,x8/4,pn/f,x12/6,s7,x4/1,s8,x11/2,s4,x9/0,pd/b,x8/2,s3,x4/7,pi/a,x1/2,s1,x10/3,s7,x6/11,pk/l,x3/0,s3,x11/7,s7,x4/15,pn/d,x0/9,s11,po/b,x14/3,s3,pa/i,x11/2,s4,x9/3,pm/d,x1/14,pb/p,x13/0,po/m,x14/4,pg/b,x5/13,pf/h,x9/10,pn/p,x7/11,s10,x6/5,pk/h,x15/10,s12,x12/1,s6,x11/4,s11,x5/2,s6,x13/15,s14,x10/12,s4,x1/15,s7,x8/2,s15,x12/4,pc/p,x1/6,s13,x8/2,pi/d,x5/0,pj/e,s13,x2/3,s11,x1/14,pm/n,x2/9,s11,x13/15,s10,x7/5,s4,x6/2,pd/o,x12/11,pi/n,s9,x2/3,pl/d,x12/6,s14,x2/14,pa/n,x7/13,ph/l,x3/8,pd/b,x7/15,pf/g,x3/13,pb/j,x0/2,pi/d,x12/7,s11,x1/11,s13,x5/14,s4,x3/11,s13,x4/1,s12,x11/9,s7,x8/12,s3,x13/4,s8,x5/3,pp/m,x0/11,s4,ph/l,s7,x9/15,pc/p,x4/1,pa/k,s4,x15/6,pj/d,x4/11,s14,x14/12,po/g,x9/1,s2,x11/14,s7,x10/4,pn/a,x8/13,ph/p,x6/12,s13,x3/0,s15,pb/d,x11/15,s1,x13/3,s1,pa/e,s7,x12/9,po/c,x3/2,pg/k,x7/1,s2,x13/10,pc/b,x5/12,s8,x10/14,pd/h,x7/6,pl/p,x0/1,s12,x10/4,s8,x1/15,s2,x12/6,s12,x13/14,s6,x11/7,pn/g,x9/10,s10,x2/8,s11,x5/9,s13,pe/c,x13/11,s12,x4/15,s5,x2/13,s4,x10/12,s10,x1/6,po/h,x13/15,pk/i,s9,x3/5,s4,x6/8,s15,x2/9,s11,x14/15,pd/a,x4/5,pl/f,x15/0,pd/g,x13/5,s4,x10/2,pi/h,x7/4,s14,x0/10,pj/c,s11,x4/12,s2,x14/13,s15,x5/10,pl/h,x11/9,pe/n,x15/5,s12,x6/7,s13,x0/9,s15,x7/1,s10,pk/b,x0/9,pj/n,x15/5,po/b,x0/13,s14,x5/4,s10,x0/11,s12,x5/8,ph/j,s13,x0/15,pk/g,x2/9,ph/a,x15/6,s7,x3/7,s14,x1/8,pb/g,s10,x11/15,s9,x9/8,s5,x11/5,pk/p,x7/14,s5,x2/8,s13,x13/3,s15,x1/12,s3,x14/13,s8,x3/7,po/l,s12,x2/4,pp/n,s9,x13/6,s15,x10/3,s6,x8/7,pa/o,x15/0,pp/m,x2/4,pk/l,x6/0,s9,po/i,s11,x13/10,s1,x11/0,ph/e,s14,x8/10,pa/i,x13/4,s4,x3/7,s5,x5/9,pe/j,x1/8,pn/p,x13/9,pj/h,x12/15,s11,x0/11,s12,x13/9,s11,x4/11,pf/i,s9,x9/10,s7,x1/11,s12,x0/4,pp/o,s1,x5/10,s12,x9/12,s15,pg/j,s10,x0/4,s9,x3/13,pa/i,s12,x0/4,pd/n,x5/1,pj/m,x15/11,s15,x9/3,pd/k,s4,x11/15,s6,x4/9,s13,x7/14,pm/g,x3/8,s15,x4/13,s3,x10/14,s12,x12/15,pj/o,x4/14,pl/d,x10/12,s12,x15/5,pb/e,x10/11,s2,x15/13,s2,x0/3,s13,x8/12,s3,x9/6,s13,x0/15,s1,x13/5,pi/j,x0/14,s15,x1/13,s3,pc/m,x5/11,s15,x10/7,s4,x11/13,pk/p,x3/4,s2,x6/7,pf/b,x0/3,pl/j,x11/1,pg/b,s7,x15/10,s6,x1/12,s8,x9/3,pj/a,x13/11,s2,x9/3,s6,x5/7,pd/e,x6/8,s15,x3/0,s12,x4/2,pg/j,s7,pe/b,x12/0,pj/h,s5,x2/9,s12,x15/6,pm/b,x11/4,s10,x2/8,s8,x9/3,s7,x11/5,pk/c,x6/3,s12,x10/0,s14,x15/5,pi/b,s11,x3/4,s2,x13/14,s11,x6/12,s15,x2/5,pp/d,x4/7,s15,x14/8,s1,x3/12,s11,x0/14,s13,x12/5,pj/i,x2/15,pa/f,x9/8,s1,x14/10,s4,x1/2,pc/l,x14/9,s8,x7/10,s5,x1/3,pk/g,x9/14,s12,x11/7,s5,x10/8,s15,x15/9,ph/l,x2/1,s14,x11/4,s10,x6/5,s14,x7/14,s3,pf/b,x4/15,pd/k,x13/1,s6,x6/9,s4,x12/15,s6,x1/13,s4,x11/2,pf/h,x4/12,s4,x9/10,s2,pn/l,x1/8,s10,x9/15,s8,x2/6,pi/g,x4/13,s7,x15/0,pn/j,x7/13,s2,x0/11,s6,x9/4,po/i,x13/10,s5,x3/0,s10,x8/7,s8,x0/12,s13,x4/3,s1,x2/5,s3,x8/15,s8,x0/10,pe/k,s7,x8/15,s6,pd/p,x3/6,s5,x15/1,ph/o,x10/0,pc/l,x15/14,s8,x6/12,s6,x15/5,pi/e,x1/11,s6,x3/5,s5,x2/11,s3,pl/k,x15/1,s14,x3/12,s1,x5/0,pn/h,x8/7,pd/p,s12,x5/15,pm/j,x4/6,s11,x10/9,pk/a,s4,x13/0,s12,x6/5,s5,x14/8,s11,x15/7,s2,x14/4,s11,pd/h,x11/15,s3,x2/1,pc/o,x0/8,s15,x15/3,pl/m,x7/6,pi/j,x4/14,s2,pg/d,s13,x13/3,s11,x5/10,pc/b,x2/8,s13,x14/1,pj/d,x11/8,po/i,x3/13,s1,x1/11,s10,x7/0,pg/p,x3/13,pa/c,x4/6,s7,x0/9,ph/p,x14/15,s7,x0/5,s5,x13/7,s3,x5/0,pd/l,s4,x1/13,s10,pn/b,x6/15,s1,x3/11,s8,x8/9,pc/e,s5,x12/11,s4,x14/13,pj/d,x9/0,s5,x13/11,pm/c,x3/0,s9,x2/1,pb/k,x14/7,s4,x8/4,s2,pj/l,x9/13,s12,x0/12,po/e,x6/5,pb/n,x12/11,s2,x4/3,s7,x6/12,pm/g,x3/15,s4,x2/9,pj/h,x13/7,s14,x4/10,s2,x11/12,pe/n,x14/10,s2,pl/c,s1,x2/8,s9,x0/9,s7,x13/6,s13,x7/11,ph/k,x15/1,pn/a,x12/3,s13,x10/11,s10,x8/15,pd/o,x3/11,pf/g,x7/12,pn/b,x14/13,po/f,x10/8,s5,x11/15,s2,x6/10,s15,x14/0,s4,x5/15,pm/k,x0/11,pl/j,x10/4,pn/f,s3,pj/m,x14/2,s5,x10/13,s9,x15/14,s13,x2/8,s4,x1/15,pl/k,x9/6,s5,x14/7,s1,x13/1,pi/a,x10/11,s4,pb/g,x1/0,pm/j,x6/12,s12,x2/3,s12,x0/12,s11,x10/5,pd/f,x15/4,s7,x2/0,s4,x6/5,s8,x10/8,s5,x3/12,pj/h,x2/11,s14,x6/1,s6,x8/12,po/a,s6,x2/5,s14,x13/7,pi/j,x15/6,pa/o,x0/1,pb/n,x9/2,pd/j,x12/13,s5,x4/14,s12,ph/f,x1/12,pm/d,x11/10,pn/i,x12/9,s8,x13/15,po/b,x11/12,s11,pj/p,x9/4,s3,x14/1,pk/c,x7/6,s8,x11/0,s1,po/i,x1/15,s6,pc/l,x11/9,s7,x15/2,s14,pi/p,s10,x9/4,s10,x7/12,pn/c,x11/4,s14,x9/3,pm/j,x8/6,pd/l,x3/9,ph/a,x2/15,s3,x5/9,s15,x4/1,pn/f,x10/11,ph/i,x5/0,pa/l,x15/9,s1,x2/8,s3,x1/14,s13,x10/4,s11,x3/0,pb/k,s5,x12/11,po/a,x3/4,s9,x8/14,s5,x9/12,s6,x3/5,s14,pl/k,s4,x6/9,pf/m,x10/14,s2,x2/9,pb/d,x11/4,pf/e,x5/1,s12,x9/12,s3,x0/6,po/c,x1/3,s14,x13/14,s12,x12/15,pi/n,x10/8,s11,pk/f,x7/1,s14,x6/2,s12,x12/13,s6,x6/8,s4,x10/14,pm/d,x11/9,s9,pp/f,x14/3,pe/c,x2/10,s15,x0/7,s11,x5/1,pa/j,x3/8,s2,x6/4,s5,pl/b,x2/15,s5,x3/11,ph/a,x9/12,s8,pd/m,x5/1,s13,x2/13,pb/j,x14/12,pm/a,x3/9,pe/o,s15,ph/p,s8,x2/4,s14,x13/8,pd/b,s5,x10/3,pn/p,x9/15,pl/m,x6/8,pi/k,x3/9,pm/c,x0/13,ph/i,x1/7,pn/k,s12,x9/10,pa/b,x15/8,s5,x2/13,s10,x6/0,s10,x8/2,s15,x12/7,s7,x13/6,s10,x0/4,s5,x2/5,pf/m,x1/7,s1,x8/6,s10,x2/1,pj/b,x13/14,pa/c,x7/3,pm/j,x2/14,s7,x3/8,s12,x14/12,pl/f,x10/6,s14,x14/7,s14,x12/4,s13,x7/13,s14,x0/15,s4,pc/d,x13/11,pn/l,x1/6,s8,x3/7,pc/d,s13,x1/11,s14,x0/9,pl/e,x8/7,pa/m,x6/11,s13,x13/1,s8,pl/g,x4/7,s5,x0/3,s5,x9/1,s4,pc/b,x4/11,pn/j,x7/14,s3,x15/5,s15,x13/12,s9,x9/4,s3,x8/5,s1,x7/4,pi/l,x14/9,pp/c,x8/6,pl/g,x4/12,s7,x5/15,s7,x2/7,pc/m,x12/14,s12,x1/13,s12,x7/8,s10,x3/4,pb/a,x7/8,s7,x2/6,s15,x10/3,s6,x7/15,s8,x10/3,s11,x6/11,s14,x8/9,pk/g,x7/12,pc/a,x11/15,pn/e,x2/10,s12,x5/14,s5,x9/10,s2,x13/3,ph/m,x1/6,pl/d,x13/15,s7,x12/6,pm/o,x11/13,s10,x2/6,pn/c,x8/10,s10,pp/f,x2/0,pb/j,x8/11,pe/p,s12,x10/6,po/f,x11/0,pd/p,s13,x15/9,s15,x1/2,s8,x6/5,po/n,x7/10,s2,x14/5,s10,x1/6,pp/e,x0/11,ph/j,x1/4,s2,x15/7,pb/p,x2/9,s12,x14/10,s5,x6/9,s11,x3/11,s2,x1/5,pd/g,x14/7,s8,x11/0,s12,x12/2,s10,x11/4,pp/b,x12/0,s1,x9/13,pi/a,x15/3,ph/b,x1/4,pd/e,x0/11,pa/n,x15/10,s7,x4/3,pd/e,x15/11,pf/m,x10/7,s10,x0/1,s8,x15/7,s8,x11/6,s6,x3/7,ph/c,x14/1,s9,pm/d,x5/8,pg/b,x2/7,pf/d,s2,x14/10,s2,x15/3,pj/e,x0/5,s7,x3/1,pp/f,x11/6,pd/h,s4,x0/4,pk/o,x6/10,s9,x15/3,s11,x12/5,pl/c,s10,x9/10,pn/f,x8/1,s1,x6/12,s6,x15/2,pp/d,x14/4,s11,x12/6,po/a,x2/10,s4,x8/15,pc/n,x5/11,s6,pi/d,x3/6,s2,x5/12,s3,x3/14,s4,x11/2,s4,x15/6,pl/p,s6,x5/9,s14,x11/0,s15,x4/9,pa/i,x10/15,pb/p,s3,x2/9,pd/f,x10/3,s14,x11/14,s13,x9/10,s5,x7/12,s9,x15/8,s15,x0/3,ph/m,s3,x4/2,pa/c,s13,x12/13,pj/m,x1/2,s8,x7/12,s2,x2/4,po/h,x12/5,pf/c,s10,x6/8,s8,x5/14,s4,x11/4,s11,x10/12,s5,x2/9,s11,x4/14,pj/i,x2/9,s2,x13/12,s11,x5/2,s8,x11/12,s4,x10/7,s14,x5/6,s5,x3/1,s12,x6/10,pg/b,x12/11,pj/f,x3/15,pm/i,x5/9,ph/b,s4,x15/2,po/e,x6/0,s2,x1/8,s14,x13/12,pc/j,x1/6,s3,pn/d,x13/14,s9,x4/11,s4,x7/1,s10,pe/o,x13/10,s11,x8/2,s3,x0/3,s1,x13/1,s11,x2/11,s1,x3/12,s1,x8/2,s8,pk/m,x0/10,pn/i,x8/7,pl/e,x11/14,s11,x3/8,s9,x15/12,pf/b,x4/0,pe/l,x12/8,pm/c,x5/2,pg/o,x14/3,s8,pl/f,s6,x10/0,s12,x2/5,s7,x10/8,ph/o,x3/15,pb/d,x6/12,s3,x2/10,pk/j,s1,pd/b,x6/1,pf/a,x12/10,s3,x0/6,s11,x11/9,s15,x8/12,pc/n,x15/13,s11,x12/11,s6,pp/l,x1/10,s12,pj/c,x6/0,s5,x13/12,s6,x10/14,s10,x5/1,po/n,x0/14,s9,x15/8,pi/e,x13/7,s3,x6/5,po/a,x2/7,s5,x12/14,pb/p,x13/0,pg/i,x9/6,s6,x12/13,s5,pa/j,x10/14,s8,x11/5,s15,x13/9,pf/l,x8/2,pj/c,s6,x5/0,s8,x12/1,pi/o,x14/3,s14,x1/5,s12,x15/4,s12,x7/6,s6,x12/15,s11,x10/13,s9,x3/6,s4,x15/9,s4,pc/b,x4/6,s6,x11/10,s7,x7/0,s9,x10/11,s9,x9/7,s12,x11/14,s13,x9/2,s12,x13/15,pk/p,x7/5,pc/d,x0/2,s9,x1/8,s12,x15/6,s3,x2/7,s3,x3/10,s5,x13/9,s14,x8/3,s12,x9/13,s5,x6/15,pb/n,x0/2,s10,x12/15,pm/e,x13/3,s7,x7/12,pl/k,x11/4,pm/f,x7/9,s2,x14/15,pp/e,x12/5,ph/f,x13/7,pl/k,x6/5,pc/f,s4,x9/15,s5,x14/10,s2,x4/8,pa/j,x7/0,s6,x6/2,s10,x11/14,s5,x0/10,s15,x2/6,pl/p,x0/4,s1,x8/15,s13,x14/3,pj/m,x9/11,pa/e,x14/6,s10,x9/8,pl/f,x14/10,s9,x2/9,s5,x15/10,pb/e,x13/5,s11,x7/6,s8,x5/14,s3,x12/9,s8,x5/0,ph/k,x1/3,s1,x10/13,s12,x3/15,s5,x11/9,pi/p,x7/8,s9,pn/l,x12/11,pe/p,x3/6,po/l,x9/8,s13,x11/14,pi/n,x0/15,pm/k,x10/8,s9,x12/2,s13,x10/4,s5,x3/6,pp/a,x10/11,s9,x0/3,s9,x9/13,s10,x6/14,pk/g,s15,x2/0,s8,x6/5,pp/j,x0/8,pd/o,x12/13,s7,x15/14,s6,x12/11,pc/i,x3/15,s6,x1/6,pe/l,x13/15,pc/f,x6/10,s6,x12/0,s1,x14/5,pk/g,s5,x8/0,s1,x12/4,s11,pj/p,x9/1,s11,x0/12,s14,pb/k,x6/10,s14,x1/2,po/l,x7/3,pn/h,x12/10,s8,x0/11,s11,x5/8,s7,pp/f,x11/7,s7,x6/14,s1,x9/1,s12,x12/0,pe/j,x9/2,s8,x5/14,pl/o,x15/4,pk/b,x0/3,s11,x8/1,pe/o,x3/5,pp/f,x13/10,s12,x1/15,s3,x7/6,po/k,x8/11,pp/b,x5/13,s9,x9/2,s12,x0/6,s5,x10/3,s10,x5/13,pj/k,x1/12,s8,x8/9,pb/d,s7,x13/10,s1,x9/7,s3,pa/g,x1/12,s10,x2/0,pk/h,x12/4,s11,pb/e,x5/6,s5,x9/13,pj/h,x1/4,s1,x6/9,pi/n,x14/15,s10,x8/3,s7,x0/10,s6,x11/12,s2,pf/h,x7/13,s9,x15/8,s11,x10/4,pb/p,x8/0,s6,x9/11,po/k,x4/10,ph/j,s4,x6/5,pc/n,x13/2,s1,x0/12,s12,x4/8,pa/l,x7/11,pd/h,x13/10,s5,x1/4,s3,x3/0,pg/e,x10/15,s13,x12/14,pd/i,x11/7,pe/h,x0/15,s12,x10/6,s9,x8/3,s12,pc/d,x14/1,pj/p,x8/0,s6,x5/2,s11,x13/4,pi/o,x1/8,s3,x3/15,pd/f,s12,pj/e,x1/5,pp/b,x8/9,s15,x0/5,pg/c,s2,x15/6,pn/k,s7,x11/5,s3,x0/8,pm/p,x15/10,s7,x8/4,s4,x9/15,s3,x0/11,s12,x9/8,s2,x0/15,pc/k,x12/2,s15,x15/8,s1,x10/4,s15,x6/12,pd/n,x4/7,pl/k,x11/5,s3,pc/m,s10,x6/15,s2,x5/10,s1,x7/1,s5,x4/5,pg/e,x10/8,s13,x3/4,s11,x15/7,pm/b,x10/13,pi/a,x5/9,pd/n,s3,x15/11,s7,x3/14,pc/p,x11/15,s14,x4/2,pj/o,x5/14,pb/g,x12/11,s7,x6/0,s10,pm/d,s7,x15/3,s9,x7/2,s6,x14/9,pp/k,x10/5,s4,x3/7,s5,x11/12,s4,x0/5,pg/f,x9/2,s2,x11/6,pb/i,x15/0,pm/h,x11/3,s1,x14/4,pg/d,x7/13,s15,x15/1,s13,x9/14,pa/j,x12/7,pe/o,x13/2,s12,x14/0,pd/a,x5/1,s7,x12/2,s7,pi/l,x10/4,pn/g,x14/3,s7,x2/9,pi/e,x1/11,pf/l,x15/12,s7,x8/2,pi/k,x10/14,s13,x0/2,ph/c,x9/15,pd/e,x4/8,s5,ph/m,x15/7,s8,x11/13,s4,x8/9,s13,x1/12,pj/d,x6/3,pl/k,x5/4,s2,x8/13,s3,x6/15,s4,x4/13,s15,x10/6,pf/a,x0/3,s6,po/e,x7/4,s7,x8/5,pb/d,x15/4,ph/o,x8/1,s9,x9/0,s11,x4/5,pl/f,x7/3,pm/d,x12/2,s12,x4/0,s6,x5/14,s5,x11/12,pe/k,x7/6,s4,x2/10,pj/d,x1/7,s4,x9/14,s1,pl/k,s8,pa/g,x3/2,s8,x5/6,s2,pf/k,x10/13,pn/m,x1/15,s6,x13/0,s5,x11/5,s15,x1/9,s1,x13/3,s15,x8/11,pd/a,x10/15,s8,x4/5,s1,x1/9,s5,pg/f,x12/11,s12,x14/7,ph/k,x15/4,pm/p,s2,x13/0,pl/o,x2/10,s3,x11/14,pi/j,s9,x4/7,pn/p,x12/6,s13,x7/4,s1,x9/8,s13,pk/e,x13/2,pf/l,s11,x9/0,pm/h,x1/3,pl/a,x11/4,s1,x0/9,pf/d,s5,x10/2,s5,pm/j,x11/14,s10,x10/3,pd/h,x9/13,s12,x5/14,s10,x6/7,pm/k,s3,x2/9,s8,x11/6,s15,x14/5,pa/l,x7/13,s9,x2/11,pj/p,x3/13,s10,pc/m,s2,ph/j,x10/4,pl/m,x11/1,s15,x14/13,s8,x7/12,s13,x0/13,s5,x5/9,s14,x0/8,s6,x11/13,pk/a,x0/4,s10,x11/7,pm/d,x2/5,pl/n,x11/7,pk/c,x14/8,s11,x2/0,s11,x13/6,s8,x11/12,s14,x10/1,pn/l,x12/5,ph/m,x6/10,pi/a,x13/8,pl/c,x2/3,pg/e,x10/8,s7,x3/5,s2,x0/8,po/k,x14/3,pl/f,x4/10,pe/i,x6/8,pp/l,x11/9,pc/f,s8,x4/7,s1,pn/l,x8/15,pa/p,x11/12,s3,po/i,s1,x14/7,pj/f,x5/3,s12,pi/d,s15,x4/7,s3,x14/15,s8,x6/3,s11,x13/10,s14,x9/3,s1,x5/7,s7,x10/3,pb/l,x9/13,pc/n,x14/0,pd/h,x10/2,s8,x7/0,s10,x14/1,s10,x6/9,s15,x1/14,s14,x12/5,s13,x13/3,s10,x10/14,s8,x9/12,pa/o,x0/11,pg/c,x1/8,pj/m,s12,pd/c,x5/11,s8,x3/0,po/l,x15/5,pp/d diff --git a/2017/d16/ex2/ex2.py b/2017/d16/ex2/ex2.py deleted file mode 100755 index d65972d..0000000 --- a/2017/d16/ex2/ex2.py +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env python - -import sys -from typing import NamedTuple - - -class Spin(NamedTuple): - n: int - - -class Exchange(NamedTuple): - a: int - b: int - - -class Partner(NamedTuple): - a: str - b: str - - -Move = Spin | Exchange | Partner - -Programs = tuple[str, ...] - - -def solve(input: str) -> str: - def parse_move(input: str) -> Move: - if input[0] == "s": - return Spin(int(input[1:])) - if input[0] == "x": - return Exchange(*map(int, input[1:].split("/"))) - if input[0] == "p": - return Partner(*input[1:].split("/")) - assert False # Sanity check - - def parse(input: str) -> list[Move]: - return [parse_move(move) for move in input.strip().split(",")] - - def apply_move(programs: Programs, move: Move) -> Programs: - match move: - case Spin(n): - return programs[-n:] + programs[:-n] - case Exchange(a, b): - tmp = list(programs) - tmp[a], tmp[b] = tmp[b], tmp[a] - return tuple(tmp) - case Partner(a, b): - ia, ib = programs.index(a), programs.index(b) - tmp = list(programs) - tmp[ia], tmp[ib] = tmp[ib], tmp[ia] - return tuple(tmp) - - def do_dance(programs: Programs, moves: list[Move]) -> Programs: - t = 0 - cache = {(programs, 0): 0} - TOTAL_MOVES = 1000000000 * len(moves) - while t < TOTAL_MOVES: - programs = apply_move(programs, moves[t % len(moves)]) - t += 1 - key = (programs, t % len(moves)) - if (previous_t := cache.get(key)) is not None: - cycle_length = t - previous_t - num_cycles = (TOTAL_MOVES - t) // cycle_length - t += num_cycles * cycle_length - else: - cache[key] = t - - return programs - - moves = parse(input) - programs = tuple(chr(ord("a") + i) for i in range(16)) - programs = do_dance(programs, moves) - return "".join(programs) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d16/ex2/input b/2017/d16/ex2/input deleted file mode 100644 index 205f5dc..0000000 --- a/2017/d16/ex2/input +++ /dev/null @@ -1 +0,0 @@ -x6/12,s14,x14/1,s5,x12/7,pn/i,x10/11,ph/p,x7/4,s7,x3/11,s4,pf/d,x13/12,s14,x1/8,pc/p,x13/0,s5,x1/6,s11,x4/8,s8,x6/12,s10,x3/4,pf/h,x14/11,pe/k,x10/13,s13,x11/5,pl/j,x15/13,pp/a,x14/2,pn/g,x5/0,pe/m,x13/8,s6,x5/3,ph/k,x1/4,s5,x5/15,s3,x11/14,s12,x9/3,po/f,x11/0,pj/k,x12/5,s14,x9/3,s1,x8/6,s10,x9/2,s11,x11/13,pp/d,x4/0,s2,x7/9,s1,x6/15,pk/h,x3/1,s10,x5/11,s14,x14/13,s2,pe/b,x1/12,pn/g,x4/3,pj/a,x10/2,s3,x8/9,pk/b,x3/2,s9,x15/11,pe/g,x3/9,pn/i,x4/10,pb/g,s15,x0/6,pa/e,x7/14,s3,x3/10,pp/f,s13,x4/9,pl/n,x5/8,s7,x9/15,s14,x6/14,pg/j,x13/15,po/m,x2/5,s8,x14/3,s15,x5/2,pe/l,s13,x12/11,pj/i,x2/6,pm/p,x5/13,s3,x9/6,pn/h,x3/12,s14,x10/8,po/g,x1/13,s15,x5/0,pj/c,x7/2,s9,x5/14,pl/o,x11/2,pi/h,x3/4,po/p,s2,pf/c,x6/8,pi/e,s9,x0/15,s3,x10/1,s12,x6/3,s7,x8/4,pp/g,x9/6,s6,x11/0,pi/h,x2/12,s10,x4/11,s12,x12/7,s8,x11/8,s8,x5/15,s13,x0/14,pc/b,x1/9,pd/a,x13/15,s13,pn/l,x1/3,s12,x4/11,pd/h,x6/9,po/e,x1/14,pg/k,x8/6,s1,x10/0,s9,x2/8,pd/l,x15/4,s8,x9/1,s11,x15/3,s7,x12/2,s8,x3/1,s12,x9/5,s11,x3/7,s4,x8/13,pf/i,x11/9,s4,x5/0,s6,x8/12,pk/n,x7/14,s10,x2/5,pl/c,x1/13,pa/d,x11/0,s9,x6/3,pn/c,x2/5,s14,x15/10,s4,x9/2,pi/a,x15/10,pc/o,x0/9,pe/j,x8/3,po/l,x9/0,s10,x5/2,s12,x6/11,s6,x12/8,s6,x4/15,pp/j,x3/10,s13,x15/11,pg/f,x3/14,s10,x7/9,s7,x2/5,s2,x0/7,pl/m,x3/8,s14,x14/0,s1,x4/10,s12,x15/8,s15,x2/6,pc/a,s12,x15/5,ph/b,x6/12,s1,x11/8,s15,x10/13,po/a,s13,x5/14,pi/e,x4/12,s13,x7/9,s15,x15/8,s4,x3/7,pb/c,x13/5,s11,x12/1,s13,x14/6,s15,x1/2,s9,x10/11,pp/f,x14/5,pb/d,x10/8,s4,pl/k,x5/11,pn/d,x8/15,s1,x2/4,s4,x12/8,s11,x2/10,pb/m,x8/15,ph/i,x7/6,s3,x2/12,s3,pg/n,x8/9,pe/j,x4/11,s13,x13/5,s13,x9/10,pi/n,x5/3,s11,x12/0,s4,x4/6,s12,x14/2,s15,x0/4,s2,x5/15,s6,po/l,x8/11,s4,x14/6,pg/f,x3/4,pb/j,x15/8,pe/i,x12/6,pb/h,s12,x1/8,pg/j,x11/15,pf/i,x6/2,s6,x15/3,pk/g,x14/4,s8,x8/10,s9,pj/n,x1/6,s15,x7/0,pb/h,x2/11,pm/d,s3,x6/8,s9,x2/14,s12,x7/12,pb/g,x11/5,s10,x4/2,s12,x9/13,pn/d,s3,x2/12,po/h,x5/8,s2,x13/9,s15,x4/7,s9,x14/0,s13,pj/g,x3/2,s13,x12/14,s5,x0/5,s14,pl/p,x1/6,s2,x3/12,pi/b,s11,x6/5,pj/a,x14/7,s14,x3/12,s6,x10/7,po/k,x8/1,s13,x3/5,pe/f,x13/12,s12,x8/3,pj/n,x12/13,pm/f,s3,x8/14,po/e,x4/5,pk/l,s12,x2/3,s13,x10/15,s4,x4/12,pg/b,x9/14,pa/e,x13/4,s5,pb/p,x6/11,s1,x2/7,s11,x6/4,s3,x5/1,pi/d,x4/15,pc/e,s5,x8/1,s5,x7/0,s11,x4/15,pl/m,x8/14,pe/g,s13,pm/c,x4/0,pp/l,x9/15,pn/e,x4/8,s8,x7/15,s4,x4/8,s14,x9/0,s7,x14/2,s10,x1/11,s2,x5/0,pp/c,x3/1,s14,x4/2,po/b,s10,x15/9,s4,x0/6,s4,x12/14,s6,pe/n,x7/9,pj/a,x4/11,pn/c,x8/0,pb/f,x10/2,s15,x4/5,s3,x7/14,pg/h,x6/8,pd/i,x10/3,pc/a,x5/14,ph/n,x11/8,s6,x6/7,s6,x2/5,s12,x6/14,pi/p,x8/10,s11,x2/7,s13,x10/8,pd/g,x11/2,s7,x4/15,s2,x3/12,s4,x7/13,s6,x3/15,s8,pa/i,x14/13,pj/e,x7/10,s4,x1/6,s3,ph/i,s13,x13/11,s2,x7/12,s4,x5/6,s14,x12/13,s8,pk/e,x14/7,s13,x5/10,s9,x4/12,s3,x10/11,ph/n,x0/12,pb/o,x9/14,s13,x6/4,ph/m,x0/1,pc/d,x3/6,po/h,x1/14,pe/k,x9/12,pf/n,s3,pp/e,s15,x5/10,pf/b,x0/1,s2,x11/15,pj/a,x0/6,s15,x9/4,s11,x3/11,pn/l,x4/14,pi/d,x13/7,pp/a,x2/9,pg/j,x15/1,pl/b,x14/5,pg/k,x10/6,pm/i,x4/11,ph/f,x12/0,s3,pn/o,s13,x4/15,pa/b,x13/10,pi/j,x4/15,s5,x12/13,s11,x2/5,s9,x8/9,s7,x5/14,s5,x0/15,s10,pb/h,x2/13,pn/a,x5/15,pf/g,s15,x4/12,pd/k,s9,x8/13,s3,x12/3,pa/b,s1,x14/2,s8,pm/d,x6/15,s5,x12/11,s7,x0/15,s1,x5/13,pg/b,x0/11,s13,x14/2,s8,x5/15,pc/l,x10/0,pf/i,x12/9,s8,pg/h,s8,x7/14,s5,x13/0,pj/d,x1/8,pb/c,x2/6,s10,pa/h,x1/14,pk/b,x2/8,s2,x0/10,po/i,s11,pp/b,x12/7,s4,x14/15,s5,x2/7,pf/k,x1/6,pl/g,x0/7,pp/e,x8/12,s1,x5/3,s9,x0/8,pg/d,x10/3,pk/b,x15/2,pf/h,x12/14,pl/n,x4/3,s7,x12/10,pg/f,x6/0,ph/o,x7/9,pm/p,x1/14,s14,x4/11,s9,x6/5,s14,x7/12,s8,x14/6,s12,x8/13,s5,x5/9,s9,x2/11,s5,x9/14,s8,x15/6,s11,x1/0,s11,x11/14,pc/o,x10/7,s2,x5/15,pi/l,x12/14,s5,x7/6,pa/f,x4/2,pk/e,x6/13,s5,x5/4,s13,x10/6,pc/l,x12/3,pf/h,x15/8,s13,x13/5,pd/m,x15/12,s7,pb/i,x7/13,s11,x10/4,po/g,x3/13,s14,x11/15,s8,x13/10,pc/p,x9/12,pn/e,x15/8,s14,x3/7,pc/k,x10/8,s4,x9/1,s4,x7/3,s11,x15/8,s2,x2/3,s4,x12/4,s2,x9/14,pp/i,x11/7,s15,pe/b,x2/5,s13,x1/0,pn/p,x6/12,s8,x15/10,pg/d,s10,x4/9,pb/e,s8,x3/1,s7,x4/6,s10,x15/12,pi/o,x10/9,s6,x7/15,s5,x5/4,pl/b,x14/0,s6,x7/6,s7,x12/8,pa/f,s13,x4/13,s14,x8/9,s3,x14/12,s6,x15/6,s13,x11/10,pl/o,x5/0,s1,x1/11,s13,pg/k,x13/5,s1,x6/1,pm/o,x4/2,s13,x1/15,s15,x10/8,ph/b,x6/2,pj/m,s15,x7/13,s5,x9/3,pn/f,x6/7,pl/e,x12/8,pa/p,x15/10,s4,x2/8,s9,x7/0,s1,x6/5,s3,x8/9,pc/g,x13/14,s7,x0/5,pd/n,x15/3,pj/c,x2/7,pi/p,x14/13,ph/m,x11/0,s15,x15/10,pk/p,x7/0,pf/b,x11/13,s11,x2/14,s10,x12/15,s5,x13/5,pg/j,x15/0,s1,pb/p,x11/3,pf/o,x6/2,s6,x5/1,s12,x2/15,pj/n,x13/1,s13,x9/11,s4,x5/12,s12,x6/2,ph/f,x4/3,pj/g,x2/12,pp/m,x9/13,s4,x11/3,s14,x14/6,s13,x5/9,s12,x3/8,pk/j,x4/1,pb/d,x7/5,s1,pa/c,x15/9,s6,x14/7,s2,x12/3,po/m,x15/1,pp/e,x2/3,pa/i,x6/4,s5,x13/15,s6,x6/5,pj/p,x4/12,s6,pg/o,x7/10,s8,x15/12,s10,x1/9,s11,x4/12,s10,x3/7,s4,x5/13,s14,pb/p,x7/3,s6,pf/a,x4/1,s5,x11/5,s4,x14/1,pm/n,x11/15,s3,x12/13,s12,x14/6,s2,x2/3,pj/c,x7/1,s3,x2/11,s15,x13/5,pk/m,x4/1,pc/e,x14/11,pk/l,x7/15,s6,x6/9,s6,x15/2,pj/n,x9/12,pp/g,x2/3,pm/c,x4/9,s6,x13/10,s3,x5/14,pf/a,s7,x4/2,ph/c,x7/6,s7,pg/b,x3/14,pi/j,x0/1,s3,x13/12,s5,x8/0,s2,x6/1,s12,x14/7,s11,po/c,s13,x5/9,pf/a,x12/2,s2,x3/11,s3,x2/1,pm/i,x12/4,s5,x13/10,s2,x4/1,pf/b,x9/8,s12,pm/a,x0/3,pj/f,x4/6,pb/d,x15/10,pe/g,x2/7,s4,x10/9,s4,x1/7,s1,x8/12,s5,x10/0,s9,x1/11,s9,x2/14,s12,x3/6,s3,x13/8,s6,pi/c,x6/2,pa/h,x5/8,s4,x4/1,s6,x6/8,pg/l,x10/4,ph/o,x12/8,s7,x13/10,pa/d,x0/3,pm/l,x1/15,s1,x9/10,s3,pp/g,x13/7,s3,x3/11,pk/h,x14/6,s14,x12/9,s12,x15/8,pl/p,x5/13,s6,pg/d,x6/14,pb/a,x4/13,s15,x12/3,s3,x1/0,s7,x5/4,s8,x3/7,s9,x2/6,po/c,x0/7,s11,x3/1,s2,x12/7,s6,x6/5,s12,x15/13,s14,x14/11,s8,x8/13,pp/g,x15/6,pk/d,x8/1,s9,x7/12,pe/c,x13/2,s9,x1/12,s8,x2/11,s1,x0/13,pl/a,x3/5,s9,x14/2,s12,x5/12,pn/k,x0/14,s3,x7/6,s9,pl/f,x10/2,pe/m,x4/14,s15,x0/3,s15,x15/10,s14,x6/7,pd/h,x13/2,s1,x0/11,s6,x14/6,pp/a,x4/11,s9,x2/14,s3,x9/8,s7,x7/5,pi/f,x10/9,s6,x15/11,pm/a,x13/14,s1,x3/6,s6,x1/9,s11,pp/i,x11/12,pd/n,x5/0,pk/l,x2/1,ph/p,s9,x13/8,s12,x1/9,s10,x11/10,s15,x8/3,s12,pj/f,x1/7,s11,x4/3,pp/g,s2,ph/n,x7/9,s9,x1/3,pg/k,x13/15,s7,x5/10,po/e,x9/12,s1,x8/11,ph/l,x13/4,s7,x15/10,s13,x9/8,pp/k,x4/2,s6,x9/10,s9,pa/g,s9,x1/7,s9,x9/10,s4,x3/4,s10,po/f,x5/2,s10,x14/15,pc/h,x5/0,s14,x3/7,pi/a,s11,x15/9,s6,x12/2,po/l,s11,x10/4,ph/p,x1/0,pe/c,x3/15,s9,x9/1,s1,pg/j,x2/12,s6,x5/6,ph/l,x7/4,pp/b,s7,x3/9,s13,x1/8,s15,x2/13,pe/n,s9,x9/12,s15,x14/6,s1,x11/2,s11,x1/12,s1,x13/11,s15,x2/8,pf/j,x12/0,po/n,s4,x9/1,s5,x10/8,pj/p,x9/12,pn/d,x0/15,pk/h,s3,x8/4,pi/o,x14/10,s12,x13/3,s12,x10/1,s4,x11/13,s11,x9/1,s6,x13/8,s2,x1/0,s13,x6/9,pd/l,x12/14,pp/h,x11/9,pc/f,s9,ph/k,x14/1,pj/g,x8/15,pf/e,x13/1,pb/o,x5/14,pa/c,x9/13,s9,x15/7,pp/m,x10/1,s7,x0/13,pi/j,s1,x14/2,s6,pc/b,x15/13,pp/i,x14/7,s14,x5/12,s2,x8/6,s12,x0/3,s10,x13/7,s12,x10/4,s5,x2/7,pm/e,x3/15,s6,x11/9,s14,x15/10,pi/o,s4,x7/12,pf/l,x9/11,s7,x4/2,pk/m,x0/8,pb/p,x6/9,pc/o,x11/13,pe/f,x5/3,s4,x9/12,s8,x15/10,s12,x1/9,s7,x0/10,s3,x4/15,s7,x3/13,s7,x7/5,s5,x4/14,s13,x15/9,s1,x12/10,s15,x14/9,pl/a,x10/6,pd/n,x0/5,pp/i,x3/11,s15,x10/2,pk/d,x15/1,s4,x3/14,s7,x8/13,s3,pm/o,x3/1,s3,x0/2,s3,x15/8,ph/e,x12/9,pl/k,x0/11,pf/e,x8/10,s10,x2/6,s4,x7/4,s8,x2/13,pj/p,x15/4,s11,x11/10,s4,pe/f,x5/8,s11,x3/15,s5,x0/9,s15,x6/15,pl/h,x0/2,s10,x13/8,pd/m,x11/3,pb/n,x2/12,s15,x15/14,s2,x1/9,ph/d,x8/14,pj/a,x3/5,s2,x14/10,s2,x0/11,pl/f,s11,x4/8,s4,x7/15,s3,x13/0,pb/c,x12/2,pp/o,s11,x14/5,pk/h,x12/11,pm/l,x6/3,s9,x7/0,s8,x5/9,pf/n,x15/4,s7,x9/12,s11,x8/11,pb/i,x6/15,s1,x9/14,s1,x7/10,ph/l,x11/0,pp/e,x8/14,pd/l,x5/9,s6,x4/10,pb/c,x15/11,s5,x7/10,s2,x2/8,s4,x6/9,pd/h,x2/5,pc/o,x6/4,pf/i,x15/8,pl/e,s5,x12/9,pf/p,x14/0,pb/m,x7/15,s3,x1/8,s6,x0/6,s12,x13/15,pj/l,s15,x12/2,pf/h,x10/8,s10,x14/7,pm/a,x1/15,s8,x10/6,pf/e,s10,x15/7,s12,x9/0,s2,x10/14,s1,x0/2,s14,x13/6,s13,x9/15,s11,x3/11,s11,x15/6,pi/d,s13,x7/9,s1,x4/15,s12,x8/5,s8,x10/7,s15,x12/13,s5,x11/10,s8,x13/7,s4,x10/2,s5,x3/1,pl/b,x10/6,pg/d,x8/11,s5,x7/1,s2,x13/0,s6,x11/8,s8,x13/3,s10,x14/7,s14,x12/5,s14,x10/6,s1,x4/13,pn/b,x14/6,s13,x5/3,s15,x7/2,pm/i,x13/11,pe/h,x15/3,s3,x14/2,pk/n,x13/0,s3,x2/1,pe/b,x3/10,s1,x12/1,pd/l,x0/8,pe/m,x9/14,ph/i,x12/8,pm/e,s5,x4/10,s13,x2/7,s2,x4/12,s13,x7/3,pj/g,x2/13,s2,x0/1,pa/n,s8,ph/l,x14/7,s13,x0/13,s8,x6/9,pe/a,x10/1,s13,x13/11,s5,x10/7,s1,x4/1,pd/g,x9/11,s5,x6/2,s5,x4/1,s10,x0/14,s14,x13/6,pl/c,x7/0,s1,x12/11,s3,x10/3,s8,x7/12,s3,pe/k,x2/4,pa/p,s4,x12/7,pe/g,x15/1,s9,x8/2,s8,x15/14,pj/d,x13/8,pp/b,x14/3,s2,x1/9,s3,x13/5,s8,x15/11,pn/e,x9/0,s15,x1/13,pa/p,x9/6,s15,x15/14,s15,x7/5,s4,x15/3,pf/g,x7/6,s5,x3/12,pd/l,x15/8,s7,x7/3,s6,x9/14,s8,x0/7,s6,po/c,x12/9,s11,x13/7,s8,x14/6,s6,x10/11,s1,x2/1,ph/m,x0/4,s14,x2/12,s2,x9/1,pl/f,s15,x4/3,s13,x12/15,pg/d,x10/2,s5,x0/6,pi/k,x5/1,pg/d,x10/6,pj/a,x8/2,pn/o,x13/12,s5,x8/0,s8,x10/4,s6,x9/6,s4,x13/3,s1,x4/5,pp/h,x3/10,s12,x7/15,s12,x2/8,s2,x10/15,s12,x11/12,pl/f,x9/4,s2,x12/5,pk/d,x1/6,pg/j,x9/7,pd/c,x5/14,s11,x2/0,s15,x15/4,pn/l,x8/11,s1,x14/12,s12,x6/4,pc/h,x3/8,s6,x4/7,pl/j,x6/1,pn/g,s2,x3/0,s5,x15/6,pf/e,x11/1,po/k,x4/15,s12,x10/7,pl/c,s8,x5/3,pj/n,x6/12,pd/h,x15/8,s12,pn/l,s3,x11/1,s2,x6/15,pa/m,x11/0,pn/i,x14/10,pd/m,x4/1,po/p,x9/8,ph/b,x14/6,s11,x13/9,s9,x12/4,pp/g,x14/2,s4,pn/b,x6/15,pc/m,x1/0,s7,x9/15,s12,x7/13,s10,x9/5,pe/h,x2/7,s4,pl/m,s7,x10/12,s3,x4/9,pn/o,x12/7,pf/h,x5/13,pp/o,x2/12,pm/j,s10,x7/13,s5,x12/15,pf/b,s6,x1/0,pm/e,x4/12,pb/d,x5/2,pg/e,x9/11,pd/o,x10/5,s8,x11/3,s7,x9/1,s2,pn/j,x4/0,s5,x7/15,s5,x8/1,pb/i,x2/0,pn/j,x7/5,s15,x2/6,pi/g,x14/12,pj/d,x2/1,s4,x10/4,pi/n,x9/14,s14,x8/11,pg/m,x15/2,pp/b,x11/14,s12,x9/8,s7,x7/2,pk/j,x3/15,pc/i,x1/9,s7,x7/8,s2,x12/6,s10,x2/15,pe/g,x6/0,s2,x5/13,s2,pp/f,x11/3,s1,x4/14,s7,x9/6,s10,x7/5,s13,x11/13,s7,x7/6,pd/b,x1/8,s8,x13/15,pm/e,x4/7,pd/c,s11,x3/12,pj/a,x5/8,s7,x1/11,s12,x0/10,pb/e,x4/8,s9,x13/0,pp/m,x6/8,pd/i,x10/0,pg/h,x5/2,s1,x3/4,s8,pc/b,s5,x12/8,pe/a,x11/6,pm/h,x3/12,pf/b,x14/13,pm/o,x10/4,s7,x13/12,s3,x4/5,s14,x7/8,s13,pg/l,x1/14,po/f,x13/8,pg/l,x1/7,pc/f,x2/14,s15,x9/10,pd/p,x1/11,s13,x15/12,s12,x8/6,s7,x10/5,pc/m,x13/12,pg/a,x8/9,s15,x13/1,s12,x7/8,pi/l,x12/14,s6,x8/3,pp/h,s10,x12/2,pk/m,x5/13,s8,x8/15,s14,ph/o,x5/1,pj/m,x6/0,s13,pf/c,x15/12,pk/d,x10/2,s3,pg/o,x5/8,pm/f,x9/0,s9,x12/5,pg/d,x9/11,pl/h,x0/6,pk/i,x8/15,s12,x7/3,s3,x12/4,s10,x5/3,s1,x0/4,s2,x1/15,s2,x8/9,s7,x3/11,pe/a,x15/5,s7,pk/n,x2/14,pe/o,x8/13,s4,x2/11,pg/b,x0/9,pm/h,x4/8,s3,pe/p,x2/1,pm/f,x0/6,s10,pj/a,x5/1,pg/d,x2/6,po/a,x5/0,pc/h,x3/15,pb/g,s9,x4/8,pf/i,x15/10,s3,x11/6,s7,x14/0,s5,x6/11,pj/b,x13/9,s3,x15/5,s9,x3/12,s13,x14/13,s9,pf/k,x1/7,s14,x8/13,s10,x15/4,pe/b,s15,x1/14,s1,pc/i,x8/6,pp/f,x10/13,pn/j,x12/14,s9,x8/0,s14,x13/7,s3,x15/1,s15,x11/12,s8,x1/2,s1,x0/7,s5,x12/6,pi/d,x13/9,pc/g,s6,pi/k,x11/6,pd/h,x8/12,s14,x1/10,pj/b,x5/13,s9,x8/2,pk/n,x7/11,pl/e,x2/12,s10,x7/15,s4,x11/0,s1,x2/7,pb/n,x4/0,s15,x7/14,s6,x8/1,s14,po/k,x5/15,s7,pe/a,x11/8,pl/o,x4/3,pj/e,s13,x11/1,s10,x4/13,pa/d,x8/3,s12,x14/15,s7,x1/5,pc/b,s15,x9/4,s9,x8/11,s1,x10/5,pd/p,s2,ph/o,x2/4,s5,x13/11,s14,x4/3,pb/n,x7/12,s14,x15/11,s13,x7/0,s3,x2/13,pk/o,x8/7,pm/a,x4/3,s10,x6/15,s15,x11/4,s4,x5/2,pk/l,x10/8,pa/f,x12/3,pd/i,x5/7,s11,x8/15,s13,x13/14,pe/p,x9/3,s1,x6/7,pd/j,x14/4,pn/e,x12/11,ph/c,x0/15,s13,pk/o,x11/10,pa/e,x12/13,s10,x10/2,pg/l,x15/1,s13,x10/13,pd/c,x0/11,s3,x5/13,pb/f,x2/15,s1,x11/6,s12,x2/14,s8,x13/6,pc/d,s15,x11/0,s1,x10/2,pf/b,x1/6,s10,x15/12,pe/j,x6/4,s1,pf/l,x13/2,pj/b,x0/14,s13,x10/5,s8,x15/0,s12,x7/13,pg/c,x14/15,pl/n,x5/7,s3,x12/9,s3,x3/15,pb/m,x12/6,s4,x15/11,s3,pl/j,s2,x2/7,pb/d,s14,x9/4,pp/m,x5/6,pj/h,s8,x2/4,s14,x1/8,s7,x10/3,pe/d,x15/14,s2,x4/1,s14,x14/11,pc/g,x7/4,s4,x14/15,pa/h,x12/9,pe/j,x8/4,pf/l,x13/7,s14,x9/6,s8,x10/13,s9,x15/7,s1,x6/9,pb/n,x0/11,s3,x6/14,s6,x5/7,s7,x1/10,pi/f,s12,x5/3,s6,x2/1,pa/l,x4/10,s3,x12/2,s2,x0/10,pp/f,x3/9,pm/h,x11/14,pk/n,x15/8,pg/h,s1,x6/11,s10,x2/10,s15,x4/7,pp/e,x5/10,pb/m,x7/2,s11,x13/3,pj/a,x5/8,pm/e,x7/1,s2,x8/3,pa/f,s9,x6/2,s3,x5/12,pc/l,x6/0,s1,x10/12,pi/m,x3/4,s3,pc/h,x14/10,pe/a,x7/5,s6,x13/2,s5,x14/15,pj/g,x9/13,s2,x4/11,s14,x15/0,s8,x1/8,s6,x10/6,pa/c,x4/3,s13,pm/b,x12/13,s3,x14/9,s9,x15/2,s10,x9/13,s10,x10/14,s8,x13/2,s10,x0/5,pe/g,x9/3,ph/p,x15/2,pl/k,x7/6,pb/i,x0/15,po/e,x4/6,pj/f,s4,x15/2,pk/e,x9/11,s7,x13/12,pg/p,x11/3,pc/m,x5/14,pf/l,x13/11,pg/a,x0/10,pm/o,x5/15,s12,x1/6,s5,x12/4,pg/d,x15/1,pc/e,x11/4,s14,x3/2,s9,x13/10,s6,pd/i,x9/2,s8,x8/12,ph/p,x7/3,s8,pn/o,x6/14,pd/e,x15/0,s2,x7/1,s8,x14/4,s3,x7/15,s4,x9/8,pm/k,x7/5,s5,x13/8,pd/o,x4/10,pf/i,x9/14,s6,x11/13,s5,x2/5,pk/o,s1,pi/a,x7/11,s5,x6/9,s12,x7/4,s1,x10/13,s1,x0/11,s11,x13/14,s2,x2/15,pm/l,x6/12,pk/p,x14/1,po/e,x7/15,pb/a,x3/11,pj/d,x6/1,s9,x8/10,s4,x2/7,pk/n,x5/4,s3,x12/7,s6,x13/4,s6,x3/2,s8,x11/13,s4,x7/4,pe/h,x1/6,s1,x4/15,s11,x1/13,pb/p,x7/15,s15,x5/9,ph/e,x6/10,s14,x1/5,s15,x6/11,pm/i,x7/14,s3,x12/3,s12,x9/13,s7,x15/2,s8,x7/12,s8,x6/0,s4,pj/g,x10/3,s5,x5/14,s2,x0/8,pk/b,s10,x4/13,s13,x6/0,pg/c,x7/9,s11,pd/f,x11/0,pk/j,x1/12,s11,x6/7,s10,x9/0,pb/d,x4/14,s5,x10/5,pn/f,x2/3,s10,pc/j,s2,x14/15,pb/g,x12/7,s7,x11/6,s8,x14/15,s3,x13/7,s9,x15/0,pl/k,x3/10,s14,x8/11,s1,x3/1,s14,x10/9,pp/o,x2/4,pk/a,x11/14,s14,x12/3,s8,x2/8,s3,x11/7,s4,x15/12,s14,x3/7,s13,x15/9,ph/i,x2/11,s8,pd/c,x0/6,s11,po/l,x11/15,ph/k,x14/13,pm/n,x6/10,s8,x7/5,pf/p,x2/12,pe/i,x11/8,pl/a,x12/13,s8,x14/8,s9,x3/1,s7,x15/10,s12,x2/13,pe/b,x1/5,s14,x9/4,pm/p,s4,x11/12,pb/f,s5,pk/c,x6/5,pi/b,s14,x0/3,s13,x2/15,s5,x9/6,s4,x2/11,s12,x9/6,s10,x13/11,s15,x12/2,s6,x9/11,s10,x8/7,s14,x0/14,pg/f,x15/1,s2,pb/h,x4/12,pl/k,x5/6,s4,pj/i,x7/13,s5,x14/0,s11,x1/15,pa/f,s5,x6/14,s14,x15/2,s8,x5/0,pd/h,x1/13,pm/f,x3/5,s11,x11/6,pp/n,x15/0,s2,pi/f,x9/2,s2,x12/0,s13,x2/13,pn/k,s11,pp/a,x10/14,s10,x3/0,s7,x10/13,s11,x15/2,pj/m,x13/0,s14,x4/6,s5,x9/13,s12,po/n,s2,x8/3,pf/e,x15/2,s10,pc/o,x8/0,pj/h,x6/15,s14,x10/1,pd/p,s3,x13/12,ph/b,s9,pf/n,x7/2,s7,pg/d,x13/6,pc/k,x14/10,s12,x8/0,s2,x12/1,s9,x4/8,s15,x7/10,pj/p,x5/0,s4,x14/11,s12,x5/0,s12,x10/6,pe/a,x15/0,pd/h,x7/1,pf/n,x5/2,s12,x9/12,po/l,s5,x7/5,s5,x4/2,pm/i,x5/6,s6,x8/9,pk/d,x11/5,s7,x4/1,s4,x11/13,s1,x15/7,s3,x9/11,s14,x13/3,pi/a,s3,x1/4,s6,x11/3,pj/e,x1/7,pi/h,x5/4,po/e,x6/12,s12,x3/9,s6,x10/8,s13,x3/15,pc/b,s13,x11/8,s14,x6/12,s14,x7/9,s11,x1/8,s4,x10/3,pe/k,x6/1,pj/l,x5/15,pi/e,s5,x8/0,s1,x1/3,s14,x13/0,s9,x5/2,s5,x3/11,pg/o,x5/10,pe/a,x11/14,pj/l,x15/8,s1,x12/13,s3,pc/g,x5/11,pb/p,x1/12,pf/o,x7/11,s4,pl/h,x10/0,s6,x3/12,pi/e,x7/15,pp/b,x12/6,s8,x5/11,s5,x6/7,pe/l,s7,x8/2,pd/c,x15/5,pm/e,x13/0,s1,x14/8,s6,x6/3,s15,x5/12,pk/f,x3/4,s11,x14/8,pg/a,x6/1,s7,x12/11,s12,x1/10,s5,x12/8,s8,x14/4,s10,pf/c,x1/10,s7,x0/12,pj/n,s11,x13/15,s9,x3/9,po/a,x7/8,pk/d,x10/0,s13,pl/n,x3/14,po/d,x11/2,s7,pc/i,x13/1,s13,x6/12,pa/b,x8/1,pd/k,s11,x12/0,s1,po/n,x14/15,s11,x8/4,s2,pm/c,x15/7,pg/l,x3/1,pp/j,x11/5,pn/l,x6/4,s6,x12/9,s10,x14/10,pa/e,x4/13,s8,x12/2,pj/l,x14/6,s10,pe/d,x12/2,s11,x8/15,pj/h,x0/13,pn/m,s4,x7/2,s10,x12/11,ph/g,x14/15,pj/m,x10/2,s9,x7/14,pp/g,x10/13,s7,x12/3,s15,x15/5,s1,x3/12,s12,x9/13,pf/o,x14/7,s13,x6/1,s2,x10/0,s10,x4/15,pl/g,x1/6,pm/j,x8/15,pa/f,x14/5,po/l,x10/12,s4,x1/14,s12,x3/6,pa/h,x11/14,s9,x8/4,s4,pc/m,x15/10,s6,ph/b,x13/9,s5,x14/0,s6,x3/6,s2,pk/n,x15/8,s7,x4/13,s1,x14/0,pp/i,x6/12,s4,x10/11,s5,pk/e,x7/14,s11,x6/15,s9,pa/b,x9/7,s13,x4/5,s1,x8/11,pe/d,x10/4,s15,x9/6,pl/p,x4/7,s3,x9/14,s7,x8/10,s12,x11/14,s1,x12/7,pi/f,x13/9,pm/h,x7/1,s10,x5/15,pf/l,x10/4,s7,pc/b,x5/0,pf/o,x13/14,pk/d,x10/5,pc/m,x2/12,pn/o,s6,x4/1,pg/h,x0/3,s11,x2/8,s10,x12/1,pm/j,x15/2,s9,x1/14,pk/g,x7/5,pm/a,x14/13,s9,x8/6,s13,x13/14,s11,x3/7,po/d,x14/5,s4,x11/4,pi/j,x8/10,ph/a,s14,x3/1,s9,x5/4,pb/k,x10/15,s13,x5/12,s9,x8/10,po/f,x1/9,pn/g,x8/15,s11,x7/9,s13,x4/2,s12,x14/11,ph/o,x13/10,pe/p,x15/3,pf/i,x7/1,ph/g,x13/9,pp/f,x7/15,pe/o,x8/10,s15,x13/7,pl/c,x9/14,s9,x12/0,pa/b,s7,x1/6,s7,x5/8,s8,pn/o,x4/3,pp/m,x7/1,pk/d,x11/0,s11,x15/4,pi/e,x13/5,s3,x14/4,pg/l,x1/7,s10,x9/8,s13,x3/11,po/h,x9/15,pi/l,x2/14,s12,x12/4,ph/e,x7/10,s15,x1/15,s8,x10/13,pg/p,x7/0,pb/i,x8/14,s4,x0/11,pn/o,x6/15,pm/c,x13/9,s11,x0/6,s5,x3/4,s12,x15/0,s13,x8/1,s14,pa/d,x13/14,s4,x8/10,pg/h,x1/7,s5,x5/3,s6,x2/15,s11,pj/k,s2,x4/7,pm/p,x14/15,s4,x5/4,pf/c,x3/13,s13,x4/12,s2,x11/9,s14,x15/1,pd/k,x8/6,pp/m,x4/2,s14,x8/1,s15,x15/10,s5,x7/6,s12,x11/15,pj/e,x5/7,pb/a,x0/2,s7,x14/13,pc/k,x11/9,s13,x3/2,pa/i,x14/11,s2,x0/1,s9,x14/3,pd/j,x15/12,s9,x11/10,s4,x14/13,s4,x3/12,pg/i,x14/10,s10,x1/9,s1,x12/15,ph/k,x0/8,pj/p,x7/1,s13,x9/6,s14,x12/8,pk/f,x6/1,s12,x8/2,pj/o,x9/13,s6,x1/8,s12,x9/14,ph/i,x15/8,s5,x0/3,pm/k,x6/14,s7,x4/2,pg/d,x14/5,s13,x6/1,s9,x3/5,s12,pn/j,x6/14,s13,x12/0,s13,x1/3,s11,x0/6,po/l,s8,x9/2,pj/e,x3/1,s8,pa/f,x0/8,s8,pc/h,x7/9,s4,x0/14,pd/l,x9/6,s12,x13/12,pi/p,x2/6,s11,x11/9,s14,x2/4,s15,x12/14,s14,x3/7,pb/d,x12/0,s6,x9/10,s11,x4/8,pp/i,x11/7,pj/g,x13/8,s1,x6/11,s12,x15/9,s2,pp/f,s3,x14/5,s6,x7/8,s8,x5/9,s5,x10/11,pg/c,x14/13,s5,x6/0,s12,x9/12,s8,x5/3,ph/i,x7/2,s14,x9/0,s9,x7/10,pg/l,x11/3,pd/o,x4/13,s7,pn/k,x2/7,s10,x3/9,ph/a,x14/8,pe/n,x12/2,s7,x13/14,po/k,x9/11,pj/d,x8/1,s10,x3/15,pc/k,x6/4,s9,x5/0,s11,x3/9,s11,x14/13,s11,x2/0,pj/i,x1/14,pa/c,x11/13,s11,x5/0,s8,x2/8,pf/e,x15/14,pc/j,x1/7,pm/i,x11/5,s9,x13/1,s6,x15/9,pk/g,s7,x5/0,pf/p,x14/9,s1,x1/11,pe/h,x4/9,pd/m,x14/2,s4,x1/7,s4,x15/4,s2,ph/l,x14/3,s5,pi/d,x9/12,s8,x4/2,pb/f,x0/1,s15,pd/a,x2/9,s5,x14/7,s2,x5/1,s6,x7/9,po/i,x6/10,s11,x15/4,s5,x14/9,s4,x1/7,pf/b,x3/2,pd/j,x15/5,s3,x13/7,s8,x1/9,pe/p,x2/6,s14,x9/15,pc/h,x2/14,s13,x3/1,pd/f,s13,x0/5,pl/i,x13/14,s1,x8/4,s3,pf/j,s1,x12/11,pn/e,x3/10,s12,x0/13,s14,x1/8,s13,x2/5,s12,x9/14,s14,x11/8,s14,x6/5,pb/o,x14/12,s10,x15/8,s3,x1/2,pj/m,x3/10,s4,x0/6,pd/a,x3/7,pp/m,x9/15,pa/j,x8/14,po/n,x2/13,pg/f,x0/9,s1,pa/n,x7/1,s6,x3/13,s15,x10/2,s6,x4/0,pk/d,x9/13,s14,x5/11,s4,x8/2,s13,x12/11,s7,x0/8,s15,x13/1,s5,x10/15,s8,pa/p,x4/13,s11,x7/10,po/c,x13/3,pe/n,x10/7,s9,x6/13,s2,x9/0,pj/o,x11/12,pe/b,x13/9,s6,x2/6,pd/h,x14/12,s14,pk/o,x13/7,pj/c,x15/4,s1,x0/2,pb/p,x12/1,s3,x15/4,pd/n,x0/10,s10,x6/13,po/f,x2/9,pm/j,s2,x15/13,s7,x12/14,pn/i,x3/11,s8,x1/5,s5,x0/2,s6,x9/1,s12,x8/10,s2,x5/15,pb/a,x12/14,s7,x4/0,s13,x10/11,pe/j,x9/15,s13,x10/14,s15,x1/2,pb/k,x8/3,s10,x11/12,s13,x3/0,pi/p,x10/8,pe/j,x3/5,s8,x1/8,s3,ph/g,x11/6,s12,pa/n,x15/10,s6,pe/p,x11/9,s7,x5/13,s8,x4/0,s4,x6/14,s6,x2/10,s10,x0/5,pl/g,x3/13,s14,x12/7,s4,x15/1,pf/b,s15,x10/4,s7,x13/7,s11,x2/5,pa/j,x13/1,s9,x5/7,s2,x0/8,s9,x11/12,pf/i,s9,x10/8,pe/g,x5/3,s10,x8/12,pf/h,x2/10,s15,x6/4,pc/k,x7/14,pm/o,x5/11,s8,x10/1,pp/j,x9/5,s13,x2/14,s5,x4/1,s9,x12/10,s14,pf/n,x11/1,pl/c,x14/5,s11,x3/6,pg/f,s14,x5/4,s5,x2/1,s5,x11/14,pl/a,x0/6,s5,x9/4,pg/n,x1/6,s6,x13/2,s1,x3/7,pj/k,x6/13,s3,x1/3,s4,x7/8,s1,x12/15,s15,x7/1,pa/d,x3/8,pn/o,x15/1,pi/b,x10/6,s1,pg/a,x14/15,s5,x11/5,s2,x15/1,pd/f,x9/11,s9,x1/5,s8,x9/12,pa/h,x1/0,s11,x5/7,pe/j,x3/13,pl/f,x1/8,s5,x11/14,s14,x9/7,s8,x13/11,pe/k,x10/4,ph/m,x13/5,s3,x0/14,s11,x12/7,s13,x9/3,s2,pd/b,x15/8,s12,x4/5,s4,x2/14,pp/n,x3/8,pi/l,x0/7,s4,x15/6,s10,x11/9,s9,x6/5,s7,x1/7,ph/d,x10/12,s4,x3/14,s2,x15/1,s6,x10/4,pc/l,x6/0,s5,x9/12,s4,pa/p,x2/8,pf/o,x10/1,pp/g,x3/2,pl/a,s13,x6/13,s15,x2/1,s14,x10/5,s11,x0/2,pf/j,s12,x4/11,s8,x14/2,s6,x6/10,s13,x15/13,s1,x10/0,s15,x11/12,s12,x10/14,pi/o,s9,x4/8,ph/a,x1/2,pe/m,x5/14,pj/f,x4/12,pi/h,x15/6,s8,x12/14,s5,x1/2,pb/o,x7/8,s7,pk/e,x12/10,s9,x3/15,s12,x0/6,s5,x3/14,s1,pn/m,s15,x7/5,ph/d,x11/4,s6,x5/15,pp/c,x2/8,pd/i,x9/13,pf/a,x2/4,s5,x12/0,s2,x10/1,s9,x15/13,s5,x8/11,pb/c,x9/1,s9,x7/12,s2,x13/4,pd/n,x11/8,s12,x2/10,pe/g,s10,x4/8,s3,x14/12,s3,x9/6,s5,pa/b,x8/1,s3,x2/3,s12,x11/8,s3,x9/7,s12,x5/13,s5,x8/10,pp/c,x13/0,pk/h,x10/4,pe/n,x0/9,pa/i,x2/5,pd/b,x0/7,pi/p,x13/11,s6,x7/0,ph/n,x8/4,s8,x12/0,s15,x13/1,s9,x8/2,pj/m,x5/15,s15,x13/4,s8,x10/6,s9,pd/g,x1/3,s11,pn/i,x11/9,pj/f,x14/0,pi/n,x5/4,pb/h,x14/13,pm/j,x2/7,s8,x8/15,s3,x0/12,s3,x1/3,s8,x12/7,s1,x14/15,s5,x8/9,pn/a,x10/13,s9,pp/c,x15/2,s8,x8/14,ph/k,s8,x3/4,s1,x2/12,s3,pn/c,x11/0,s10,x2/9,pl/k,x4/7,pg/i,x1/11,s7,x6/3,s11,x13/9,pl/f,x4/3,pc/p,x5/0,s14,x11/4,s10,ph/j,x6/14,s14,x10/1,pf/o,x7/5,s9,x15/12,s11,x8/11,pp/m,x9/3,pg/a,x7/5,ph/e,x2/12,pm/l,x3/9,s13,x8/4,s7,x2/13,s13,x4/14,pe/g,s4,x12/6,po/l,x13/7,pj/c,x11/1,s1,x0/7,pn/l,x10/14,pd/g,x4/12,s2,x8/14,pk/c,x7/12,s1,x1/3,pp/j,x13/9,s3,x12/6,s10,x13/10,s4,x11/5,pn/b,x3/10,s1,x1/9,pc/g,x15/5,s7,x8/4,pe/m,x0/13,s11,x8/1,s8,x5/2,s3,x11/4,pa/l,x10/7,s4,x6/4,po/g,x13/3,pj/b,x2/0,s9,x8/1,pi/k,x3/7,s14,po/p,x8/2,pm/k,x0/14,pe/i,x11/10,pl/f,x0/4,s10,pi/d,x9/6,pc/j,x12/13,s2,x6/0,s12,x7/14,pg/e,x5/9,pk/f,x12/1,s1,x7/4,s9,x0/15,s14,x10/7,s8,x1/11,s10,x2/13,pm/a,s8,po/h,s14,x7/15,pl/i,x10/2,s10,x13/9,s2,pb/e,s1,x7/8,s5,x15/14,pd/a,x7/0,s9,x14/15,s12,x5/0,pi/c,x2/4,pd/l,x8/1,s13,x7/0,s15,x4/3,ph/n,x8/13,pm/o,x1/11,s12,pn/c,x9/0,s2,x8/15,pa/p,x10/2,pm/l,x1/9,pi/f,x3/5,s1,x6/10,s2,pk/m,x5/0,s10,x10/2,s4,pc/g,s7,pk/l,x14/4,s9,x8/5,s6,x13/10,s14,x5/14,s9,x4/11,s7,x0/6,s10,x12/2,s13,x7/6,s7,x12/3,pc/d,s2,pm/j,x6/0,pd/o,x13/7,pn/k,s9,x3/12,ph/e,x9/8,s3,x7/3,s4,x12/4,pg/o,x6/13,pb/d,x15/1,po/c,s14,x6/8,s13,x12/7,pb/f,x8/1,s5,x12/4,pc/a,x6/13,s3,x0/1,s9,x6/15,s7,pm/e,x1/9,s11,x15/4,pk/g,s9,x3/6,s12,x7/14,ph/p,x11/4,s15,pk/e,x7/10,pj/o,x13/9,s11,x7/5,pi/l,x14/15,s1,x8/10,s1,x11/4,s2,x8/12,pe/g,x10/2,pm/l,x4/0,s9,x6/3,pb/f,x10/5,s6,x14/8,s12,x7/12,s15,x0/15,pc/e,x9/3,s9,x7/4,pd/h,x2/11,pp/b,x1/7,s11,x13/11,pk/e,s6,x8/10,s10,x1/2,s3,x12/3,s7,pd/g,x2/0,pa/e,x8/3,s8,x14/9,s2,pk/d,x11/6,po/i,s6,pf/m,x5/0,pn/g,x7/3,pc/o,x11/4,s13,x14/3,s8,x2/15,s14,x5/4,s4,x12/0,s7,x15/11,s10,x12/9,pe/g,x15/5,s4,x7/6,s7,x11/0,pa/b,x12/4,s8,x15/11,s7,x13/5,s15,x2/3,s6,x0/7,s13,x2/14,s11,x1/12,s4,x4/15,s2,x14/3,s5,x12/7,pn/m,x4/0,s11,x11/9,s6,pi/k,x10/6,s11,x2/11,pg/j,x8/15,s2,x4/13,s8,x3/8,pp/i,x14/4,s4,x11/0,s4,x10/14,s1,x5/2,s14,x9/6,s2,x4/8,s13,x7/9,s11,x8/12,s14,pm/f,x7/2,pn/j,x4/8,s4,x10/6,pk/l,x8/11,s5,x2/15,s13,x4/14,po/n,s2,x9/10,s1,x6/2,pk/g,x15/12,s8,x3/14,pj/h,s12,x9/13,s13,x6/12,s4,x15/9,pa/b,x7/2,s10,x8/10,s4,x0/6,s14,x9/14,s1,x11/13,pg/l,x12/5,s4,x11/9,s8,x14/3,pa/n,x7/5,s7,x14/3,pg/c,x7/1,s8,x3/9,s14,x1/8,pm/l,x12/7,pf/e,x8/9,s6,po/m,x0/11,s10,x1/3,s4,x13/0,s13,x8/5,pi/n,x15/3,pm/j,s4,x4/0,pl/h,x5/2,s3,x13/9,s8,x7/14,s12,x11/15,s15,x3/6,pf/n,x5/7,pl/i,x0/14,s9,po/e,x11/9,s12,x12/3,pm/c,s6,x1/6,s4,x12/5,s1,pf/j,x2/6,pb/n,x15/0,s14,x10/7,s15,x15/4,pl/f,x2/10,s2,x3/11,s8,x9/1,pm/k,x4/6,pb/j,x9/7,s1,x11/0,pf/g,x9/14,s4,x13/3,pk/l,x9/12,s13,x1/8,ph/a,x0/4,s10,x12/13,s6,x10/9,s4,x15/6,s13,x2/8,s3,x11/7,po/g,x4/8,s4,x6/3,pn/m,x5/15,pb/g,x10/4,ph/n,x3/11,pf/e,x2/12,pn/p,x9/6,s8,x8/5,s11,x7/2,s1,x15/6,s9,pd/c,x5/2,s2,x7/3,pk/j,x14/6,s4,x11/3,s9,x5/13,pm/h,x0/6,pl/b,x5/2,pa/e,x3/4,pm/d,x6/15,pe/l,x0/3,pi/n,x11/2,pl/j,s7,x0/12,pk/c,x4/13,s10,x5/6,s12,x12/15,s3,x6/10,s13,x1/8,s13,x12/4,s15,x0/10,pb/o,x1/3,s15,x14/15,pe/j,x10/2,s1,x6/15,pp/f,x3/7,s6,x10/13,s3,x5/2,s12,x13/6,s9,x10/14,s13,x5/1,s8,x11/9,s13,x5/14,s7,x0/15,s11,x1/8,s11,x11/9,s13,x0/4,pb/g,x8/7,pp/l,s7,x4/15,s11,x12/1,pf/k,x6/9,ph/i,s4,x0/4,s14,x14/9,s13,x2/10,s13,x1/4,pe/p,x10/14,s2,x7/12,pg/b,x2/3,s6,x8/9,s14,ph/n,x1/12,s13,x15/9,pi/d,x12/6,s9,x7/10,pn/l,x2/11,s13,x10/15,s9,x3/7,pj/g,x1/8,pd/b,x2/4,s10,x5/6,s12,x8/7,s10,x15/13,pn/k,x14/2,pc/a,x8/6,pk/f,x11/4,pc/a,x0/1,pj/l,x10/3,s9,x14/12,s2,x9/2,pn/d,x10/11,s1,x9/8,s6,x13/0,s10,x1/3,s8,x9/8,s3,x11/14,pl/h,x5/1,pn/p,x14/6,s6,x11/4,s15,x3/2,s13,x10/6,s9,x4/1,s3,x15/11,pj/k,s12,x14/1,pm/i,x2/11,pb/o,x10/7,pd/p,x6/11,s8,x12/0,s2,x6/11,s6,x1/10,s7,x12/9,po/l,x14/2,ph/d,x15/9,pl/p,s5,x6/8,s5,x10/13,s5,x12/9,s15,x4/1,s11,x7/11,s9,x3/15,pm/i,x10/5,pd/l,x8/13,pp/n,x0/3,s3,x10/1,pf/e,x5/13,s3,x4/12,s12,x3/11,s4,x6/10,pb/o,x2/8,s2,pf/n,x0/10,s11,x8/11,s10,x14/15,ph/g,x8/0,s13,x11/1,s15,x14/3,pi/l,x11/15,pk/d,x8/12,pm/i,s5,x4/7,s14,x2/9,pc/a,x8/4,s10,x5/12,po/h,x4/9,s8,pk/e,x13/1,s5,x4/14,pi/m,s9,pb/k,x7/12,s6,x2/14,s14,x6/0,s5,x7/8,s15,x15/4,s2,x5/8,s5,x6/0,s7,x8/3,s14,x4/12,pd/m,x7/15,s13,x9/11,s3,x3/12,pp/l,x8/0,s11,x4/3,s5,x15/8,pn/e,x6/2,pp/h,x9/11,s7,x1/15,s8,x10/5,s9,x0/9,s4,x8/3,pd/f,x12/6,pm/o,s3,x10/13,pc/e,x9/14,s12,x3/6,s8,x13/2,s15,x12/10,s9,x9/1,ph/a,s2,x0/4,s4,x9/5,s9,x3/12,s15,x5/9,s13,x14/15,s2,x4/5,pe/m,s10,x11/6,ph/f,x12/14,pa/l,x1/11,s15,x14/7,s3,x10/15,s2,x6/5,s6,x9/2,s10,x13/1,pb/h,x4/10,pe/m,x15/2,pk/h,x4/1,s13,x12/0,pl/o,x13/11,pb/d,x6/1,ph/e,s8,x13/9,pp/k,s7,x10/14,s8,x12/11,pl/h,x9/10,s12,x11/6,pp/i,x8/10,s15,x0/1,pd/c,x10/5,ph/a,s13,x1/15,s2,x7/5,pg/p,x6/15,pb/l,x1/2,s4,x12/8,s7,x5/2,s8,x10/15,s2,x9/1,pj/p,x7/8,s15,x14/9,s10,x6/11,s14,po/f,x7/15,s13,x12/3,s12,x2/13,s2,x10/5,pl/a,x15/9,s5,x12/1,s2,pf/j,s4,x7/4,s3,x2/15,s14,x9/12,pi/c,x3/8,pl/b,s10,pd/a,x10/12,s8,x14/11,pp/b,x3/0,pc/o,x6/10,s5,x8/0,s7,x7/9,pj/l,x2/8,pi/e,x3/6,s8,x7/1,po/m,x8/4,s9,x10/7,pk/c,x1/9,s7,x2/0,s13,x11/4,pd/g,x2/9,ph/j,x3/0,s7,x10/9,s15,x8/2,pm/o,x0/4,s8,x8/7,s10,x4/13,s3,pk/j,x12/3,s13,x7/0,po/d,s7,x9/3,pp/n,s5,x0/1,s1,x3/5,s7,x15/11,s6,x8/1,pb/f,x6/2,pg/h,s9,x10/14,s7,x15/5,pd/f,x4/14,pc/g,x2/7,pd/n,x14/0,po/h,x7/5,s5,x15/10,pf/e,x5/4,s4,x10/0,s12,x15/3,s1,x14/8,s6,x0/13,s13,x5/3,s3,pl/c,x13/6,pn/a,x1/2,pi/p,x7/3,s7,x1/10,pe/n,x4/15,s9,x9/10,s8,ph/b,x1/8,pj/f,s11,x13/6,s8,x8/2,s13,pe/k,x7/0,pc/d,x13/6,s11,x9/1,pg/f,x14/0,s13,pp/i,x13/4,pj/a,x8/9,s5,x12/1,s7,x8/14,pf/h,x5/9,pi/g,x15/13,s1,x5/14,s5,ph/b,x3/10,pm/p,x13/9,s12,x15/0,pf/n,x13/2,pd/a,x8/15,pp/f,x6/9,s15,x14/1,pm/e,x7/5,s10,x10/4,pa/p,s10,x13/8,s8,x3/5,s7,x14/10,s6,x3/8,pe/o,x14/1,s2,x3/9,pi/m,s10,x11/2,s5,x6/7,s9,x8/15,s11,x14/10,pp/b,s2,x3/11,s8,x1/5,s13,x9/12,s9,x5/10,s13,x14/0,pk/l,x2/13,s2,x7/11,s7,x4/10,s11,x8/6,s15,x1/10,pc/d,x4/7,pi/o,s9,x9/2,s2,x10/1,pj/d,x7/11,po/l,x0/1,pb/m,x13/11,s4,x10/4,s2,x0/15,s10,x12/3,s1,x4/1,s13,x6/9,s13,x7/10,s13,x4/9,s1,x14/1,s15,x6/15,s1,x2/10,s10,x9/15,pa/k,x12/0,pl/b,x15/13,pc/m,x14/3,s3,x7/2,pp/e,x8/1,s12,x6/3,pf/d,x9/15,s7,x0/2,pm/p,s7,x3/6,s13,x5/8,s4,x7/1,s7,x10/3,s12,x13/5,s14,x1/9,s1,x14/11,pk/c,s12,pa/m,s8,x2/0,s14,x1/11,s2,x3/7,s5,x15/6,s4,x5/2,s11,x14/11,s3,x8/5,s9,x7/2,s4,x14/13,pe/d,s10,x5/3,s14,x6/10,s2,x15/2,s3,x12/11,pm/n,x3/15,pg/b,x6/1,s10,x13/0,s4,x1/3,pd/a,x7/11,pk/n,x3/2,s12,x15/6,pp/m,x9/7,s6,x10/3,s9,x4/6,s2,x1/0,s13,x15/2,s13,x6/5,s12,x12/9,ph/k,x7/11,pd/p,x9/5,pb/m,x2/12,pn/h,x7/3,pa/f,x10/12,s9,x4/9,pc/n,x15/11,pa/d,x10/0,s1,x1/12,pi/e,x15/5,po/g,x12/8,s9,x7/5,s2,x3/0,s7,x6/15,s13,x3/1,pj/p,x12/0,pn/a,x8/7,s6,x11/14,po/b,x13/6,s12,x9/10,pj/h,s2,pn/a,x11/15,s6,x5/1,s8,x7/11,s5,pm/j,x10/2,pf/n,x12/6,s10,x5/15,pi/b,x9/4,pl/n,x13/15,s1,ph/j,x2/12,s10,x5/9,s10,x12/10,s13,x11/8,s8,x7/3,s9,x12/2,pn/b,x1/6,s5,x10/2,s4,x5/1,s13,x4/8,s4,x13/1,s2,x12/0,s1,x6/1,s13,x10/12,pd/m,x5/15,s3,x12/1,s1,x2/11,s6,x0/13,s8,x9/7,s4,x11/1,po/b,x8/13,pj/d,x5/6,s7,x15/12,pa/n,x14/4,ph/j,x9/8,pb/i,x2/6,s3,x9/3,pa/n,x6/0,pi/j,x15/3,pe/h,x9/1,pa/f,x5/12,s3,x7/9,pc/i,x10/12,ph/b,x9/14,s11,pd/a,x4/7,ph/c,s10,x0/9,s14,x10/4,s6,x7/15,pl/f,x14/1,s3,x0/7,pm/j,x8/10,s8,pf/k,x2/9,s9,x7/3,pn/l,x14/13,s4,x6/2,s8,x8/12,s5,x10/4,ph/f,x2/13,s14,x5/4,s15,x13/14,s6,pk/d,x2/15,pn/b,x13/3,po/i,x0/10,pc/d,x6/15,pn/k,x9/8,pe/f,s5,x13/0,s4,pa/d,x7/11,s7,x4/1,s1,x9/11,s11,x13/12,pm/g,x6/2,s2,x3/5,pp/e,x13/10,s12,x5/9,pn/f,x3/10,s2,x4/15,s11,pe/k,x5/10,pn/o,s2,x6/8,s2,x2/1,s11,x14/3,s12,x6/10,s2,x12/8,pl/j,x1/13,pm/p,s13,pc/j,x5/10,s11,x15/1,pg/b,x6/13,s6,x5/0,s2,x3/14,pa/n,x10/2,pi/c,x7/13,pa/d,x4/0,pm/f,x3/13,po/i,x8/11,pf/c,x1/9,pd/e,x11/13,s3,x15/1,pk/i,x14/7,pp/a,x11/15,s13,x2/7,s1,x10/11,pi/h,x0/15,pk/g,x11/13,pe/f,x9/8,pm/p,x4/13,po/n,x9/10,pf/j,x8/14,s14,x0/2,s3,x3/11,s2,x12/7,s15,x5/8,s15,x10/2,s7,x8/15,pg/d,x13/14,pa/m,x0/1,s10,x8/15,pk/i,x14/6,s14,x4/2,pj/g,x11/12,pa/m,s13,pg/f,x5/4,po/l,x13/8,ph/a,x0/6,s2,x10/3,s12,x7/11,po/k,x15/12,s9,x14/5,s8,x7/3,s12,x12/13,s11,x7/15,ph/p,x2/0,s14,x4/9,s14,x1/5,s7,x14/3,pi/f,x4/12,pg/h,x2/5,s10,x15/12,pp/f,x4/13,s14,x10/9,s11,x2/6,s6,x1/14,pn/b,x13/9,pl/k,s14,x11/15,pf/g,x14/5,s11,x2/10,s6,x7/8,s9,x10/2,s12,x9/11,pb/d,x7/3,pc/n,x10/6,s11,x8/11,s3,x12/5,s1,x15/13,pg/p,x14/1,pl/d,x4/13,s2,x14/7,s11,x3/12,s2,x13/8,pa/f,x12/14,s10,x15/3,s6,x14/2,s5,x5/15,s7,x14/1,pl/c,x4/12,pd/o,x0/11,pn/i,x10/15,s15,x14/12,s14,x3/1,pl/k,s15,x13/5,s6,x14/11,s15,x3/0,pi/a,s2,x11/9,po/e,x13/2,pk/h,x11/6,s14,pj/m,x13/12,s1,x11/6,s3,x1/12,s10,x8/9,pa/e,x12/13,pf/c,s6,x10/6,pp/j,x5/14,s14,x0/1,s13,x13/3,s13,x12/8,s5,x0/5,s1,pf/g,x7/6,s5,x3/11,s5,x5/13,s5,x15/0,s13,x8/13,s14,x15/9,s13,x3/10,s4,x9/1,s15,x14/11,pm/a,x7/5,pb/k,x11/3,s6,x12/4,s5,x13/3,pn/c,x1/12,pj/o,x10/6,s8,x2/7,s4,x10/9,s2,x11/12,s14,x13/8,s6,x2/11,s15,x5/6,s4,x12/9,pn/d,x6/7,s11,x2/5,ph/g,x1/12,s11,pb/o,x7/11,pi/h,x3/4,s12,pm/n,x1/10,s11,x4/9,pg/i,x15/2,pf/p,x8/13,ph/e,x7/15,pf/j,x8/13,s3,x15/12,s15,x0/11,s2,x7/8,pc/i,x15/14,s10,x3/13,s7,x7/15,s11,x13/1,pa/j,x15/7,po/l,x9/5,s2,x7/6,pa/b,x0/12,pn/h,s1,x14/4,s13,x15/10,pk/p,x2/1,s8,x8/4,s5,x13/1,pm/b,x11/15,pc/k,x13/3,s5,x10/9,pl/i,x11/6,s9,x2/5,ph/c,x0/9,s8,x1/5,s4,x12/10,s4,x8/6,s6,x4/0,s9,x1/15,pa/b,x11/9,s12,x1/7,s6,x10/13,s3,x9/0,s7,x1/7,s2,x4/9,s2,x14/8,ph/o,x13/7,pd/g,s9,x11/0,s9,x3/2,pk/c,x13/7,s15,x11/8,pf/o,x7/15,s14,x10/0,pk/i,x2/15,pc/d,x4/0,s9,x9/5,s10,x7/13,s1,x5/15,s11,x14/4,s13,x6/9,pn/f,s3,x10/12,s15,x2/4,s14,x12/3,s15,x5/0,pc/k,x4/13,pj/o,x14/3,pe/d,x13/0,s2,x6/8,s12,x1/11,pm/b,s14,x14/10,pl/p,x1/13,s6,x0/8,pb/n,x14/7,s15,x6/2,pi/g,x3/7,ph/a,x2/14,s8,pf/d,x6/5,s3,x0/11,pn/b,x15/2,pf/p,x1/12,pe/g,x13/15,pb/o,x6/2,s7,x1/15,ph/j,s15,x4/11,s7,x5/10,s3,x7/12,pf/i,x11/0,s14,x13/6,s3,x3/9,s2,x12/0,s8,x7/2,s14,x15/6,s6,x12/9,s4,x1/6,s15,x3/15,s1,pk/j,x0/7,pi/d,x3/4,s11,x5/15,pb/p,x0/7,s2,x10/1,s4,x11/0,s13,x10/5,s13,pn/c,x4/14,pj/g,x7/9,s12,x13/11,pb/i,x8/15,s13,x7/12,pd/f,s14,x11/14,pn/k,x9/7,s7,x8/1,s10,x9/4,s4,x2/6,ph/c,x8/5,pi/d,x0/15,s3,x6/5,s6,x11/0,pg/p,x2/5,s1,x12/14,pj/k,x13/5,pm/a,x3/10,pl/f,x1/2,s7,x11/5,pn/k,x10/7,s13,x13/14,s3,x2/0,s5,pd/e,x7/14,s11,x11/4,pa/m,x13/14,s3,x6/1,s7,x14/5,s6,x11/6,pc/p,x3/14,s15,pm/g,x10/6,pb/k,x5/13,s1,x1/11,s6,pg/c,x4/12,s9,x9/0,s7,x7/15,s15,x14/1,pp/j,x9/10,pg/l,x0/2,po/j,x14/3,pn/k,x6/10,s14,x8/1,s3,x0/4,pi/a,x7/11,pj/l,x1/0,s3,x10/6,s5,x1/14,pa/k,x8/7,s1,x3/1,s9,x9/4,s13,x13/2,pn/h,x3/4,s4,x8/6,s14,x9/13,s15,x4/1,s1,x2/12,s3,x11/7,pm/c,x4/14,pb/l,s4,x5/2,s8,x3/4,pm/f,x12/9,pp/g,x8/14,s7,x12/13,pk/l,x6/4,pb/i,x1/13,s10,x3/2,s13,x1/11,pf/k,x12/9,s10,x11/3,s11,x4/9,pp/n,x15/0,pf/o,x1/2,s12,x6/11,s15,x4/9,pd/i,x6/3,s6,x12/7,pj/n,x9/8,s9,x10/2,s5,x12/8,s3,x1/4,s10,x2/7,pb/k,x0/5,s4,x15/10,pn/l,x3/9,s14,x0/2,pp/i,x11/8,s6,x4/13,pg/m,x3/15,s2,x8/9,s9,x12/3,s1,x10/4,pe/i,x9/15,s4,pf/l,x8/2,s10,pa/n,x4/11,pk/b,x1/9,s10,pf/a,x15/2,s15,x12/10,pg/k,x1/11,pl/e,x14/8,pi/a,x11/12,s9,x2/1,s14,x6/7,pc/m,x9/4,ph/n,x15/11,s10,x1/0,pj/e,x5/4,s3,x8/2,s6,x3/11,pm/c,x1/12,pn/l,s12,x10/8,s4,x7/11,pk/h,x15/5,pc/l,x7/10,s5,x9/4,s14,x6/12,po/d,x8/13,pa/c,x6/14,s13,x10/11,s6,x8/7,s4,pb/m,x2/5,pa/g,s12,x7/0,pj/k,x14/11,pg/d,x8/0,s15,x4/13,pc/i,x15/8,s7,pg/a,x1/4,s10,x2/0,s13,x10/13,s6,x1/7,s13,x15/11,pe/o,x0/12,s10,x10/3,s12,x6/9,pl/f,x3/14,pn/e,x12/0,s15,x4/7,s10,x5/13,s11,x6/12,s5,x14/8,s12,x15/13,s13,x1/4,s14,x13/0,s12,x2/8,s11,x15/13,s14,x6/4,s1,x1/7,s1,x11/2,s9,pc/b,x10/1,pg/k,x0/15,pa/h,x5/3,s7,x13/0,s1,x8/6,s11,x2/3,pm/c,x1/14,s6,x10/13,ph/p,x15/12,pd/g,x5/4,s14,x11/13,s8,x14/1,pk/h,x3/13,s7,x9/4,s2,pn/g,x2/13,pl/o,s1,x11/15,s15,x4/6,s1,x9/8,pc/e,x15/11,s12,x8/4,po/d,x1/14,pp/f,x15/5,pi/n,x11/6,pd/o,x14/3,s4,pm/j,s10,x1/5,s9,x14/11,s12,x1/12,s13,x5/4,s1,x11/14,s7,x5/6,s10,x3/8,pp/d,x6/13,s2,pf/o,x10/4,s14,x5/6,pm/l,x13/10,s12,x3/5,pg/j,x11/15,pm/o,x3/7,pn/e,x10/13,pf/c,x8/4,s12,x14/13,s13,x5/12,s6,x1/0,s5,x9/7,pm/i,x1/5,pd/c,s8,x11/2,s3,x0/10,s8,x13/7,s7,x9/11,s8,x12/8,s13,x7/9,s11,x6/10,s14,x9/5,s14,x7/1,s1,pe/b,x12/5,ph/g,x3/7,s9,x6/10,s8,x9/13,pm/l,x12/8,s12,x6/15,s5,x2/3,s4,x0/11,s7,x3/6,pn/k,x2/4,s3,x9/1,s11,x11/6,s3,x9/1,s14,x15/2,s3,x3/11,pe/m,x0/15,po/j,x5/12,pa/d,x7/9,s2,pl/p,x1/2,s6,x14/8,s3,pj/e,x5/9,s1,x8/2,pi/n,s8,x9/13,s4,x7/15,pd/o,x9/6,pi/p,s8,x13/12,pc/h,x0/9,s6,x8/5,pm/i,x4/12,s12,x9/2,s7,x6/14,ph/g,x5/9,pe/f,x15/7,pi/c,x11/6,s12,x13/10,s11,x12/15,pj/g,x14/8,s14,x2/13,s9,x5/0,s11,x4/3,s15,x1/10,pf/m,x12/11,po/e,x10/2,s8,x8/1,s3,x6/10,pc/g,x2/11,s1,x4/7,pj/o,s14,x6/15,s13,pm/f,x4/9,pc/k,x7/8,pd/h,x2/15,pj/l,x10/7,pi/e,x9/11,s4,x2/13,s15,x0/5,s6,x3/8,s12,x11/4,s10,x14/1,pf/n,s15,x10/12,s14,x11/1,pd/m,x12/15,s4,x6/13,pi/n,x2/8,s14,x7/1,s8,x6/15,pc/f,x4/9,s15,x0/2,s9,x14/12,s8,x6/5,s8,x3/2,pb/g,x0/10,s15,x1/11,s2,x6/12,s15,x2/14,pc/d,x0/8,pg/f,x1/3,s10,x10/2,pp/e,x4/7,s14,x6/8,s11,x0/4,pm/n,s11,x10/3,s1,x15/13,pi/h,x12/9,pc/j,x0/5,s5,pl/b,x14/7,s6,x11/8,s14,x4/2,s8,x10/0,pd/i,x7/9,s13,x3/0,pp/e,x5/6,s8,x7/12,ph/d,x2/14,pa/c,x15/0,s12,x9/12,s11,x2/14,pe/p,x10/7,po/n,x13/11,pg/k,x15/12,s9,x2/9,s15,x6/4,s4,x5/10,s13,x4/1,s1,x9/7,pf/c,x1/2,s11,x4/15,s11,x1/8,pe/h,x12/7,s15,x13/1,s7,pp/c,x6/5,pl/e,x10/3,s12,x13/15,s1,x0/1,pi/o,x14/2,s10,x13/1,s15,x7/15,s5,x11/1,s6,x13/10,pl/k,x0/1,pf/d,x7/12,s2,x13/6,s5,x10/1,s10,x6/13,pc/b,x3/0,pn/d,x12/8,pf/j,s11,x0/15,s9,x10/12,pg/n,x3/13,po/k,x14/10,s8,x7/1,pd/i,x10/3,s13,x11/6,s2,x12/0,s4,x8/14,pk/j,x15/10,pi/h,x9/0,s12,x10/12,pc/p,x5/3,pl/m,x0/12,s8,x10/5,pe/g,x7/0,s15,x5/11,pk/d,x6/0,s1,x1/9,pe/m,x5/13,s7,x12/15,pl/j,x10/2,s12,x0/13,s13,x5/3,s4,x0/13,pc/g,x1/6,s1,x13/5,pj/a,x3/15,s8,x10/9,pc/f,x1/7,s5,x11/6,s13,x1/5,s6,x9/2,po/m,x15/6,s3,x0/3,pn/e,x15/6,pp/b,x14/9,s13,x3/12,s3,x8/0,pi/e,s3,x1/13,s13,x5/0,s14,x3/14,s11,x7/4,s10,x2/3,s12,x15/13,s9,x7/5,ph/l,x3/0,pj/n,x1/6,s1,x12/3,pl/b,x0/1,pf/o,x14/15,s12,x13/5,pa/e,x6/1,s13,x12/11,pc/b,x0/1,pi/h,x2/10,pk/l,x5/12,s2,x8/7,s1,x15/5,pf/o,x9/1,pd/l,s4,x5/14,pm/c,x3/9,pa/h,x0/15,po/p,s1,x5/1,s7,x0/14,pi/e,s2,x10/6,s11,x9/12,pg/a,x6/10,s14,x14/11,pd/b,x8/12,s1,x9/13,pg/h,s11,x4/0,s10,x13/10,s3,x15/9,pn/b,x2/0,s2,x13/5,s2,x1/6,s4,x4/12,s6,x1/5,s2,pg/m,x4/13,s1,x14/0,s5,x11/8,s6,x10/12,pe/p,x9/8,s7,x10/3,s7,x6/8,s5,x10/14,pg/a,x3/15,pk/c,x2/7,pa/b,x1/13,s11,pi/c,x11/9,s7,x2/3,s11,x10/4,s15,po/g,x15/7,s5,pc/e,x8/3,s10,x10/14,s2,x1/8,s6,x7/6,s11,x2/0,pm/k,x8/9,s1,x13/10,s7,x3/14,pg/p,s10,x2/8,s6,x1/4,pj/l,x11/12,s8,x1/5,s12,x15/13,s2,x1/3,s4,x13/2,s15,x7/5,s15,pn/c,x14/8,s10,x6/9,s3,x8/7,s3,x0/2,pe/g,x8/13,pj/i,x9/11,s10,x13/12,s6,x6/10,s8,x3/4,po/p,x13/10,pk/l,x4/12,pb/e,x0/5,ph/n,x6/11,s10,x1/14,s3,x8/7,s11,x5/13,s7,x10/9,pd/b,s1,x7/15,pn/f,x8/13,s12,x2/0,po/k,x15/12,s7,x8/10,pl/h,x2/6,s7,pf/m,x5/10,s5,x13/7,s8,x12/8,pg/d,x4/14,pm/c,x0/9,pk/j,x6/5,s11,x14/9,s10,pe/g,x8/1,s13,x3/2,s1,x15/5,s2,x9/6,s5,x4/5,s1,x13/10,pp/j,x15/5,s14,x12/4,s10,x2/1,pf/i,x5/8,s7,x14/9,ph/o,s4,x8/5,s7,pm/n,x14/2,s13,x3/5,s7,x13/8,s14,x10/3,s8,pe/o,s4,x14/1,s9,x3/10,s7,x4/0,s13,x3/1,pn/i,x11/0,pk/f,s7,x15/6,s3,x13/8,s3,ph/c,s5,x11/14,s6,x7/15,s9,x11/12,s10,x0/7,pb/d,x6/5,s14,x4/13,pj/e,x3/11,pc/b,x6/10,pg/m,x7/8,s5,x2/1,s7,x5/10,po/d,s9,x3/14,pk/c,x4/11,pa/e,x5/15,s11,x14/1,pb/i,s2,x0/3,s13,x15/13,s1,x3/0,s9,x2/6,pm/e,x15/4,pi/o,s5,x14/9,pf/b,x2/4,pd/h,x3/8,pc/f,x14/0,pl/a,x8/2,s8,x15/9,s7,x2/1,pi/j,x5/8,s7,x1/12,s4,x4/10,s13,pc/g,s7,x6/7,s11,x10/8,s4,x2/15,pe/l,x0/12,s2,x11/7,s8,x1/13,pm/b,x14/15,s8,x0/4,s8,x1/10,pf/p,x15/6,pi/b,x3/7,s12,x9/12,s7,x4/15,s15,x8/6,s12,x10/11,pa/f,x2/14,s4,x6/4,s13,x14/13,pd/l,s9,x4/2,s1,x8/7,s2,x9/11,pi/b,x2/8,ph/a,x1/9,pg/f,x2/12,s12,x5/8,pd/l,s15,pa/f,x13/3,s7,x6/5,s6,x0/9,s7,x5/13,pi/p,x10/11,pk/o,s5,x8/15,s5,x0/10,pp/l,x11/9,pf/i,x8/14,po/d,x15/13,s1,x1/7,pb/i,x11/5,pl/f,s14,x12/15,s4,x11/0,s1,x15/14,s1,x4/0,s11,x8/9,s1,x6/1,s11,x5/8,pm/i,x9/7,ph/d,s13,x8/4,pp/n,x1/12,pj/b,x3/9,s1,x8/15,ph/p,x11/1,s11,x9/12,s4,x10/0,pg/k,s12,x14/2,pi/e,x3/1,s3,x13/7,s5,x2/6,s9,x4/13,s1,x0/14,pk/g,x13/8,s3,x1/9,s12,x15/5,pm/d,x11/2,pc/g,x13/5,pb/m,x1/14,pa/o,x11/0,s5,x15/10,s3,x8/4,pd/n,x10/5,pe/b,x8/13,s15,x7/5,pa/g,x4/1,s7,x11/6,pb/f,x9/2,pp/d,x10/8,pf/h,x12/3,pc/g,x0/13,s13,x9/1,s13,x10/0,pk/b,s5,x5/4,pd/p,x8/11,s15,x15/4,pg/b,x5/10,pc/f,x9/12,ph/k,x0/10,s10,x6/3,s3,x7/11,pb/l,x15/12,pj/n,x13/5,s14,x12/11,pd/l,x9/6,pf/b,x4/2,s8,x8/9,s13,x6/10,pa/g,x9/0,s4,x4/2,s13,x7/8,s8,x12/11,pb/f,x4/15,po/j,x12/7,s4,x9/4,pe/a,x6/13,s2,x7/4,s14,x5/15,s13,x6/12,s4,x11/5,s13,x8/1,pm/c,x5/10,pb/h,s3,x11/13,s10,x3/9,pm/p,x2/15,pe/h,s13,x8/5,s1,x9/7,s4,x3/4,pa/j,x6/0,pg/e,s14,x1/10,pf/n,x15/12,s15,x3/8,po/k,x0/2,s2,x3/1,s2,x12/6,pe/g,s7,x9/10,pj/i,s1,x6/8,s7,x14/13,s7,x5/3,pg/a,x11/0,s13,x3/14,pe/f,x15/2,s14,pm/k,x12/9,s1,pp/n,x6/15,s9,x12/2,s2,x14/0,s15,x10/5,s13,x15/13,pd/g,x4/6,s8,x3/14,pe/p,x9/1,s15,x15/11,s5,x14/12,s4,x5/7,pg/c,s10,x9/12,s8,x5/1,s10,x4/0,s6,x5/11,s9,x14/1,s1,x12/7,s2,x2/10,s14,x7/12,s8,x13/14,s6,x2/0,pm/k,x8/9,s9,x4/5,s4,x2/7,pc/h,x11/6,pm/b,x2/14,s14,x13/7,s14,x2/3,pe/d,s13,x4/15,s15,x13/10,pp/b,x11/6,pf/o,x13/0,pj/e,x3/10,s13,x6/2,s10,x13/10,pb/d,x11/6,s15,x4/2,pi/g,x11/7,s3,x15/4,pj/e,s11,x8/12,po/c,x7/5,s13,x13/10,s6,x6/8,s12,x5/11,s5,x7/9,s13,x6/3,s14,x11/10,pa/p,x9/1,pn/m,x6/4,pd/a,x7/14,po/j,x10/2,s9,x8/12,pm/e,s3,x5/10,s13,x12/7,s9,x13/1,s3,x9/6,s4,x14/2,s6,x0/1,s13,x10/9,s11,x14/5,pf/a,x15/9,ph/j,x8/0,s14,x10/15,s14,x5/1,pb/o,x8/0,s10,x14/10,s7,x11/9,s7,x10/4,pj/e,x2/0,pn/o,x8/12,s4,pa/d,s11,x6/15,s3,x10/0,po/h,x11/1,s9,x6/3,pk/i,x9/5,s11,x13/12,s9,pl/f,x0/6,s14,x9/5,s13,x1/7,s12,x14/13,pc/e,x9/6,s11,po/a,x4/1,pd/p,s7,x2/13,pk/o,x4/0,pb/c,x15/9,pg/j,x0/8,s2,x7/11,pc/n,x2/13,pb/i,x5/15,s1,x2/10,s3,x14/13,pd/a,x5/3,pe/n,x1/0,s2,pk/g,x13/6,pl/a,s4,x0/10,s12,x6/11,pi/n,x0/5,pb/d,x2/7,s5,x11/9,s8,x12/7,s11,pn/c,x11/1,s4,ph/g,x7/15,s11,pl/k,x9/0,po/p,x7/5,pm/j,s3,x11/0,s15,x1/9,s1,x11/10,pg/p,x8/6,pc/l,x14/2,pe/h,x9/0,s3,x3/12,s5,pf/l,x4/0,s14,x11/1,s9,x9/5,ph/d,x2/11,pm/e,x12/0,s15,x11/10,ph/f,s9,x2/4,s10,x11/13,s6,x1/15,po/d,x11/9,pc/p,x1/12,s6,x15/11,s6,pn/e,x1/4,s6,po/k,s10,x2/0,pl/m,x13/9,pp/n,x6/8,pk/c,x10/4,pa/d,x9/7,pe/f,x5/14,s8,x10/1,pm/g,x3/6,pk/b,x11/9,pl/g,x14/4,pi/h,s11,x3/2,s2,x1/13,pc/p,x9/14,s6,x8/6,s14,x5/13,s9,pi/k,x1/11,s7,x0/4,s11,x5/11,s4,x12/0,s7,x1/2,pl/o,x12/10,s10,pc/e,x1/11,s1,po/n,x2/4,s3,x7/6,pk/p,x5/4,pc/e,x7/9,pm/b,s7,x1/6,s8,pj/a,s6,x12/11,pk/h,x10/6,s4,x11/1,s13,x3/4,s5,x10/9,s15,x2/3,pi/p,x12/7,s2,x6/1,s13,x10/15,ph/d,x1/11,pn/p,x9/8,pf/o,x15/6,s11,x13/12,pe/j,x15/11,s4,x14/13,s3,pb/i,s7,x0/1,po/l,x4/5,s3,x2/3,pi/c,x15/7,s5,x2/9,s3,x14/15,s3,x3/11,s1,x13/2,s14,x8/9,pp/o,s12,x2/5,s13,x3/14,s13,x11/9,s14,x0/4,pl/f,x9/12,s1,x0/3,s11,x4/2,pp/i,x8/10,po/c,x6/0,s5,x11/7,s8,x5/8,s5,x3/4,s4,x1/12,s14,x11/14,s2,x9/3,s11,x5/10,pg/f,x14/7,s8,x3/0,pi/h,x9/4,s7,x3/5,pm/f,x2/9,s3,x0/14,s11,x12/7,s8,pb/l,x6/5,pp/j,x12/10,s5,x15/11,pl/d,x7/4,s10,x14/9,s5,x0/6,s9,x7/9,s8,x3/14,s15,x15/13,s12,x10/1,pp/e,x9/2,s13,x3/8,ph/a,x14/7,s1,x9/11,pb/c,x5/1,s1,x15/7,s9,x11/2,s3,x6/3,s15,pl/k,x1/9,s14,x5/15,pn/h,x12/2,pp/c,x13/9,pd/m,x5/0,pa/f,x13/11,s6,x10/3,pd/o,x1/15,s10,x10/3,s7,x13/4,pg/e,s15,x14/2,pi/l,x7/8,s4,x15/3,s14,x0/8,s15,x14/2,ph/g,x13/6,pi/n,x10/1,pe/b,x5/6,s7,x11/12,s8,x6/2,s1,x13/9,s10,x15/3,s7,x14/8,s4,pg/n,x1/9,s13,x12/3,s6,pa/h,x14/9,s1,x2/3,pc/m,x7/6,pa/k,x14/15,pj/g,x11/8,pe/i,x14/1,s4,x15/13,s15,x11/7,pl/k,x8/4,pn/f,x12/6,s7,x4/1,s8,x11/2,s4,x9/0,pd/b,x8/2,s3,x4/7,pi/a,x1/2,s1,x10/3,s7,x6/11,pk/l,x3/0,s3,x11/7,s7,x4/15,pn/d,x0/9,s11,po/b,x14/3,s3,pa/i,x11/2,s4,x9/3,pm/d,x1/14,pb/p,x13/0,po/m,x14/4,pg/b,x5/13,pf/h,x9/10,pn/p,x7/11,s10,x6/5,pk/h,x15/10,s12,x12/1,s6,x11/4,s11,x5/2,s6,x13/15,s14,x10/12,s4,x1/15,s7,x8/2,s15,x12/4,pc/p,x1/6,s13,x8/2,pi/d,x5/0,pj/e,s13,x2/3,s11,x1/14,pm/n,x2/9,s11,x13/15,s10,x7/5,s4,x6/2,pd/o,x12/11,pi/n,s9,x2/3,pl/d,x12/6,s14,x2/14,pa/n,x7/13,ph/l,x3/8,pd/b,x7/15,pf/g,x3/13,pb/j,x0/2,pi/d,x12/7,s11,x1/11,s13,x5/14,s4,x3/11,s13,x4/1,s12,x11/9,s7,x8/12,s3,x13/4,s8,x5/3,pp/m,x0/11,s4,ph/l,s7,x9/15,pc/p,x4/1,pa/k,s4,x15/6,pj/d,x4/11,s14,x14/12,po/g,x9/1,s2,x11/14,s7,x10/4,pn/a,x8/13,ph/p,x6/12,s13,x3/0,s15,pb/d,x11/15,s1,x13/3,s1,pa/e,s7,x12/9,po/c,x3/2,pg/k,x7/1,s2,x13/10,pc/b,x5/12,s8,x10/14,pd/h,x7/6,pl/p,x0/1,s12,x10/4,s8,x1/15,s2,x12/6,s12,x13/14,s6,x11/7,pn/g,x9/10,s10,x2/8,s11,x5/9,s13,pe/c,x13/11,s12,x4/15,s5,x2/13,s4,x10/12,s10,x1/6,po/h,x13/15,pk/i,s9,x3/5,s4,x6/8,s15,x2/9,s11,x14/15,pd/a,x4/5,pl/f,x15/0,pd/g,x13/5,s4,x10/2,pi/h,x7/4,s14,x0/10,pj/c,s11,x4/12,s2,x14/13,s15,x5/10,pl/h,x11/9,pe/n,x15/5,s12,x6/7,s13,x0/9,s15,x7/1,s10,pk/b,x0/9,pj/n,x15/5,po/b,x0/13,s14,x5/4,s10,x0/11,s12,x5/8,ph/j,s13,x0/15,pk/g,x2/9,ph/a,x15/6,s7,x3/7,s14,x1/8,pb/g,s10,x11/15,s9,x9/8,s5,x11/5,pk/p,x7/14,s5,x2/8,s13,x13/3,s15,x1/12,s3,x14/13,s8,x3/7,po/l,s12,x2/4,pp/n,s9,x13/6,s15,x10/3,s6,x8/7,pa/o,x15/0,pp/m,x2/4,pk/l,x6/0,s9,po/i,s11,x13/10,s1,x11/0,ph/e,s14,x8/10,pa/i,x13/4,s4,x3/7,s5,x5/9,pe/j,x1/8,pn/p,x13/9,pj/h,x12/15,s11,x0/11,s12,x13/9,s11,x4/11,pf/i,s9,x9/10,s7,x1/11,s12,x0/4,pp/o,s1,x5/10,s12,x9/12,s15,pg/j,s10,x0/4,s9,x3/13,pa/i,s12,x0/4,pd/n,x5/1,pj/m,x15/11,s15,x9/3,pd/k,s4,x11/15,s6,x4/9,s13,x7/14,pm/g,x3/8,s15,x4/13,s3,x10/14,s12,x12/15,pj/o,x4/14,pl/d,x10/12,s12,x15/5,pb/e,x10/11,s2,x15/13,s2,x0/3,s13,x8/12,s3,x9/6,s13,x0/15,s1,x13/5,pi/j,x0/14,s15,x1/13,s3,pc/m,x5/11,s15,x10/7,s4,x11/13,pk/p,x3/4,s2,x6/7,pf/b,x0/3,pl/j,x11/1,pg/b,s7,x15/10,s6,x1/12,s8,x9/3,pj/a,x13/11,s2,x9/3,s6,x5/7,pd/e,x6/8,s15,x3/0,s12,x4/2,pg/j,s7,pe/b,x12/0,pj/h,s5,x2/9,s12,x15/6,pm/b,x11/4,s10,x2/8,s8,x9/3,s7,x11/5,pk/c,x6/3,s12,x10/0,s14,x15/5,pi/b,s11,x3/4,s2,x13/14,s11,x6/12,s15,x2/5,pp/d,x4/7,s15,x14/8,s1,x3/12,s11,x0/14,s13,x12/5,pj/i,x2/15,pa/f,x9/8,s1,x14/10,s4,x1/2,pc/l,x14/9,s8,x7/10,s5,x1/3,pk/g,x9/14,s12,x11/7,s5,x10/8,s15,x15/9,ph/l,x2/1,s14,x11/4,s10,x6/5,s14,x7/14,s3,pf/b,x4/15,pd/k,x13/1,s6,x6/9,s4,x12/15,s6,x1/13,s4,x11/2,pf/h,x4/12,s4,x9/10,s2,pn/l,x1/8,s10,x9/15,s8,x2/6,pi/g,x4/13,s7,x15/0,pn/j,x7/13,s2,x0/11,s6,x9/4,po/i,x13/10,s5,x3/0,s10,x8/7,s8,x0/12,s13,x4/3,s1,x2/5,s3,x8/15,s8,x0/10,pe/k,s7,x8/15,s6,pd/p,x3/6,s5,x15/1,ph/o,x10/0,pc/l,x15/14,s8,x6/12,s6,x15/5,pi/e,x1/11,s6,x3/5,s5,x2/11,s3,pl/k,x15/1,s14,x3/12,s1,x5/0,pn/h,x8/7,pd/p,s12,x5/15,pm/j,x4/6,s11,x10/9,pk/a,s4,x13/0,s12,x6/5,s5,x14/8,s11,x15/7,s2,x14/4,s11,pd/h,x11/15,s3,x2/1,pc/o,x0/8,s15,x15/3,pl/m,x7/6,pi/j,x4/14,s2,pg/d,s13,x13/3,s11,x5/10,pc/b,x2/8,s13,x14/1,pj/d,x11/8,po/i,x3/13,s1,x1/11,s10,x7/0,pg/p,x3/13,pa/c,x4/6,s7,x0/9,ph/p,x14/15,s7,x0/5,s5,x13/7,s3,x5/0,pd/l,s4,x1/13,s10,pn/b,x6/15,s1,x3/11,s8,x8/9,pc/e,s5,x12/11,s4,x14/13,pj/d,x9/0,s5,x13/11,pm/c,x3/0,s9,x2/1,pb/k,x14/7,s4,x8/4,s2,pj/l,x9/13,s12,x0/12,po/e,x6/5,pb/n,x12/11,s2,x4/3,s7,x6/12,pm/g,x3/15,s4,x2/9,pj/h,x13/7,s14,x4/10,s2,x11/12,pe/n,x14/10,s2,pl/c,s1,x2/8,s9,x0/9,s7,x13/6,s13,x7/11,ph/k,x15/1,pn/a,x12/3,s13,x10/11,s10,x8/15,pd/o,x3/11,pf/g,x7/12,pn/b,x14/13,po/f,x10/8,s5,x11/15,s2,x6/10,s15,x14/0,s4,x5/15,pm/k,x0/11,pl/j,x10/4,pn/f,s3,pj/m,x14/2,s5,x10/13,s9,x15/14,s13,x2/8,s4,x1/15,pl/k,x9/6,s5,x14/7,s1,x13/1,pi/a,x10/11,s4,pb/g,x1/0,pm/j,x6/12,s12,x2/3,s12,x0/12,s11,x10/5,pd/f,x15/4,s7,x2/0,s4,x6/5,s8,x10/8,s5,x3/12,pj/h,x2/11,s14,x6/1,s6,x8/12,po/a,s6,x2/5,s14,x13/7,pi/j,x15/6,pa/o,x0/1,pb/n,x9/2,pd/j,x12/13,s5,x4/14,s12,ph/f,x1/12,pm/d,x11/10,pn/i,x12/9,s8,x13/15,po/b,x11/12,s11,pj/p,x9/4,s3,x14/1,pk/c,x7/6,s8,x11/0,s1,po/i,x1/15,s6,pc/l,x11/9,s7,x15/2,s14,pi/p,s10,x9/4,s10,x7/12,pn/c,x11/4,s14,x9/3,pm/j,x8/6,pd/l,x3/9,ph/a,x2/15,s3,x5/9,s15,x4/1,pn/f,x10/11,ph/i,x5/0,pa/l,x15/9,s1,x2/8,s3,x1/14,s13,x10/4,s11,x3/0,pb/k,s5,x12/11,po/a,x3/4,s9,x8/14,s5,x9/12,s6,x3/5,s14,pl/k,s4,x6/9,pf/m,x10/14,s2,x2/9,pb/d,x11/4,pf/e,x5/1,s12,x9/12,s3,x0/6,po/c,x1/3,s14,x13/14,s12,x12/15,pi/n,x10/8,s11,pk/f,x7/1,s14,x6/2,s12,x12/13,s6,x6/8,s4,x10/14,pm/d,x11/9,s9,pp/f,x14/3,pe/c,x2/10,s15,x0/7,s11,x5/1,pa/j,x3/8,s2,x6/4,s5,pl/b,x2/15,s5,x3/11,ph/a,x9/12,s8,pd/m,x5/1,s13,x2/13,pb/j,x14/12,pm/a,x3/9,pe/o,s15,ph/p,s8,x2/4,s14,x13/8,pd/b,s5,x10/3,pn/p,x9/15,pl/m,x6/8,pi/k,x3/9,pm/c,x0/13,ph/i,x1/7,pn/k,s12,x9/10,pa/b,x15/8,s5,x2/13,s10,x6/0,s10,x8/2,s15,x12/7,s7,x13/6,s10,x0/4,s5,x2/5,pf/m,x1/7,s1,x8/6,s10,x2/1,pj/b,x13/14,pa/c,x7/3,pm/j,x2/14,s7,x3/8,s12,x14/12,pl/f,x10/6,s14,x14/7,s14,x12/4,s13,x7/13,s14,x0/15,s4,pc/d,x13/11,pn/l,x1/6,s8,x3/7,pc/d,s13,x1/11,s14,x0/9,pl/e,x8/7,pa/m,x6/11,s13,x13/1,s8,pl/g,x4/7,s5,x0/3,s5,x9/1,s4,pc/b,x4/11,pn/j,x7/14,s3,x15/5,s15,x13/12,s9,x9/4,s3,x8/5,s1,x7/4,pi/l,x14/9,pp/c,x8/6,pl/g,x4/12,s7,x5/15,s7,x2/7,pc/m,x12/14,s12,x1/13,s12,x7/8,s10,x3/4,pb/a,x7/8,s7,x2/6,s15,x10/3,s6,x7/15,s8,x10/3,s11,x6/11,s14,x8/9,pk/g,x7/12,pc/a,x11/15,pn/e,x2/10,s12,x5/14,s5,x9/10,s2,x13/3,ph/m,x1/6,pl/d,x13/15,s7,x12/6,pm/o,x11/13,s10,x2/6,pn/c,x8/10,s10,pp/f,x2/0,pb/j,x8/11,pe/p,s12,x10/6,po/f,x11/0,pd/p,s13,x15/9,s15,x1/2,s8,x6/5,po/n,x7/10,s2,x14/5,s10,x1/6,pp/e,x0/11,ph/j,x1/4,s2,x15/7,pb/p,x2/9,s12,x14/10,s5,x6/9,s11,x3/11,s2,x1/5,pd/g,x14/7,s8,x11/0,s12,x12/2,s10,x11/4,pp/b,x12/0,s1,x9/13,pi/a,x15/3,ph/b,x1/4,pd/e,x0/11,pa/n,x15/10,s7,x4/3,pd/e,x15/11,pf/m,x10/7,s10,x0/1,s8,x15/7,s8,x11/6,s6,x3/7,ph/c,x14/1,s9,pm/d,x5/8,pg/b,x2/7,pf/d,s2,x14/10,s2,x15/3,pj/e,x0/5,s7,x3/1,pp/f,x11/6,pd/h,s4,x0/4,pk/o,x6/10,s9,x15/3,s11,x12/5,pl/c,s10,x9/10,pn/f,x8/1,s1,x6/12,s6,x15/2,pp/d,x14/4,s11,x12/6,po/a,x2/10,s4,x8/15,pc/n,x5/11,s6,pi/d,x3/6,s2,x5/12,s3,x3/14,s4,x11/2,s4,x15/6,pl/p,s6,x5/9,s14,x11/0,s15,x4/9,pa/i,x10/15,pb/p,s3,x2/9,pd/f,x10/3,s14,x11/14,s13,x9/10,s5,x7/12,s9,x15/8,s15,x0/3,ph/m,s3,x4/2,pa/c,s13,x12/13,pj/m,x1/2,s8,x7/12,s2,x2/4,po/h,x12/5,pf/c,s10,x6/8,s8,x5/14,s4,x11/4,s11,x10/12,s5,x2/9,s11,x4/14,pj/i,x2/9,s2,x13/12,s11,x5/2,s8,x11/12,s4,x10/7,s14,x5/6,s5,x3/1,s12,x6/10,pg/b,x12/11,pj/f,x3/15,pm/i,x5/9,ph/b,s4,x15/2,po/e,x6/0,s2,x1/8,s14,x13/12,pc/j,x1/6,s3,pn/d,x13/14,s9,x4/11,s4,x7/1,s10,pe/o,x13/10,s11,x8/2,s3,x0/3,s1,x13/1,s11,x2/11,s1,x3/12,s1,x8/2,s8,pk/m,x0/10,pn/i,x8/7,pl/e,x11/14,s11,x3/8,s9,x15/12,pf/b,x4/0,pe/l,x12/8,pm/c,x5/2,pg/o,x14/3,s8,pl/f,s6,x10/0,s12,x2/5,s7,x10/8,ph/o,x3/15,pb/d,x6/12,s3,x2/10,pk/j,s1,pd/b,x6/1,pf/a,x12/10,s3,x0/6,s11,x11/9,s15,x8/12,pc/n,x15/13,s11,x12/11,s6,pp/l,x1/10,s12,pj/c,x6/0,s5,x13/12,s6,x10/14,s10,x5/1,po/n,x0/14,s9,x15/8,pi/e,x13/7,s3,x6/5,po/a,x2/7,s5,x12/14,pb/p,x13/0,pg/i,x9/6,s6,x12/13,s5,pa/j,x10/14,s8,x11/5,s15,x13/9,pf/l,x8/2,pj/c,s6,x5/0,s8,x12/1,pi/o,x14/3,s14,x1/5,s12,x15/4,s12,x7/6,s6,x12/15,s11,x10/13,s9,x3/6,s4,x15/9,s4,pc/b,x4/6,s6,x11/10,s7,x7/0,s9,x10/11,s9,x9/7,s12,x11/14,s13,x9/2,s12,x13/15,pk/p,x7/5,pc/d,x0/2,s9,x1/8,s12,x15/6,s3,x2/7,s3,x3/10,s5,x13/9,s14,x8/3,s12,x9/13,s5,x6/15,pb/n,x0/2,s10,x12/15,pm/e,x13/3,s7,x7/12,pl/k,x11/4,pm/f,x7/9,s2,x14/15,pp/e,x12/5,ph/f,x13/7,pl/k,x6/5,pc/f,s4,x9/15,s5,x14/10,s2,x4/8,pa/j,x7/0,s6,x6/2,s10,x11/14,s5,x0/10,s15,x2/6,pl/p,x0/4,s1,x8/15,s13,x14/3,pj/m,x9/11,pa/e,x14/6,s10,x9/8,pl/f,x14/10,s9,x2/9,s5,x15/10,pb/e,x13/5,s11,x7/6,s8,x5/14,s3,x12/9,s8,x5/0,ph/k,x1/3,s1,x10/13,s12,x3/15,s5,x11/9,pi/p,x7/8,s9,pn/l,x12/11,pe/p,x3/6,po/l,x9/8,s13,x11/14,pi/n,x0/15,pm/k,x10/8,s9,x12/2,s13,x10/4,s5,x3/6,pp/a,x10/11,s9,x0/3,s9,x9/13,s10,x6/14,pk/g,s15,x2/0,s8,x6/5,pp/j,x0/8,pd/o,x12/13,s7,x15/14,s6,x12/11,pc/i,x3/15,s6,x1/6,pe/l,x13/15,pc/f,x6/10,s6,x12/0,s1,x14/5,pk/g,s5,x8/0,s1,x12/4,s11,pj/p,x9/1,s11,x0/12,s14,pb/k,x6/10,s14,x1/2,po/l,x7/3,pn/h,x12/10,s8,x0/11,s11,x5/8,s7,pp/f,x11/7,s7,x6/14,s1,x9/1,s12,x12/0,pe/j,x9/2,s8,x5/14,pl/o,x15/4,pk/b,x0/3,s11,x8/1,pe/o,x3/5,pp/f,x13/10,s12,x1/15,s3,x7/6,po/k,x8/11,pp/b,x5/13,s9,x9/2,s12,x0/6,s5,x10/3,s10,x5/13,pj/k,x1/12,s8,x8/9,pb/d,s7,x13/10,s1,x9/7,s3,pa/g,x1/12,s10,x2/0,pk/h,x12/4,s11,pb/e,x5/6,s5,x9/13,pj/h,x1/4,s1,x6/9,pi/n,x14/15,s10,x8/3,s7,x0/10,s6,x11/12,s2,pf/h,x7/13,s9,x15/8,s11,x10/4,pb/p,x8/0,s6,x9/11,po/k,x4/10,ph/j,s4,x6/5,pc/n,x13/2,s1,x0/12,s12,x4/8,pa/l,x7/11,pd/h,x13/10,s5,x1/4,s3,x3/0,pg/e,x10/15,s13,x12/14,pd/i,x11/7,pe/h,x0/15,s12,x10/6,s9,x8/3,s12,pc/d,x14/1,pj/p,x8/0,s6,x5/2,s11,x13/4,pi/o,x1/8,s3,x3/15,pd/f,s12,pj/e,x1/5,pp/b,x8/9,s15,x0/5,pg/c,s2,x15/6,pn/k,s7,x11/5,s3,x0/8,pm/p,x15/10,s7,x8/4,s4,x9/15,s3,x0/11,s12,x9/8,s2,x0/15,pc/k,x12/2,s15,x15/8,s1,x10/4,s15,x6/12,pd/n,x4/7,pl/k,x11/5,s3,pc/m,s10,x6/15,s2,x5/10,s1,x7/1,s5,x4/5,pg/e,x10/8,s13,x3/4,s11,x15/7,pm/b,x10/13,pi/a,x5/9,pd/n,s3,x15/11,s7,x3/14,pc/p,x11/15,s14,x4/2,pj/o,x5/14,pb/g,x12/11,s7,x6/0,s10,pm/d,s7,x15/3,s9,x7/2,s6,x14/9,pp/k,x10/5,s4,x3/7,s5,x11/12,s4,x0/5,pg/f,x9/2,s2,x11/6,pb/i,x15/0,pm/h,x11/3,s1,x14/4,pg/d,x7/13,s15,x15/1,s13,x9/14,pa/j,x12/7,pe/o,x13/2,s12,x14/0,pd/a,x5/1,s7,x12/2,s7,pi/l,x10/4,pn/g,x14/3,s7,x2/9,pi/e,x1/11,pf/l,x15/12,s7,x8/2,pi/k,x10/14,s13,x0/2,ph/c,x9/15,pd/e,x4/8,s5,ph/m,x15/7,s8,x11/13,s4,x8/9,s13,x1/12,pj/d,x6/3,pl/k,x5/4,s2,x8/13,s3,x6/15,s4,x4/13,s15,x10/6,pf/a,x0/3,s6,po/e,x7/4,s7,x8/5,pb/d,x15/4,ph/o,x8/1,s9,x9/0,s11,x4/5,pl/f,x7/3,pm/d,x12/2,s12,x4/0,s6,x5/14,s5,x11/12,pe/k,x7/6,s4,x2/10,pj/d,x1/7,s4,x9/14,s1,pl/k,s8,pa/g,x3/2,s8,x5/6,s2,pf/k,x10/13,pn/m,x1/15,s6,x13/0,s5,x11/5,s15,x1/9,s1,x13/3,s15,x8/11,pd/a,x10/15,s8,x4/5,s1,x1/9,s5,pg/f,x12/11,s12,x14/7,ph/k,x15/4,pm/p,s2,x13/0,pl/o,x2/10,s3,x11/14,pi/j,s9,x4/7,pn/p,x12/6,s13,x7/4,s1,x9/8,s13,pk/e,x13/2,pf/l,s11,x9/0,pm/h,x1/3,pl/a,x11/4,s1,x0/9,pf/d,s5,x10/2,s5,pm/j,x11/14,s10,x10/3,pd/h,x9/13,s12,x5/14,s10,x6/7,pm/k,s3,x2/9,s8,x11/6,s15,x14/5,pa/l,x7/13,s9,x2/11,pj/p,x3/13,s10,pc/m,s2,ph/j,x10/4,pl/m,x11/1,s15,x14/13,s8,x7/12,s13,x0/13,s5,x5/9,s14,x0/8,s6,x11/13,pk/a,x0/4,s10,x11/7,pm/d,x2/5,pl/n,x11/7,pk/c,x14/8,s11,x2/0,s11,x13/6,s8,x11/12,s14,x10/1,pn/l,x12/5,ph/m,x6/10,pi/a,x13/8,pl/c,x2/3,pg/e,x10/8,s7,x3/5,s2,x0/8,po/k,x14/3,pl/f,x4/10,pe/i,x6/8,pp/l,x11/9,pc/f,s8,x4/7,s1,pn/l,x8/15,pa/p,x11/12,s3,po/i,s1,x14/7,pj/f,x5/3,s12,pi/d,s15,x4/7,s3,x14/15,s8,x6/3,s11,x13/10,s14,x9/3,s1,x5/7,s7,x10/3,pb/l,x9/13,pc/n,x14/0,pd/h,x10/2,s8,x7/0,s10,x14/1,s10,x6/9,s15,x1/14,s14,x12/5,s13,x13/3,s10,x10/14,s8,x9/12,pa/o,x0/11,pg/c,x1/8,pj/m,s12,pd/c,x5/11,s8,x3/0,po/l,x15/5,pp/d diff --git a/2017/d17/ex1/ex1.py b/2017/d17/ex1/ex1.py deleted file mode 100755 index ad650a7..0000000 --- a/2017/d17/ex1/ex1.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python - -import collections -import sys - - -def solve(input: str) -> int: - def parse(input: str) -> int: - return int(input.strip()) - - lock = collections.deque([0]) - step = parse(input) - for i in range(1, 2017 + 1): - lock.rotate(-step) - lock.append(i) - return lock[0] - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d17/ex1/input b/2017/d17/ex1/input deleted file mode 100644 index 66a899a..0000000 --- a/2017/d17/ex1/input +++ /dev/null @@ -1 +0,0 @@ -377 diff --git a/2017/d17/ex2/ex2.py b/2017/d17/ex2/ex2.py deleted file mode 100755 index 5fab2dc..0000000 --- a/2017/d17/ex2/ex2.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python - -import collections -import sys - - -def solve(input: str) -> int: - def parse(input: str) -> int: - return int(input.strip()) - - lock = collections.deque([0]) - step = parse(input) - for i in range(1, 50000000 + 1): - lock.rotate(-step) - lock.append(i) - return lock[lock.index(0) + 1] - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d17/ex2/input b/2017/d17/ex2/input deleted file mode 100644 index 66a899a..0000000 --- a/2017/d17/ex2/input +++ /dev/null @@ -1 +0,0 @@ -377 diff --git a/2017/d18/ex1/ex1.py b/2017/d18/ex1/ex1.py deleted file mode 100755 index daa8cdf..0000000 --- a/2017/d18/ex1/ex1.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python - -import collections -import enum -import sys -from typing import NamedTuple - - -class Op(enum.StrEnum): - SND = "snd" - SET = "set" - ADD = "add" - MUL = "mul" - MOD = "mod" - RCV = "rcv" - JGZ = "jgz" - - -class Instruction(NamedTuple): - op: Op - x: str - y: str | None = None - - @classmethod - def from_str(cls, input: str) -> "Instruction": - op, *rest = input.split() - return cls(Op(op), *rest) - - -def solve(input: str) -> int: - def parse(input: str) -> list[Instruction]: - return [Instruction.from_str(line) for line in input.splitlines()] - - def resolve(y: str | None, registers: dict[str, int]) -> int: - assert y is not None # Sanity check - try: - return int(y) - except ValueError: - return registers[y] - - instructions = parse(input) - registers: dict[str, int] = collections.defaultdict(int) - - ip = 0 - freq: int | None = None - while True: - assert 0 <= ip < len(instructions) # Sanity check - instr = instructions[ip] - ip += 1 - match instr.op: - case Op.SND: - freq = resolve(instr.x, registers) - case Op.SET: - registers[instr.x] = resolve(instr.y, registers) - case Op.ADD: - registers[instr.x] += resolve(instr.y, registers) - case Op.MUL: - registers[instr.x] *= resolve(instr.y, registers) - case Op.MOD: - registers[instr.x] %= resolve(instr.y, registers) - case Op.RCV: - if resolve(instr.x, registers) != 0: - assert freq is not None - return freq - case Op.JGZ: - if resolve(instr.x, registers) > 0: - ip += resolve(instr.y, registers) - 1 # Account auto-increment - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d18/ex1/input b/2017/d18/ex1/input deleted file mode 100644 index ea1762c..0000000 --- a/2017/d18/ex1/input +++ /dev/null @@ -1,41 +0,0 @@ -set i 31 -set a 1 -mul p 17 -jgz p p -mul a 2 -add i -1 -jgz i -2 -add a -1 -set i 127 -set p 826 -mul p 8505 -mod p a -mul p 129749 -add p 12345 -mod p a -set b p -mod b 10000 -snd b -add i -1 -jgz i -9 -jgz a 3 -rcv b -jgz b -1 -set f 0 -set i 126 -rcv a -rcv b -set p a -mul p -1 -add p b -jgz p 4 -snd a -set a b -jgz 1 3 -snd b -set f 1 -add i -1 -jgz i -11 -snd a -jgz f -16 -jgz a -19 diff --git a/2017/d18/ex2/ex2.py b/2017/d18/ex2/ex2.py deleted file mode 100755 index c9ca81b..0000000 --- a/2017/d18/ex2/ex2.py +++ /dev/null @@ -1,121 +0,0 @@ -#!/usr/bin/env python - -import collections -import dataclasses -import enum -import sys -from typing import NamedTuple - - -class Op(enum.StrEnum): - SND = "snd" - SET = "set" - ADD = "add" - MUL = "mul" - MOD = "mod" - RCV = "rcv" - JGZ = "jgz" - - -class Instruction(NamedTuple): - op: Op - x: str - y: str | None = None - - @classmethod - def from_str(cls, input: str) -> "Instruction": - op, *rest = input.split() - return cls(Op(op), *rest) - - -@dataclasses.dataclass -class Program: - instructions: list[Instruction] - id: dataclasses.InitVar[int] - registers: dict[str, int] = dataclasses.field(init=False) - ip: int = dataclasses.field(init=False, default=0) - - receive_queue: collections.deque[int] = dataclasses.field( - init=False, default_factory=collections.deque - ) - send_queue: collections.deque[int] = dataclasses.field( - init=False, default_factory=collections.deque - ) - values_sent: int = dataclasses.field(init=False, default=0) - - def __post_init__(self, id: int) -> None: - self.registers = collections.defaultdict(int) - self.registers["p"] = id - - def _resolve(self, y: str | None) -> int: - assert y is not None # Sanity check - try: - return int(y) - except ValueError: - return self.registers[y] - - def execute(self) -> None: - while True: - assert 0 <= self.ip < len(self.instructions) # Sanity check - instr = self.instructions[self.ip] - match instr.op: - case Op.SND: - self.send_queue.append(self._resolve(instr.x)) - self.values_sent += 1 - case Op.SET: - self.registers[instr.x] = self._resolve(instr.y) - case Op.ADD: - self.registers[instr.x] += self._resolve(instr.y) - case Op.MUL: - self.registers[instr.x] *= self._resolve(instr.y) - case Op.MOD: - self.registers[instr.x] %= self._resolve(instr.y) - case Op.RCV: - if not self.receive_queue: - return # Block and wait for a value to be sent - self.registers[instr.x] = self.receive_queue.popleft() - case Op.JGZ: - if self._resolve(instr.x) > 0: - self.ip += self._resolve(instr.y) - 1 # Account auto-increment - self.ip += 1 - - @property - def is_terminated(self) -> bool: - # Has the program jumped outside the instructions - return self.ip < 0 or self.ip >= len(self.instructions) - - @property - def is_blocked(self) -> bool: - if self.is_terminated: - return True - # Is it blocked on a `RCV` - return self.instructions[self.ip].op == Op.RCV and not self.receive_queue - - -def solve(input: str) -> int: - def parse(input: str) -> list[Instruction]: - return [Instruction.from_str(line) for line in input.splitlines()] - - instructions = parse(input) - p0, p1 = Program(instructions, id=0), Program(instructions, id=1) - - while True: - if p0.is_blocked and p1.is_blocked: - return p1.values_sent - - p0.execute() - p1.execute() - - p0.receive_queue.extend(p1.send_queue) - p1.send_queue.clear() - p1.receive_queue.extend(p0.send_queue) - p0.send_queue.clear() - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d18/ex2/input b/2017/d18/ex2/input deleted file mode 100644 index ea1762c..0000000 --- a/2017/d18/ex2/input +++ /dev/null @@ -1,41 +0,0 @@ -set i 31 -set a 1 -mul p 17 -jgz p p -mul a 2 -add i -1 -jgz i -2 -add a -1 -set i 127 -set p 826 -mul p 8505 -mod p a -mul p 129749 -add p 12345 -mod p a -set b p -mod b 10000 -snd b -add i -1 -jgz i -9 -jgz a 3 -rcv b -jgz b -1 -set f 0 -set i 126 -rcv a -rcv b -set p a -mul p -1 -add p b -jgz p 4 -snd a -set a b -jgz 1 3 -snd b -set f 1 -add i -1 -jgz i -11 -snd a -jgz f -16 -jgz a -19 diff --git a/2017/d19/ex1/ex1.py b/2017/d19/ex1/ex1.py deleted file mode 100755 index 6cc724c..0000000 --- a/2017/d19/ex1/ex1.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python - -import enum -import sys -from collections.abc import Iterator -from typing import NamedTuple - - -class Point(NamedTuple): - x: int - y: int - - -class Direction(enum.Enum): - UP = Point(-1, 0) - DOWN = Point(1, 0) - LEFT = Point(0, -1) - RIGHT = Point(0, 1) - - def apply(self, p: Point) -> Point: - dx, dy = self.value - return Point(p.x + dx, p.y + dy) - - def turns(self) -> Iterator["Direction"]: - match self: - case Direction.UP | Direction.DOWN: - turns = (Direction.LEFT, Direction.RIGHT) - case Direction.LEFT | Direction.RIGHT: - turns = (Direction.UP, Direction.DOWN) - yield from turns - - -def solve(input: str) -> str: - def parse(input: str) -> dict[Point, str]: - return { - Point(x, y): c - for x, line in enumerate(input.splitlines()) - for y, c in enumerate(line) - if c != " " - } - - def packet_spell(map: dict[Point, str]) -> str: - letters: list[str] = [] - # Travel starts downward, from outside the map before the first line - pos = min(map.keys(), key=lambda p: p.x) - dir = Direction.DOWN - - while True: - if (letter := map[pos]) not in ("+", "|", "-"): - letters.append(letter) - new_dir = dir - new_pos = dir.apply(pos) - if new_pos not in map: - for new_dir in dir.turns(): - if (new_pos := new_dir.apply(pos)) in map: - break - else: - # Must be the end of the line, stop looping - return "".join(letters) - dir = new_dir - pos = new_pos - - map = parse(input) - return packet_spell(map) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d19/ex1/input b/2017/d19/ex1/input deleted file mode 100644 index 2a3c8fc..0000000 --- a/2017/d19/ex1/input +++ /dev/null @@ -1,201 +0,0 @@ - | - +---+ +-------------------------------+ +---+ +---------+ +---------------------------|-------------------------------------------------------------------------+ +-----+ - | | | | | | | | | | | | | - | +-----|---------+ +---------------------|---|-----|-------------|---------------------------|-------------------------------------------------------------------------+ | +-------+ - | | | | | | | | | | | | | - | +---+ +---------+ | | | | +-------------------------------------------------------------------------------------------------------+ A-+ +-----------------------+ - | | | | | | | | | | | | | | | | | | - | | | | | | +---------------------|-----|---------|-----------+ | +-----------------------------------------------+ | - | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | +---------|-----------|-------------------|---------------------|-----------------------------------------|-----------|-------------+ - | R | | | | | | | | | | | | | | | | | | | | - | | | | +-------|---------------------------|-------------|-----------|-------------------|---------------------|-------------+ +-----------|-----|-----|-----+ +-------+ - | | | | | | | | | | | | | | | | | | | | | | | | - | +---------|-------+ | | | | | +-|---------+ +-|---|-----+ | +-----------------|---------------------|-------+ | | +-|-----|-|---|-----------------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - +-------------------|-----|-|-|-------|-------|---------|-----+ | | | | | | +-----------------|---------------------------------------------|---------|---------|---|-----------+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-----+ +---|---|-----|---|-----------------|-----------------|-----------|-|-------------------------------------+ | | | +---------|-|---+ +-|---------------------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-+ | | | | | | | | | | | | | +---------------------|-----------------------------|-----|-------------------|-|---+ | | - | | | | | | | | | | | | | | | | | | | | | | | | - | +---------------------+ | | | | | | | | | +-|-----------------------------------------|-------|-------------------------|-|-------|-------+ +-+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +---------+ | | | | | | | | | | | | | | | | | | | | | | +---------------+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - +---+ | | | +-+ | | | | +-----+ | +-|---------------+ | | +-|-------|-------------------|-+ | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | W | | - +-------|-|-|-|-+ | | | | | +-------------|-------------------|-|-|-------|-|-------------------------------------|-----------|-----------------+ +-|-----------|-----------------+ | - | | | | | | | | | | | | | | | | | | | | | | | H | | | | | | | | | | | | - | | +-|-------+ | | | | | | | | | | | | | | +---------|---------------------|-------|-----|---------------------------------|-|---------------+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-----|-|---+ | | | +---+ | | +-|-----------------------|-----|-------+ | | | | | | | | | | +-|-|-------------+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | +-------------------|-------|-----|---------+ | | +---------------+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | +-+ | | | | | | | | +-------------|-----------------|-+ | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | +-----------------------------------------|-----|-------|---------|---------|-----------+ | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-|-|-|-+ | | | | +-|-|-------|-------------------------------|-|---|-----|-|---------|---------|-----------|-------|-+ | | | | | | +-+ | | | | +-+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-|---------|-+ | +---------|-|---|-+ | | +-------+ +-------|-|---------|---------------------|-----------|-----------------------------------|---+ | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------------------------------------------|-----|-|-------|---+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | +---------|---|-----|-------------------------------------|-----------|---------------------|-|---|-|---------|-----|---------------|-----+ | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-----|-|---|-|-|---|-|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-|-|-|---|---|-|-|-------+ | | | | | +-----+ | | | | | | +---------------------+ | | | | | | | +-------------|-|---------|---|-----------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | +-----------|-----------------------|-|---------------------|---------------------|-----------+ +-----------|---------+ | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - +-------|-|-|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|---|-+ | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-------+ | | | | | | | | | +---------|-------------------------------+ | | | | | | | | | | | | | | | | | | | | | | | +---+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +-|-|-----|---|-|-|-|-------------------------------------|-|-------------------------------|---------|-|-|-----|-|-------------+ | | | | | | | +-------------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - +---------|---+ | | | | | | | +-----+ | | | | | | | +-|-|-------------------|---------|---|-----|---|-----|-----------------------+ | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | +---|---------------------------------------|---+ | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +-----|-|---------|-|---------------|-----------------------|-|---------|-|-|-------------------|-+ | | | | | | | | | | | | | | | | | | +-+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - +---------------|-----|---------------|---|---|---------+ +-----+ | | | +-----|-|-------|-+ +---------------|-|-|---|-|---------|---------------------|-|-----------|-----|-----|---|-+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +-|-------|-|---|---|-------|---------|-------------------|-|---------|-------------------------------|-----|-|-|-|---------------------------|---------|-----|---|-----|-+ | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +-|---|---|-|-+ | | | +-----|-|-------|---------------------|-+ | | | +-----------|-------|---------|-|-----|-|-------|-------+ | | +-+ | +-|-|-----|-+ | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +-+ | | | | | | | | | | | | | | | | +-----|-----------------|-|---|-----|-----------|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | U | | | | | | | - | | | | | | | | | | | | | +-----|-|-------|-----------|-----------------------------------------|---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | +-----|-|---|-|---|-----|-----------|-----|-------|---|-|---|-|-|-----------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---|---|-|-----------|---|-|-|-------|-|-----|-------|-------------------|----------------E--+ | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | +-------|---|---------------|-------|-----|---+ | | | +-|-------|---|-|-|---|-|-|-----------------------------|---|-----|-----|-------+ +---|-------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | +---|---|-|-|-|---|---|-----|---------------------------|-|-------|---|---+ | +---|---|-|-------|-----|-|-+ | | | +-----+ | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +---|-|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|-----------------------------|-|-|---------------|-------|-----|---+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | +-----------------|-----------|-----------|-----------------------|-------|-|-|-----------------------+ | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | +---------------|-------------|---|---|-|---------|-|---------------|---|-|-----|-------------------|-----------|---|---|---------|-+ +-|-+ | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +---|-|-----|-----|---|---|---------|-|-----------------|---------------|-------------|-------------|-|---|---------|-----|-----------------------------+ | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---------|-----|-----|-----------------------------------|---|-|---|---------|-+ | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | +---|---------|-|-|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|---|---+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +-|-----|---|-|---|---|-|---------------+ | | +-|-------|-------|-----------+ +-|-|-|-|---|-------|-|---|---------------------|-------+ | | +---+ | | +-|-----|---+ | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +-----------|-|-|---------|-|---|---|-----|-|---------------|-----+ | | | | | +-|-|-----+ +-|-|-|---|-|---+ | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----|-+ | +-------+ | | +-----------|-|-------------------------+ | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | +---|---------+ | | +-|-|-|-------|-----|-|-----------|-------------|-|---|---|-----+ | | | | | | | | | | | | +---|---|-+ | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | N | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | +-|-----|---|-+ | | +-----|---|-------------|-|-------+ | | +---|---|-|-----|-----------------------------|---|-|--D|---|-----|---+ | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +---|---|-|-----|-|-|-|-----|-|---|-----------|-|-----|-|-----|-|-----|---|-------|---------------|-------|-|---------|-------------------|---------|-----|---|---|-|---|-----|---|-+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | +-------|-|-----|-|-|-----------|-|-+ | | | | | | | | | | +-------|---------+ | | | | | | +-------+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +-------|---+ | | | | | | | | | | | | | | | | | | | | | | | +-+ +-|-----|-----|---+ | | | | | | +-------|---------|---------+ | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +---|-------+ | +-----------|-------|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---|---+ | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +-|-|-----|-------|-|-|-----|-----------|-+ | | | | | | | | +-|-------+ | | +---------------+ | +-+ | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +---|-----------|-------|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---|-------------|---+ | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +---|-------|-----|---|-------------|-|---|---|---------|---|---|-|-----+ | | +---------|-|---|-|-----|-------------------|-------|-------+ | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | +---|-|-----|---------------|-|---------|---|---|---------|-|---------------------|-----|---|-------+ | | | | | | +-|---|-+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----|-------+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | +-|-------|---|---|---|---------|-----+ | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +-|-+ | | | | | | | | | | | | | | | | | | | | | | | | +-----------------|-----|---------|-----------------------------|---------|-------------|---|-|---|-|-----+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----------------|-------------|---------|-----+ | | +---------------|---|---|-+ | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +-------------|-|-|-----|---|---|-|-|---------|---|---------|---------------------------|-----|-----|---------|---------|-------------------|---------|---------+ | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +---------|-+ | +-----|-|-|---|-|-|---+ | | | | | | | | +---------------------------|-------------------|-------------+ +---------|----------Y--+ | | | | +---|-+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | +-|---|-----------|---------|---------|---|---------|---|-----+ +---|-|-----|-----|---------+ | | +-----------------------------+ | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | +-----|-|-----|---|-------|-|---|-----|-----------------------------|---------------------------------|---|-------------------------------------|-----+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | +-|---|-------|-------|-|-----|---|-----|---------+ | | | | +-------------+ | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-|---|-------|-------|---|-----|-|-------|-|-|-|---------------|-|-----|-----|---------------|-|-----------|-------|-----------|-------------|---|-----------|-------------------------------+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +---------|-------|---|-|-|-|---------|-|-----|---|-----|---|---|-----------------|---|-------------|---------------+ | | | | +-+ | | | +-+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-|-|---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | +---|-----------------|---------------------------------------------|---+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | +---+ | | | | +---+ | | | | | | | +---|-----------+ | | | | +-+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +-|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----------|-|---+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-|---|-------------|---|---|-|---------------+ | | | | | | | | | | | | | | | +---|-----------------|-----+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +-------|-----|-|-|---|-|---+ +---|-|-------|-|---------|-|-----------|---------------|-|---+ | | | | | | | | +---|-------|-+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-+ | | +-|-----------|-|-----|---|---------+ | | | | | | | | | | | | | | | | +---------------|-----------------|-+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | +---|-|---|-|---|-----|-|-----------------------|---|-----|-------|-------|-----------|---------|-------------------|-----+ | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | +-----------------------------------|-----------+ | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +-----|-----|---|O------------------|-|---|-|---+ | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +-|---------------|-----|---|-----------|-----|-|---+ | | | | | | | | | | | | | +-----|-----|-----------+ +-----+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +-----------|-----+ | | | | | | | | | | +-----------|-----------|-------------------------|-----------------------------|-----------------|-------------------------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +-------------|-------|-----|-|-|-----------------|-|-----------------------------------|-----|---|-----|---------|-----------------------------|-----------|---------------------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | +-----------------+ | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +-+ +-----+ +---------|-----|-------------------|-----------|-----------------+ | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +-----------+ | | +-|-|-----------|-----+ | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +-|-+ | +-|-+ | | | | | | | | | | | | | | | | | +---|-----+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | +-----+ +---------|-----------|-------|---------|-------+ | | | +-+ | +-------------------------|-------------|---|-----------|---------------------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | +-----+ | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-+ | | | +-----------------------|-----------|-------|---------|-------+ +-|---+ +-----------+ | | | +-------------------------|-+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +---|-------|-+ | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | - +-------|-------------|-------------|-------------------|---------|---------+ | | | +-----------|-----+ | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | - +-|-+ | +---|-+ | | +-----------------|---------+ | +---------+ | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | - | +---+ +---------+ | +---------------------------------------+ | +---------------+ | | | | | | | +-------------------+ - | | | | | | | | | | | | | | | | | | - +-+ +-----+ +---------------------|---------|-----------+ +-------------------|-------------------------------+ +-+ | | | - | | | | | | | | | | - | +-------------------+ | | +-----------+ | - | | | | | | - +-------------------------------------------------------+ +---------------------------------+ +-------------------------------------------------------+ - diff --git a/2017/d19/ex2/ex2.py b/2017/d19/ex2/ex2.py deleted file mode 100755 index ce27c01..0000000 --- a/2017/d19/ex2/ex2.py +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env python - -import enum -import sys -from collections.abc import Iterator -from typing import NamedTuple - - -class Point(NamedTuple): - x: int - y: int - - -class Direction(enum.Enum): - UP = Point(-1, 0) - DOWN = Point(1, 0) - LEFT = Point(0, -1) - RIGHT = Point(0, 1) - - def apply(self, p: Point) -> Point: - dx, dy = self.value - return Point(p.x + dx, p.y + dy) - - def turns(self) -> Iterator["Direction"]: - match self: - case Direction.UP | Direction.DOWN: - turns = (Direction.LEFT, Direction.RIGHT) - case Direction.LEFT | Direction.RIGHT: - turns = (Direction.UP, Direction.DOWN) - yield from turns - - -def solve(input: str) -> int: - def parse(input: str) -> dict[Point, str]: - return { - Point(x, y): c - for x, line in enumerate(input.splitlines()) - for y, c in enumerate(line) - if c != " " - } - - def packet_walk(map: dict[Point, str]) -> int: - letters: list[str] = [] - # Travel starts downward, from outside the map before the first line - pos = min(map.keys(), key=lambda p: p.x) - dir = Direction.DOWN - - steps = 0 - while True: - if (letter := map[pos]) not in ("+", "|", "-"): - letters.append(letter) - new_dir = dir - new_pos = dir.apply(pos) - steps += 1 - if new_pos not in map: - for new_dir in dir.turns(): - if (new_pos := new_dir.apply(pos)) in map: - break - else: - # Must be the end of the line, stop looping - return steps - dir = new_dir - pos = new_pos - - map = parse(input) - return packet_walk(map) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d19/ex2/input b/2017/d19/ex2/input deleted file mode 100644 index 2a3c8fc..0000000 --- a/2017/d19/ex2/input +++ /dev/null @@ -1,201 +0,0 @@ - | - +---+ +-------------------------------+ +---+ +---------+ +---------------------------|-------------------------------------------------------------------------+ +-----+ - | | | | | | | | | | | | | - | +-----|---------+ +---------------------|---|-----|-------------|---------------------------|-------------------------------------------------------------------------+ | +-------+ - | | | | | | | | | | | | | - | +---+ +---------+ | | | | +-------------------------------------------------------------------------------------------------------+ A-+ +-----------------------+ - | | | | | | | | | | | | | | | | | | - | | | | | | +---------------------|-----|---------|-----------+ | +-----------------------------------------------+ | - | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | +---------|-----------|-------------------|---------------------|-----------------------------------------|-----------|-------------+ - | R | | | | | | | | | | | | | | | | | | | | - | | | | +-------|---------------------------|-------------|-----------|-------------------|---------------------|-------------+ +-----------|-----|-----|-----+ +-------+ - | | | | | | | | | | | | | | | | | | | | | | | | - | +---------|-------+ | | | | | +-|---------+ +-|---|-----+ | +-----------------|---------------------|-------+ | | +-|-----|-|---|-----------------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - +-------------------|-----|-|-|-------|-------|---------|-----+ | | | | | | +-----------------|---------------------------------------------|---------|---------|---|-----------+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-----+ +---|---|-----|---|-----------------|-----------------|-----------|-|-------------------------------------+ | | | +---------|-|---+ +-|---------------------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-+ | | | | | | | | | | | | | +---------------------|-----------------------------|-----|-------------------|-|---+ | | - | | | | | | | | | | | | | | | | | | | | | | | | - | +---------------------+ | | | | | | | | | +-|-----------------------------------------|-------|-------------------------|-|-------|-------+ +-+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +---------+ | | | | | | | | | | | | | | | | | | | | | | +---------------+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - +---+ | | | +-+ | | | | +-----+ | +-|---------------+ | | +-|-------|-------------------|-+ | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | W | | - +-------|-|-|-|-+ | | | | | +-------------|-------------------|-|-|-------|-|-------------------------------------|-----------|-----------------+ +-|-----------|-----------------+ | - | | | | | | | | | | | | | | | | | | | | | | | H | | | | | | | | | | | | - | | +-|-------+ | | | | | | | | | | | | | | +---------|---------------------|-------|-----|---------------------------------|-|---------------+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-----|-|---+ | | | +---+ | | +-|-----------------------|-----|-------+ | | | | | | | | | | +-|-|-------------+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | +-------------------|-------|-----|---------+ | | +---------------+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | +-+ | | | | | | | | +-------------|-----------------|-+ | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | +-----------------------------------------|-----|-------|---------|---------|-----------+ | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-|-|-|-+ | | | | +-|-|-------|-------------------------------|-|---|-----|-|---------|---------|-----------|-------|-+ | | | | | | +-+ | | | | +-+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-|---------|-+ | +---------|-|---|-+ | | +-------+ +-------|-|---------|---------------------|-----------|-----------------------------------|---+ | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------------------------------------------|-----|-|-------|---+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | +---------|---|-----|-------------------------------------|-----------|---------------------|-|---|-|---------|-----|---------------|-----+ | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-----|-|---|-|-|---|-|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-|-|-|---|---|-|-|-------+ | | | | | +-----+ | | | | | | +---------------------+ | | | | | | | +-------------|-|---------|---|-----------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | +-----------|-----------------------|-|---------------------|---------------------|-----------+ +-----------|---------+ | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - +-------|-|-|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|---|-+ | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-------+ | | | | | | | | | +---------|-------------------------------+ | | | | | | | | | | | | | | | | | | | | | | | +---+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +-|-|-----|---|-|-|-|-------------------------------------|-|-------------------------------|---------|-|-|-----|-|-------------+ | | | | | | | +-------------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - +---------|---+ | | | | | | | +-----+ | | | | | | | +-|-|-------------------|---------|---|-----|---|-----|-----------------------+ | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | +---|---------------------------------------|---+ | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +-----|-|---------|-|---------------|-----------------------|-|---------|-|-|-------------------|-+ | | | | | | | | | | | | | | | | | | +-+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - +---------------|-----|---------------|---|---|---------+ +-----+ | | | +-----|-|-------|-+ +---------------|-|-|---|-|---------|---------------------|-|-----------|-----|-----|---|-+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +-|-------|-|---|---|-------|---------|-------------------|-|---------|-------------------------------|-----|-|-|-|---------------------------|---------|-----|---|-----|-+ | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +-|---|---|-|-+ | | | +-----|-|-------|---------------------|-+ | | | +-----------|-------|---------|-|-----|-|-------|-------+ | | +-+ | +-|-|-----|-+ | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +-+ | | | | | | | | | | | | | | | | +-----|-----------------|-|---|-----|-----------|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | U | | | | | | | - | | | | | | | | | | | | | +-----|-|-------|-----------|-----------------------------------------|---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | +-----|-|---|-|---|-----|-----------|-----|-------|---|-|---|-|-|-----------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---|---|-|-----------|---|-|-|-------|-|-----|-------|-------------------|----------------E--+ | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | +-------|---|---------------|-------|-----|---+ | | | +-|-------|---|-|-|---|-|-|-----------------------------|---|-----|-----|-------+ +---|-------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | +---|---|-|-|-|---|---|-----|---------------------------|-|-------|---|---+ | +---|---|-|-------|-----|-|-+ | | | +-----+ | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +---|-|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|-----------------------------|-|-|---------------|-------|-----|---+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | +-----------------|-----------|-----------|-----------------------|-------|-|-|-----------------------+ | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | +---------------|-------------|---|---|-|---------|-|---------------|---|-|-----|-------------------|-----------|---|---|---------|-+ +-|-+ | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +---|-|-----|-----|---|---|---------|-|-----------------|---------------|-------------|-------------|-|---|---------|-----|-----------------------------+ | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---------|-----|-----|-----------------------------------|---|-|---|---------|-+ | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | +---|---------|-|-|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|---|---+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +-|-----|---|-|---|---|-|---------------+ | | +-|-------|-------|-----------+ +-|-|-|-|---|-------|-|---|---------------------|-------+ | | +---+ | | +-|-----|---+ | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +-----------|-|-|---------|-|---|---|-----|-|---------------|-----+ | | | | | +-|-|-----+ +-|-|-|---|-|---+ | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----|-+ | +-------+ | | +-----------|-|-------------------------+ | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | +---|---------+ | | +-|-|-|-------|-----|-|-----------|-------------|-|---|---|-----+ | | | | | | | | | | | | +---|---|-+ | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | N | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | +-|-----|---|-+ | | +-----|---|-------------|-|-------+ | | +---|---|-|-----|-----------------------------|---|-|--D|---|-----|---+ | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +---|---|-|-----|-|-|-|-----|-|---|-----------|-|-----|-|-----|-|-----|---|-------|---------------|-------|-|---------|-------------------|---------|-----|---|---|-|---|-----|---|-+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | +-------|-|-----|-|-|-----------|-|-+ | | | | | | | | | | +-------|---------+ | | | | | | +-------+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +-------|---+ | | | | | | | | | | | | | | | | | | | | | | | +-+ +-|-----|-----|---+ | | | | | | +-------|---------|---------+ | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +---|-------+ | +-----------|-------|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---|---+ | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +-|-|-----|-------|-|-|-----|-----------|-+ | | | | | | | | +-|-------+ | | +---------------+ | +-+ | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +---|-----------|-------|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---|-------------|---+ | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +---|-------|-----|---|-------------|-|---|---|---------|---|---|-|-----+ | | +---------|-|---|-|-----|-------------------|-------|-------+ | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | +---|-|-----|---------------|-|---------|---|---|---------|-|---------------------|-----|---|-------+ | | | | | | +-|---|-+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----|-------+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | +-|-------|---|---|---|---------|-----+ | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +-|-+ | | | | | | | | | | | | | | | | | | | | | | | | +-----------------|-----|---------|-----------------------------|---------|-------------|---|-|---|-|-----+ | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----------------|-------------|---------|-----+ | | +---------------|---|---|-+ | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +-------------|-|-|-----|---|---|-|-|---------|---|---------|---------------------------|-----|-----|---------|---------|-------------------|---------|---------+ | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +---------|-+ | +-----|-|-|---|-|-|---+ | | | | | | | | +---------------------------|-------------------|-------------+ +---------|----------Y--+ | | | | +---|-+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | +-|---|-----------|---------|---------|---|---------|---|-----+ +---|-|-----|-----|---------+ | | +-----------------------------+ | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | +-----|-|-----|---|-------|-|---|-----|-----------------------------|---------------------------------|---|-------------------------------------|-----+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | +-|---|-------|-------|-|-----|---|-----|---------+ | | | | +-------------+ | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-|---|-------|-------|---|-----|-|-------|-|-|-|---------------|-|-----|-----|---------------|-|-----------|-------|-----------|-------------|---|-----------|-------------------------------+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +---------|-------|---|-|-|-|---------|-|-----|---|-----|---|---|-----------------|---|-------------|---------------+ | | | | +-+ | | | +-+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-|-|---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | +---|-----------------|---------------------------------------------|---+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | +---+ | | | | +---+ | | | | | | | +---|-----------+ | | | | +-+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +-|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----------|-|---+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-|---|-------------|---|---|-|---------------+ | | | | | | | | | | | | | | | +---|-----------------|-----+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | +-------|-----|-|-|---|-|---+ +---|-|-------|-|---------|-|-----------|---------------|-|---+ | | | | | | | | +---|-------|-+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-+ | | +-|-----------|-|-----|---|---------+ | | | | | | | | | | | | | | | | +---------------|-----------------|-+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | +---|-|---|-|---|-----|-|-----------------------|---|-----|-------|-------|-----------|---------|-------------------|-----+ | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | +-----------------------------------|-----------+ | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +-----|-----|---|O------------------|-|---|-|---+ | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +-|---------------|-----|---|-----------|-----|-|---+ | | | | | | | | | | | | | +-----|-----|-----------+ +-----+ | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +-----------|-----+ | | | | | | | | | | +-----------|-----------|-------------------------|-----------------------------|-----------------|-------------------------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | +-------------|-------|-----|-|-|-----------------|-|-----------------------------------|-----|---|-----|---------|-----------------------------|-----------|---------------------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | +-----------------+ | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +-+ +-----+ +---------|-----|-------------------|-----------|-----------------+ | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +-----------+ | | +-|-|-----------|-----+ | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | +-|-+ | +-|-+ | | | | | | | | | | | | | | | | | +---|-----+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | +-----+ +---------|-----------|-------|---------|-------+ | | | +-+ | +-------------------------|-------------|---|-----------|---------------------+ - | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | +-----+ | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | +-+ | | | +-----------------------|-----------|-------|---------|-------+ +-|---+ +-----------+ | | | +-------------------------|-+ | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | - | | | +---|-------|-+ | | | | | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | | | - +-------|-------------|-------------|-------------------|---------|---------+ | | | +-----------|-----+ | | | | | | | - | | | | | | | | | | | | | | | | | | | | | | | | - +-|-+ | +---|-+ | | +-----------------|---------+ | +---------+ | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | - | +---+ +---------+ | +---------------------------------------+ | +---------------+ | | | | | | | +-------------------+ - | | | | | | | | | | | | | | | | | | - +-+ +-----+ +---------------------|---------|-----------+ +-------------------|-------------------------------+ +-+ | | | - | | | | | | | | | | - | +-------------------+ | | +-----------+ | - | | | | | | - +-------------------------------------------------------+ +---------------------------------+ +-------------------------------------------------------+ - diff --git a/2017/d20/ex1/ex1.py b/2017/d20/ex1/ex1.py deleted file mode 100755 index 887f911..0000000 --- a/2017/d20/ex1/ex1.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python - -import sys -from typing import NamedTuple - - -class Point(NamedTuple): - x: int - y: int - z: int - - -class Particle(NamedTuple): - pos: Point - vel: Point - acc: Point - - @classmethod - def from_str(cls, input: str) -> "Particle": - p, v, a = input.split(", ") - return cls( - Point(*map(int, p[3:-1].split(","))), - Point(*map(int, v[3:-1].split(","))), - Point(*map(int, a[3:-1].split(","))), - ) - - -def solve(input: str) -> int: - def parse(input: str) -> list[Particle]: - return [Particle.from_str(line) for line in input.splitlines()] - - def dist(point: Point, other: Point) -> int: - return sum(abs(a - b) for a, b in zip(point, other)) - - particles = parse(input) - orig = Point(0, 0, 0) - # Lowest acceleration will be closest to origin as time tends to infinity - # Same logic for velocity and position - closest_particle = min( - particles, - key=lambda p: (dist(p.acc, orig), dist(p.vel, orig), dist(p.pos, orig)), - ) - return particles.index(closest_particle) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d20/ex1/input b/2017/d20/ex1/input deleted file mode 100644 index d30ed99..0000000 --- a/2017/d20/ex1/input +++ /dev/null @@ -1,1000 +0,0 @@ -p=<1500,413,-535>, v=<-119,22,36>, a=<-5,-12,3> -p=<65,1223,-530>, v=<-14,-136,52>, a=<2,2,0> -p=<260,-387,800>, v=<49,14,-103>, a=<-13,4,4> -p=<429,726,462>, v=<-36,-36,-19>, a=<0,-6,-4> -p=<1705,-165,1331>, v=<-134,9,-104>, a=<-3,0,-3> -p=<341,693,-473>, v=<-28,9,-18>, a=<0,-13,10> -p=<2816,-2250,1464>, v=<-91,41,149>, a=<-4,6,-20> -p=<-1237,-1704,-531>, v=<47,125,35>, a=<1,-4,-1> -p=<-4828,-171,-447>, v=<86,8,-24>, a=<13,0,4> -p=<2553,3286,-5524>, v=<-128,45,41>, a=<3,-9,8> -p=<1065,8038,-3700>, v=<1,-87,17>, a=<-2,-10,6> -p=<1081,-4698,860>, v=<50,113,-43>, a=<-5,2,1> -p=<-4103,102,-7540>, v=<47,-37,137>, a=<5,2,6> -p=<2985,-3162,1516>, v=<40,65,-47>, a=<-8,2,0> -p=<8089,4886,-2404>, v=<-4,28,26>, a=<-15,-11,3> -p=<-188,492,143>, v=<29,78,-27>, a=<-2,-13,2> -p=<1556,2084,1247>, v=<-97,-115,-45>, a=<0,-2,-4> -p=<220,-404,-1241>, v=<-39,-2,0>, a=<3,3,9> -p=<-948,908,751>, v=<102,-16,-99>, a=<-5,-5,6> -p=<676,-2628,-1641>, v=<-8,52,59>, a=<-4,13,5> -p=<-1636,-204,2167>, v=<77,11,-77>, a=<3,0,-7> -p=<-92,-212,615>, v=<23,-65,37>, a=<-2,9,-9> -p=<660,1700,-1217>, v=<-75,-40,41>, a=<4,-8,4> -p=<2428,-284,1007>, v=<-143,-35,-30>, a=<-1,6,-4> -p=<2516,-3412,-577>, v=<-4,101,1>, a=<-18,13,4> -p=<-1551,-1873,-3487>, v=<29,-15,-125>, a=<1,4,13> -p=<-276,3805,-2229>, v=<-61,98,13>, a=<4,-12,3> -p=<-752,5811,1239>, v=<-12,-66,-19>, a=<2,-6,-1> -p=<-6736,1782,-13636>, v=<24,70,156>, a=<10,-7,14> -p=<1169,-819,2123>, v=<124,-81,-45>, a=<-9,6,-1> -p=<31,-1310,-640>, v=<-8,167,15>, a=<0,-9,6> -p=<-1895,-1544,878>, v=<68,76,-53>, a=<13,8,-3> -p=<2382,126,1908>, v=<-112,-6,8>, a=<1,0,-7> -p=<18,-3462,288>, v=<-1,81,13>, a=<0,5,-2> -p=<-1958,317,-1998>, v=<173,40,64>, a=<-7,-6,4> -p=<-818,507,-136>, v=<13,140,-14>, a=<3,-17,2> -p=<3362,-640,-138>, v=<-32,44,18>, a=<-16,-1,-1> -p=<50,-1351,303>, v=<-19,17,22>, a=<2,6,-4> -p=<896,-244,-2424>, v=<-123,-16,31>, a=<8,3,11> -p=<50,197,726>, v=<0,-12,8>, a=<0,0,-5> -p=<698,-2431,2949>, v=<2,77,-144>, a=<-4,6,-2> -p=<-202,-226,-21>, v=<14,97,-17>, a=<0,-9,2> -p=<-1363,998,168>, v=<50,-47,1>, a=<3,-1,-1> -p=<2039,476,1554>, v=<-101,115,0>, a=<-1,-15,-9> -p=<-2992,1664,-2190>, v=<150,-27,113>, a=<2,-7,1> -p=<-4132,2004,373>, v=<47,-37,18>, a=<11,-4,-3> -p=<-1694,2004,-2433>, v=<37,-97,68>, a=<3,1,3> -p=<-1326,-2320,-1835>, v=<33,103,78>, a=<2,0,0> -p=<-1027,1682,1247>, v=<-40,-47,-116>, a=<7,-2,5> -p=<-337,2234,534>, v=<14,-47,-1>, a=<0,-4,-2> -p=<2745,3016,-202>, v=<-24,-81,-29>, a=<-8,-4,3> -p=<-1343,-3402,1983>, v=<99,84,-43>, a=<-2,13,-8> -p=<-272,1460,1303>, v=<-72,-31,-111>, a=<10,-6,4> -p=<1377,-2348,130>, v=<-52,67,21>, a=<-3,8,-3> -p=<2482,1409,1371>, v=<-135,-100,-7>, a=<-1,2,-8> -p=<136,-3334,-2879>, v=<-15,134,108>, a=<1,7,7> -p=<-2754,-614,-873>, v=<74,1,-55>, a=<10,4,12> -p=<136,950,-431>, v=<-6,17,27>, a=<0,-8,0> -p=<272,-1940,-1502>, v=<-5,142,45>, a=<-1,-3,5> -p=<952,-1532,-2743>, v=<-54,-26,118>, a=<0,13,5> -p=<646,4570,-4911>, v=<-54,-65,-31>, a=<2,-4,10> -p=<-7837,3193,-5948>, v=<73,-77,17>, a=<9,-1,9> -p=<1666,3686,6547>, v=<21,-109,-53>, a=<-4,0,-8> -p=<-1731,-1228,580>, v=<163,24,-58>, a=<2,18,0> -p=<399,422,-2410>, v=<-6,-42,197>, a=<-6,0,8> -p=<7537,-5727,-3546>, v=<-129,57,14>, a=<-12,12,9> -p=<-6802,2710,-6328>, v=<58,-11,67>, a=<15,-7,13> -p=<-2616,-3153,1771>, v=<32,120,-15>, a=<5,0,-4> -p=<1804,1046,5307>, v=<-84,-55,-70>, a=<1,1,-10> -p=<2233,-2321,445>, v=<-60,61,-18>, a=<-2,2,0> -p=<2193,-2574,-5336>, v=<-77,45,38>, a=<1,1,5> -p=<3090,1248,319>, v=<80,-33,13>, a=<-8,0,-1> -p=<4299,-1209,-8807>, v=<-111,-70,47>, a=<0,5,9> -p=<6288,-1092,-227>, v=<18,7,47>, a=<-9,1,-2> -p=<-6426,-4992,-1943>, v=<84,-53,111>, a=<4,9,-3> -p=<-5880,-10491,-4751>, v=<90,48,63>, a=<3,11,3> -p=<6210,-8463,670>, v=<-80,76,-176>, a=<-4,7,8> -p=<384,-1868,1875>, v=<-17,72,-18>, a=<0,0,-4> -p=<5376,-672,913>, v=<-47,-1,-35>, a=<-12,2,0> -p=<4856,4489,783>, v=<-27,-24,-57>, a=<-12,-11,2> -p=<-3100,1070,-946>, v=<-18,13,23>, a=<10,-4,1> -p=<-786,-5534,1420>, v=<1,132,-41>, a=<2,6,-1> -p=<2659,-2297,692>, v=<-91,21,95>, a=<-1,5,-9> -p=<-1514,-724,-2584>, v=<-79,1,-22>, a=<10,2,9> -p=<1426,-304,32>, v=<-145,-39,32>, a=<7,5,-3> -p=<1526,2846,-738>, v=<-129,-186,81>, a=<5,4,-4> -p=<356,-114,-2458>, v=<-18,-17,41>, a=<0,2,8> -p=<-719,-741,-2568>, v=<47,35,55>, a=<-1,0,6> -p=<1003,-342,3144>, v=<86,16,-30>, a=<-12,0,-11> -p=<1276,897,-2631>, v=<-59,-21,-8>, a=<0,-2,12> -p=<-1244,-426,-2862>, v=<39,97,69>, a=<2,-7,6> -p=<-530,708,603>, v=<-17,-56,-85>, a=<4,2,5> -p=<-2882,2724,-3114>, v=<-15,-20,81>, a=<14,-10,6> -p=<4552,-1035,624>, v=<-61,82,35>, a=<-14,-3,-6> -p=<2809,1317,-783>, v=<-33,-74,-41>, a=<-9,1,7> -p=<3229,1464,3417>, v=<-119,-81,-153>, a=<-3,1,-1> -p=<1321,1115,5088>, v=<62,70,-117>, a=<-8,-8,-5> -p=<3319,-2611,3711>, v=<-96,26,-80>, a=<-2,5,-4> -p=<916,-316,-744>, v=<7,-59,-41>, a=<-3,5,5> -p=<376,3302,-2526>, v=<-71,45,-87>, a=<4,-12,13> -p=<889,-181,687>, v=<-76,6,32>, a=<3,0,-4> -p=<-2594,-964,1281>, v=<-73,91,52>, a=<12,-4,-7> -p=<1240,3707,-5496>, v=<37,16,23>, a=<-6,-11,13> -p=<-3026,-2017,-4227>, v=<-29,60,-80>, a=<10,1,17> -p=<-5056,959,3746>, v=<34,-37,-136>, a=<13,0,-1> -p=<-7106,-3941,1596>, v=<77,3,-63>, a=<16,12,0> -p=<2194,-591,-3679>, v=<-48,25,31>, a=<-3,0,9> -p=<-2281,284,4771>, v=<131,-23,-47>, a=<-3,1,-11> -p=<5469,1859,-4929>, v=<-166,5,133>, a=<-4,-6,5> -p=<2194,3084,-1279>, v=<-100,-122,26>, a=<1,0,2> -p=<-3781,-1991,2496>, v=<61,42,-8>, a=<7,3,-7> -p=<-4606,-1641,6321>, v=<146,54,-70>, a=<3,1,-14> -p=<5994,2959,-3779>, v=<-148,-65,61>, a=<-7,-4,7> -p=<-1372,142,2651>, v=<63,-130,-5>, a=<0,11,-11> -p=<3101,-2693,3428>, v=<-51,115,-42>, a=<-9,1,-11> -p=<4382,3901,-1213>, v=<-167,-166,36>, a=<-4,-2,2> -p=<1862,-2084,3743>, v=<-80,130,-90>, a=<-1,-3,-8> -p=<-395,-2026,-944>, v=<-2,132,-47>, a=<2,-3,9> -p=<-2675,554,-1744>, v=<28,-18,-28>, a=<10,-1,11> -p=<-1595,-5756,-104>, v=<163,119,37>, a=<-8,16,-3> -p=<-1795,2784,2936>, v=<-16,70,-52>, a=<10,-20,-9> -p=<-1135,-86,166>, v=<14,56,13>, a=<4,-5,-2> -p=<-3989,-76,-5091>, v=<30,65,138>, a=<11,-5,6> -p=<415,-892,1581>, v=<34,-1,135>, a=<-4,3,-16> -p=<-365,-28,-3327>, v=<179,-137,77>, a=<-13,11,5> -p=<2623,3740,-5691>, v=<-8,-94,38>, a=<-8,-5,16> -p=<-497,3020,-2283>, v=<-53,-14,96>, a=<6,-9,0> -p=<403,-904,1737>, v=<22,-13,66>, a=<-3,4,-11> -p=<1195,1460,489>, v=<-61,-74,-107>, a=<1,1,7> -p=<-2009,104,1245>, v=<35,145,24>, a=<4,-12,-6> -p=<-1493,1808,-5115>, v=<101,-76,89>, a=<-3,0,10> -p=<7013,6579,-435>, v=<60,-101,-18>, a=<-18,-7,2> -p=<-3403,-2597,3595>, v=<76,19,-100>, a=<2,4,-1> -p=<-2659,1216,-3752>, v=<-28,-136,-39>, a=<7,6,10> -p=<3200,-4240,2789>, v=<-41,136,6>, a=<-4,0,-6> -p=<3262,-5852,-3690>, v=<-75,28,55>, a=<-2,10,4> -p=<-6503,1836,1487>, v=<112,-12,16>, a=<6,-3,-4> -p=<-3589,8687,1859>, v=<98,-57,36>, a=<1,-14,-6> -p=<7381,-1966,-607>, v=<-29,67,22>, a=<-15,0,0> -p=<595,1659,379>, v=<25,77,33>, a=<-3,-9,-3> -p=<1717,347,26>, v=<-92,-79,34>, a=<-6,7,-5> -p=<-1611,659,2184>, v=<143,-40,-160>, a=<-3,-2,-1> -p=<599,958,988>, v=<-41,-84,-68>, a=<-1,1,-1> -p=<469,438,1638>, v=<-59,-72,-20>, a=<3,5,-15> -p=<1457,-2175,962>, v=<-142,122,-31>, a=<4,6,-6> -p=<-2131,-4,299>, v=<134,32,-106>, a=<4,-5,12> -p=<-1013,-563,1677>, v=<-29,-37,-86>, a=<15,11,-6> -p=<-1312,-563,-871>, v=<22,-23,68>, a=<11,9,0> -p=<677,1504,1495>, v=<-82,-126,-44>, a=<4,1,-10> -p=<-401,-354,-103>, v=<54,101,-37>, a=<-3,-12,8> -p=<787,-1531,-257>, v=<-90,70,31>, a=<3,11,-1> -p=<83,405,-4>, v=<-26,-40,8>, a=<3,0,-1> -p=<-654,1032,-598>, v=<-43,-73,-10>, a=<17,-4,11> -p=<160,273,491>, v=<45,50,-49>, a=<-10,-13,1> -p=<72,-2,-895>, v=<83,9,83>, a=<-15,-2,0> -p=<-797,-1311,-631>, v=<60,26,89>, a=<2,15,-5> -p=<1045,-1354,502>, v=<-56,11,-67>, a=<0,6,4> -p=<-1691,2294,1737>, v=<28,-101,38>, a=<6,-2,-13> -p=<1847,521,-3642>, v=<0,-89,36>, a=<-5,5,7> -p=<1307,1682,30>, v=<-78,-90,40>, a=<2,2,-3> -p=<5411,5192,-5181>, v=<-20,-94,-47>, a=<-13,-7,17> -p=<-1015,-3583,651>, v=<36,105,-25>, a=<0,2,0> -p=<-1196,-512,-1809>, v=<89,-65,105>, a=<0,15,5> -p=<-91,125,102>, v=<-24,40,28>, a=<4,-7,-5> -p=<-1495,996,453>, v=<77,-41,-55>, a=<5,-5,3> -p=<-299,-1500,-1042>, v=<-43,123,-17>, a=<9,-1,14> -p=<1651,-1448,453>, v=<-32,-14,-55>, a=<-14,18,3> -p=<-520,-668,-1289>, v=<-19,10,86>, a=<8,6,2> -p=<-728,632,635>, v=<158,-27,-55>, a=<-15,-3,1> -p=<0,671,1103>, v=<18,-93,-84>, a=<-3,6,0> -p=<-975,1126,869>, v=<65,-37,-157>, a=<1,-7,13> -p=<-6957,4124,-167>, v=<90,-6,95>, a=<10,-9,-6> -p=<-1592,180,4560>, v=<10,-80,37>, a=<3,5,-13> -p=<1482,4849,906>, v=<-36,29,-47>, a=<-1,-13,1> -p=<-1360,-690,732>, v=<-103,10,4>, a=<10,1,-2> -p=<-4811,-5011,471>, v=<31,-21,-17>, a=<9,13,0> -p=<-8262,586,4647>, v=<195,56,-101>, a=<6,-5,-4> -p=<-5594,10214,2588>, v=<148,-66,0>, a=<3,-19,-6> -p=<10593,874,-5911>, v=<-83,109,43>, a=<-14,-8,8> -p=<1419,-9455,-6637>, v=<161,133,48>, a=<-12,9,9> -p=<-3333,280,128>, v=<33,25,-21>, a=<4,-2,1> -p=<-3069,-8300,722>, v=<8,13,-39>, a=<5,14,1> -p=<5973,2029,-3469>, v=<-113,40,20>, a=<-4,-6,5> -p=<-667,2909,-4429>, v=<21,-20,-131>, a=<0,-5,18> -p=<758,1919,5456>, v=<20,44,-11>, a=<-3,-7,-11> -p=<5818,2323,4262>, v=<-79,-70,-68>, a=<-16,-3,-11> -p=<417,-823,-875>, v=<-52,-65,39>, a=<3,9,0> -p=<-2179,-1098,5648>, v=<20,28,-131>, a=<7,2,-11> -p=<681,-944,-523>, v=<5,21,0>, a=<-3,2,2> -p=<-1387,-614,2832>, v=<84,-69,-62>, a=<-2,8,-5> -p=<-628,-1672,3200>, v=<39,13,-66>, a=<-1,5,-6> -p=<522,-3466,49>, v=<-59,55,-13>, a=<3,8,1> -p=<-2537,2146,-227>, v=<-34,51,47>, a=<12,-12,-3> -p=<-582,1295,739>, v=<-47,-32,-67>, a=<6,-2,3> -p=<-610,2649,-2932>, v=<-30,8,52>, a=<5,-11,7> -p=<2525,-607,-3460>, v=<0,-51,76>, a=<-10,7,7> -p=<-577,790,819>, v=<-43,-34,-38>, a=<6,0,0> -p=<3020,2363,-105>, v=<35,-48,27>, a=<-15,-5,-2> -p=<292,163,368>, v=<21,52,-29>, a=<-3,-5,1> -p=<1436,691,-3196>, v=<-31,-110,64>, a=<-3,7,7> -p=<-2007,1439,2766>, v=<91,63,46>, a=<0,-11,-15> -p=<-71,-1146,-2965>, v=<26,77,42>, a=<-2,-2,8> -p=<-3646,2451,-336>, v=<85,63,-20>, a=<7,-15,3> -p=<-730,-1186,2066>, v=<-2,27,-64>, a=<5,5,-6> -p=<3503,-1679,77>, v=<-107,74,-1>, a=<-11,3,0> -p=<2007,-2053,-1368>, v=<-10,168,66>, a=<-12,-5,2> -p=<-543,-387,570>, v=<68,-92,33>, a=<-4,13,-7> -p=<-203,378,2763>, v=<30,-128,-96>, a=<-2,12,-7> -p=<-560,2758,3647>, v=<33,-97,-121>, a=<0,-7,-10> -p=<-577,38,-280>, v=<43,-54,-25>, a=<-1,6,5> -p=<-3161,-802,-1532>, v=<86,26,29>, a=<6,1,4> -p=<-1565,-1096,2731>, v=<43,84,-119>, a=<3,-3,-1> -p=<-158,395,295>, v=<9,13,-25>, a=<0,-3,1> -p=<-1376,143,6469>, v=<-32,-96,-154>, a=<9,8,-14> -p=<73,4238,1513>, v=<-13,-159,-39>, a=<1,-4,-3> -p=<73,1592,1891>, v=<9,-121,53>, a=<-1,4,-13> -p=<703,-2314,1282>, v=<-32,-23,-105>, a=<0,12,4> -p=<-2888,-3826,-2603>, v=<29,-6,14>, a=<10,17,10> -p=<-956,-1789,3361>, v=<25,62,-39>, a=<2,2,-11> -p=<4714,-1600,1345>, v=<-3,119,2>, a=<-20,-4,-6> -p=<-341,-1584,886>, v=<9,82,2>, a=<1,0,-5> -p=<1027,-3104,-1508>, v=<-103,72,88>, a=<5,9,-1> -p=<628,12,1760>, v=<58,38,-144>, a=<-9,-4,5> -p=<-4084,1342,1000>, v=<116,-52,56>, a=<10,-2,-11> -p=<1388,1418,1817>, v=<38,-6,-107>, a=<-11,-7,1> -p=<1654,487,-4453>, v=<-66,-87,53>, a=<-2,6,18> -p=<632,-186,-1501>, v=<-10,45,26>, a=<-3,-4,7> -p=<-1204,-662,-753>, v=<71,-44,144>, a=<0,9,-11> -p=<-1051,1174,-566>, v=<-1,37,-2>, a=<7,-12,4> -p=<1975,1548,-2657>, v=<-17,-75,94>, a=<-11,-2,7> -p=<-3040,1548,-532>, v=<80,-75,-13>, a=<11,-2,5> -p=<-2037,-3416,-1705>, v=<48,172,47>, a=<8,3,6> -p=<1397,2721,233>, v=<-91,-99,59>, a=<1,-7,-8> -p=<-727,94,-946>, v=<24,-36,94>, a=<0,2,-4> -p=<1328,6919,-7711>, v=<-29,-93,180>, a=<-1,-9,5> -p=<4628,-191,-2656>, v=<-77,51,-4>, a=<-5,-3,6> -p=<4808,5914,614>, v=<10,18,-20>, a=<-11,-14,0> -p=<668,-8816,2699>, v=<-131,137,-74>, a=<7,10,-1> -p=<2978,-101,-721>, v=<9,-14,-84>, a=<-7,1,7> -p=<413,3334,1529>, v=<-45,73,58>, a=<2,-12,-7> -p=<-3442,-56,6539>, v=<68,0,-140>, a=<3,0,-5> -p=<1039,1335,128>, v=<-56,-75,-89>, a=<0,0,9> -p=<1174,2631,1478>, v=<-73,-90,-12>, a=<1,-6,-7> -p=<31,-1257,803>, v=<-95,-7,-3>, a=<10,8,-4> -p=<958,-1167,1613>, v=<53,140,-86>, a=<-11,-8,0> -p=<-1049,1335,839>, v=<41,-113,-81>, a=<2,4,4> -p=<-2219,-141,-295>, v=<30,7,134>, a=<10,0,-12> -p=<-1967,2550,2585>, v=<54,0,-45>, a=<6,-15,-10> -p=<-891,-3575,2084>, v=<62,43,-121>, a=<-2,7,3> -p=<-293,1326,-1465>, v=<93,-51,-79>, a=<-6,0,10> -p=<3698,-2262,-2687>, v=<-74,33,-32>, a=<-5,4,10> -p=<162,3224,-3896>, v=<89,-16,55>, a=<-7,-8,7> -p=<-3556,-611,-2219>, v=<151,-44,85>, a=<-1,5,0> -p=<1202,-1443,-5092>, v=<-32,69,128>, a=<-1,-1,5> -p=<6168,-1261,1967>, v=<-88,62,5>, a=<-11,-1,-6> -p=<-8173,10133,282>, v=<170,-53,9>, a=<4,-14,-1> -p=<-4688,-2923,333>, v=<155,-54,-10>, a=<-1,8,0> -p=<-4263,6393,2390>, v=<55,-48,-18>, a=<4,-8,-3> -p=<-472,1259,12743>, v=<31,68,-95>, a=<-1,-6,-16> -p=<-2308,-9910,2645>, v=<50,-6,-8>, a=<1,17,-4> -p=<-2002,-8346,11910>, v=<-29,-52,-53>, a=<5,17,-17> -p=<-489,-6459,-398>, v=<119,85,99>, a=<-6,6,-5> -p=<2418,-1512,-10785>, v=<51,-8,2>, a=<-7,3,18> -p=<-3226,-7547,4940>, v=<7,117,-58>, a=<5,6,-5> -p=<-1883,-2362,1829>, v=<-50,52,-54>, a=<6,1,0> -p=<-104,-2146,-706>, v=<-47,82,78>, a=<6,5,-4> -p=<-3300,149,1538>, v=<-3,19,-36>, a=<22,-3,-6> -p=<865,2121,-1335>, v=<-59,-115,-56>, a=<1,-1,15> -p=<491,-2350,-145>, v=<-37,13,117>, a=<1,14,-12> -p=<-2042,2835,892>, v=<157,-67,-16>, a=<-4,-11,-4> -p=<259,-985,2750>, v=<-92,-12,-33>, a=<7,5,-8> -p=<798,1072,2783>, v=<56,-2,-23>, a=<-8,-4,-9> -p=<-4691,225,1276>, v=<41,2,-35>, a=<15,-1,-2> -p=<2125,2739,2007>, v=<-41,-42,-41>, a=<-1,-2,-1> -p=<-885,-3946,-5588>, v=<45,41,-22>, a=<-1,4,10> -p=<4085,6519,-1808>, v=<-115,12,-40>, a=<0,-11,5> -p=<-2999,-2892,7364>, v=<61,-50,-88>, a=<3,10,-11> -p=<7731,2937,-31>, v=<-84,-56,47>, a=<-12,-3,-3> -p=<-911,-4110,2782>, v=<4,67,-5>, a=<2,5,-6> -p=<-4217,2328,839>, v=<-17,-80,-88>, a=<11,0,4> -p=<-1491,-340,2115>, v=<84,-138,-12>, a=<-2,10,-4> -p=<5092,2966,2376>, v=<22,-72,-126>, a=<-13,-2,3> -p=<-1250,-4251,-7477>, v=<-64,15,41>, a=<5,5,8> -p=<4792,5743,2707>, v=<11,-53,-71>, a=<-7,-5,0> -p=<-6703,-2826,-2100>, v=<21,-3,-81>, a=<8,4,7> -p=<-4032,-444,5776>, v=<55,-6,-144>, a=<10,2,-9> -p=<-3204,177,-1147>, v=<79,51,-59>, a=<5,-5,9> -p=<3305,-2054,141>, v=<-60,40,-7>, a=<-7,4,0> -p=<890,3581,3637>, v=<-15,-25,-135>, a=<-2,-11,-2> -p=<1842,1039,-3622>, v=<-84,-48,28>, a=<0,0,12> -p=<1886,775,-3303>, v=<29,-13,25>, a=<-10,-2,11> -p=<2898,3558,1548>, v=<-109,-59,0>, a=<-2,-9,-6> -p=<632,-644,1779>, v=<-52,86,-91>, a=<2,-5,1> -p=<-358,-1260,2505>, v=<-53,-24,-55>, a=<6,7,-5> -p=<1578,1567,3572>, v=<-3,-72,-23>, a=<-6,0,-12> -p=<-3614,-347,3033>, v=<141,15,13>, a=<2,0,-13> -p=<1105,-6221,129>, v=<-39,167,30>, a=<-1,10,-3> -p=<5076,2315,-311>, v=<-139,-106,-65>, a=<-8,0,7> -p=<2727,-1894,-1187>, v=<-64,98,42>, a=<-8,0,2> -p=<-579,6,-3543>, v=<-20,-12,166>, a=<5,1,2> -p=<2404,709,-1890>, v=<3,61,-61>, a=<-13,-10,16> -p=<1150,-602,390>, v=<-51,20,-31>, a=<-1,1,1> -p=<143,-1704,1701>, v=<42,138,-60>, a=<-5,-5,-3> -p=<2708,-1381,694>, v=<17,1,-17>, a=<-16,7,-2> -p=<979,-1039,-3391>, v=<-62,83,118>, a=<1,-3,6> -p=<2622,993,1733>, v=<-122,-103,-97>, a=<-1,5,1> -p=<312,-1597,2523>, v=<4,-26,-42>, a=<-2,10,-8> -p=<-538,-2877,-517>, v=<-27,59,-16>, a=<5,8,4> -p=<-1462,-3479,-1080>, v=<78,157,0>, a=<1,5,7> -p=<425,-725,433>, v=<30,67,-71>, a=<-6,-3,5> -p=<-1972,-1864,586>, v=<126,8,10>, a=<-1,11,-5> -p=<-1513,-1575,620>, v=<-9,18,-37>, a=<11,8,0> -p=<-119,873,-2491>, v=<26,-18,110>, a=<-2,-4,4> -p=<748,652,518>, v=<-61,22,-40>, a=<2,-7,1> -p=<2584,-2646,-859>, v=<-115,54,104>, a=<-4,11,-6> -p=<-221,-1116,-2304>, v=<86,72,117>, a=<-8,-1,2> -p=<3757,108,-26>, v=<-94,-72,82>, a=<-14,7,-9> -p=<-455,484,-1995>, v=<-55,68,32>, a=<6,-7,4> -p=<3073,-1724,-2607>, v=<-152,85,20>, a=<2,-1,7> -p=<-7043,-5420,5289>, v=<82,89,-84>, a=<17,11,-11> -p=<3505,1096,513>, v=<-170,-45,-85>, a=<2,0,5> -p=<-431,-920,-987>, v=<44,64,115>, a=<-2,-2,-6> -p=<-8771,2980,-723>, v=<179,-86,104>, a=<15,-3,-6> -p=<-923,1264,561>, v=<-98,48,-87>, a=<11,-8,5> -p=<-11,1792,-2019>, v=<39,-49,33>, a=<-3,-2,4> -p=<-435,1273,-382>, v=<-7,-121,-13>, a=<6,3,6> -p=<-461,571,411>, v=<37,17,-67>, a=<0,-9,5> -p=<1034,1481,255>, v=<-50,-102,64>, a=<-4,-2,-12> -p=<1109,-1211,-3947>, v=<-98,-108,-91>, a=<4,11,17> -p=<920,895,-3731>, v=<49,-18,-71>, a=<-6,-1,15> -p=<-1672,-185,-2813>, v=<-65,50,-63>, a=<9,-3,12> -p=<-4291,-4721,454>, v=<-38,36,-2>, a=<14,10,-1> -p=<3512,2596,-329>, v=<-103,-95,55>, a=<-2,0,-3> -p=<2162,-2642,1885>, v=<-193,71,57>, a=<8,2,-9> -p=<2438,-3105,2240>, v=<-85,122,13>, a=<0,-1,-6> -p=<-2086,723,4154>, v=<-34,110,-38>, a=<7,-9,-7> -p=<3424,4377,-1298>, v=<-59,-31,-45>, a=<-4,-8,6> -p=<550,-910,-2884>, v=<60,11,-17>, a=<-8,3,14> -p=<1264,1022,203>, v=<-139,-92,-54>, a=<7,4,4> -p=<1306,2576,1589>, v=<-20,-78,12>, a=<-4,-4,-8> -p=<1474,917,-28>, v=<5,1,155>, a=<-7,-4,-14> -p=<-605,1967,1379>, v=<-17,-115,-110>, a=<4,2,4> -p=<-2999,707,1316>, v=<163,-55,-52>, a=<-2,2,-1> -p=<-2124,85,1333>, v=<-76,97,-1>, a=<19,-10,-7> -p=<-2865,674,-985>, v=<43,-54,-19>, a=<11,2,7> -p=<-699,845,-4215>, v=<-21,-3,121>, a=<6,-4,10> -p=<1182,-1796,-1308>, v=<-30,66,88>, a=<-3,3,-2> -p=<-53,2080,1884>, v=<-75,-48,-100>, a=<8,-6,0> -p=<1828,-1245,1675>, v=<-74,-23,-19>, a=<-2,9,-7> -p=<1790,2859,3784>, v=<38,-109,-110>, a=<-13,-4,-9> -p=<-3245,1909,1751>, v=<143,1,27>, a=<3,-10,-12> -p=<1279,-4391,-2768>, v=<118,19,6>, a=<-13,12,8> -p=<1079,2259,4932>, v=<-4,-91,-68>, a=<-3,0,-10> -p=<3109,1104,4379>, v=<-46,-43,-174>, a=<-6,0,0> -p=<-1866,-2221,-1021>, v=<23,51,16>, a=<4,3,2> -p=<609,-2071,-3171>, v=<41,58,63>, a=<-5,2,5> -p=<3634,1004,2654>, v=<-54,-117,12>, a=<-7,6,-9> -p=<-716,5304,-171>, v=<-10,-94,-31>, a=<3,-9,3> -p=<4930,-4950,-2256>, v=<-35,96,91>, a=<-9,5,-1> -p=<-928,4214,1891>, v=<-28,-40,143>, a=<4,-7,-14> -p=<1682,1343,1456>, v=<-73,59,-82>, a=<1,-7,2> -p=<5394,-4660,-3677>, v=<-186,11,-70>, a=<0,10,13> -p=<-1740,2184,-1705>, v=<-30,-75,12>, a=<6,0,3> -p=<-2378,2851,-2894>, v=<67,-68,-7>, a=<1,-2,7> -p=<-2728,1792,2081>, v=<44,95,-69>, a=<3,-10,0> -p=<7382,-6773,-4144>, v=<-76,24,-32>, a=<-11,13,11> -p=<-6778,-1613,1556>, v=<117,-24,-36>, a=<7,5,-1> -p=<-1870,806,494>, v=<41,-29,-54>, a=<5,-1,3> -p=<360,946,2374>, v=<3,27,-22>, a=<-2,-7,-9> -p=<-1500,1016,-556>, v=<54,-29,72>, a=<2,-2,-4> -p=<870,696,2034>, v=<30,-76,-26>, a=<-7,4,-7> -p=<-390,-3464,644>, v=<-33,69,-51>, a=<5,10,2> -p=<-1180,1486,-476>, v=<17,0,68>, a=<4,-7,-4> -p=<1224,-754,1267>, v=<-14,55,-40>, a=<-10,0,-7> -p=<-1513,891,147>, v=<69,-115,25>, a=<5,7,-5> -p=<-1289,-292,868>, v=<53,97,-34>, a=<5,-10,-4> -p=<-1951,3305,-2253>, v=<-32,-17,79>, a=<7,-7,0> -p=<2123,-4535,1485>, v=<-47,31,47>, a=<-2,9,-7> -p=<-1237,3067,-6145>, v=<-14,-110,44>, a=<4,0,12> -p=<-2287,-1931,-111>, v=<9,170,46>, a=<5,-7,-3> -p=<-2940,427,-2488>, v=<53,-30,21>, a=<3,1,4> -p=<-4140,-203,4397>, v=<62,53,-7>, a=<5,-3,-9> -p=<-3240,-938,-3928>, v=<125,0,100>, a=<-1,2,2> -p=<4020,1147,-4738>, v=<-55,8,65>, a=<-5,-3,6> -p=<-1888,1962,-3057>, v=<-10,99,90>, a=<5,-11,1> -p=<838,1237,2279>, v=<-89,94,-109>, a=<4,-9,2> -p=<7044,-1547,1728>, v=<-153,70,-60>, a=<-6,-1,0> -p=<-3976,-1402,-1230>, v=<152,-10,-63>, a=<-1,4,7> -p=<-5484,-3461,-3840>, v=<69,136,117>, a=<8,-1,1> -p=<-1685,-4911,-4942>, v=<-2,81,170>, a=<4,6,0> -p=<-5861,831,5730>, v=<7,48,-3>, a=<13,-5,-13> -p=<2868,628,1148>, v=<-99,25,65>, a=<0,-3,-7> -p=<-1308,-4766,-4652>, v=<0,61,40>, a=<3,7,8> -p=<-1917,-1721,1699>, v=<-9,-59,-59>, a=<5,8,0> -p=<4897,-13852,5050>, v=<14,-6,-29>, a=<-7,18,-5> -p=<-836,-1606,-6416>, v=<41,-20,-35>, a=<-1,3,10> -p=<-9338,5648,-9068>, v=<-1,-6,73>, a=<12,-7,8> -p=<-7778,-9679,-2360>, v=<39,47,81>, a=<8,10,-1> -p=<7978,11537,6649>, v=<-25,-57,-30>, a=<-9,-12,-7> -p=<-8870,-3517,3022>, v=<-73,-71,63>, a=<15,8,-7> -p=<334,9821,682>, v=<51,67,-117>, a=<-3,-16,5> -p=<-378,289,-2545>, v=<-115,19,22>, a=<12,-3,9> -p=<672,184,2159>, v=<-66,123,-81>, a=<3,-12,-2> -p=<-2583,2620,-4456>, v=<23,7,58>, a=<9,-12,14> -p=<4662,1507,500>, v=<-135,-17,-57>, a=<-8,-5,3> -p=<-1533,2536,1403>, v=<39,-66,43>, a=<3,-5,-10> -p=<714,919,122>, v=<-68,-66,-39>, a=<3,2,3> -p=<21,-2588,-3931>, v=<53,-31,154>, a=<-5,14,3> -p=<1575,1255,1655>, v=<-65,-60,42>, a=<-1,0,-11> -p=<-2961,-404,-2818>, v=<184,30,101>, a=<-4,-1,3> -p=<-2961,1465,-3280>, v=<52,51,-9>, a=<8,-11,15> -p=<446,81,-335>, v=<-29,-42,-22>, a=<-2,6,8> -p=<193,510,-720>, v=<-6,-87,31>, a=<-2,7,5> -p=<-214,-2196,853>, v=<7,141,-28>, a=<2,10,-9> -p=<-49,48,-984>, v=<10,-21,1>, a=<-1,3,14> -p=<-1237,719,-621>, v=<82,-10,4>, a=<5,-9,8> -p=<-104,1709,171>, v=<63,-136,-50>, a=<-9,-3,5> -p=<611,-513,-1215>, v=<-38,0,82>, a=<-3,8,4> -p=<-1138,-1954,-742>, v=<1,125,21>, a=<17,9,7> -p=<1227,587,-841>, v=<-82,2,6>, a=<-5,-9,11> -p=<820,-1019,1414>, v=<-93,76,-109>, a=<3,3,-4> -p=<-2978,8304,-1519>, v=<30,-106,-23>, a=<5,-12,5> -p=<-2137,-889,5441>, v=<106,-74,-38>, a=<-2,7,-10> -p=<-629,5259,-533>, v=<69,-61,78>, a=<-3,-8,-4> -p=<10318,3176,-4795>, v=<-111,31,89>, a=<-11,-7,3> -p=<3246,4315,-2262>, v=<-78,-55,67>, a=<-1,-4,0> -p=<-2381,5199,2872>, v=<35,-11,126>, a=<2,-8,-12> -p=<6051,-6140,-2381>, v=<-38,60,-122>, a=<-8,7,11> -p=<-1925,445,1736>, v=<31,-85,-133>, a=<7,6,4> -p=<1571,-1683,3617>, v=<-43,57,-62>, a=<-4,3,-13> -p=<184,2003,-734>, v=<10,-97,-63>, a=<-2,-1,10> -p=<-1583,-3070,368>, v=<63,150,-1>, a=<2,1,-2> -p=<2255,-1550,1527>, v=<-79,-110,-72>, a=<-4,19,-1> -p=<-595,65,3256>, v=<51,-5,-203>, a=<-2,0,3> -p=<-766,2839,-1580>, v=<-35,-67,29>, a=<7,-7,5> -p=<-116,-2071,1060>, v=<48,63,-19>, a=<-4,4,-3> -p=<-3386,-2081,-1570>, v=<159,11,81>, a=<1,9,0> -p=<1604,1409,470>, v=<25,-48,-42>, a=<-10,-2,2> -p=<-3586,-511,290>, v=<64,6,51>, a=<11,2,-6> -p=<-596,429,-3420>, v=<-12,-20,58>, a=<4,0,11> -p=<704,539,1230>, v=<70,-78,-59>, a=<-10,5,0> -p=<3944,-4401,1840>, v=<-113,148,-16>, a=<-8,7,-7> -p=<-456,3089,1380>, v=<65,-69,7>, a=<-4,-8,-7> -p=<1714,1789,-780>, v=<-96,59,-53>, a=<1,-14,9> -p=<1943,-411,2163>, v=<0,20,-14>, a=<-16,1,-16> -p=<98,-1566,603>, v=<11,49,74>, a=<-2,7,-14> -p=<-502,-2541,-342>, v=<3,82,-95>, a=<4,11,15> -p=<263,-291,1473>, v=<72,12,-112>, a=<-11,1,2> -p=<1688,-381,-567>, v=<-143,-22,-40>, a=<4,6,10> -p=<-682,519,2883>, v=<23,-10,-118>, a=<3,-3,-9> -p=<383,744,-72>, v=<8,-1,79>, a=<-4,-6,-9> -p=<443,9,168>, v=<52,0,71>, a=<-10,0,-10> -p=<-1387,-2950,-247>, v=<115,110,-16>, a=<-4,6,3> -p=<-730,-1438,-2092>, v=<12,83,77>, a=<3,0,4> -p=<2276,695,-301>, v=<-22,-26,44>, a=<-11,-1,-3> -p=<628,-3534,-2913>, v=<-39,-38,186>, a=<1,15,-5> -p=<-140,1326,603>, v=<-107,-28,-23>, a=<9,-2,0> -p=<1480,-1650,2583>, v=<13,71,-43>, a=<-6,0,-5> -p=<-824,-366,-657>, v=<59,-20,-108>, a=<-2,3,11> -p=<1168,-426,-2625>, v=<1,20,74>, a=<-4,0,3> -p=<-260,2154,2079>, v=<-2,0,78>, a=<1,-7,-13> -p=<-128,2286,3579>, v=<55,32,-122>, a=<-4,-10,-2> -p=<-3812,1686,27>, v=<-29,-43,-24>, a=<15,-2,2> -p=<-33,-807,1257>, v=<-20,31,-83>, a=<4,4,-2> -p=<942,-1249,685>, v=<-67,79,-53>, a=<0,2,0> -p=<-423,-1119,191>, v=<-32,-15,-15>, a=<10,14,0> -p=<2772,-7072,-3749>, v=<-53,-94,34>, a=<-2,19,5> -p=<-3052,3008,5659>, v=<-3,-13,-128>, a=<6,-5,-3> -p=<2980,-11056,-2565>, v=<56,80,30>, a=<-9,16,3> -p=<4676,3696,7083>, v=<-162,-51,-90>, a=<1,-4,-8> -p=<-492,2224,379>, v=<82,-71,-62>, a=<-4,0,3> -p=<3332,-1264,8443>, v=<-54,104,-17>, a=<-3,-4,-15> -p=<-1196,11904,-3445>, v=<-28,-126,-25>, a=<4,-15,8> -p=<244,2096,8779>, v=<-7,65,22>, a=<0,-8,-18> -p=<-1502,113,127>, v=<3,-41,-53>, a=<12,4,6> -p=<-1112,233,-548>, v=<65,15,40>, a=<1,-4,0> -p=<73,-2377,-458>, v=<10,-3,42>, a=<-2,20,-1> -p=<-632,-1537,-188>, v=<-31,-3,48>, a=<9,13,-4> -p=<253,8,1267>, v=<14,-2,-57>, a=<-4,0,-3> -p=<-2342,-1792,517>, v=<67,54,1>, a=<11,8,-4> -p=<-1607,1193,37>, v=<2,-81,-103>, a=<13,0,13> -p=<-3302,-232,-2588>, v=<123,6,32>, a=<12,1,18> -p=<156,-333,2057>, v=<58,-71,-52>, a=<-6,8,-4> -p=<-75,969,-2017>, v=<25,-12,10>, a=<-2,-3,8> -p=<30,-4869,1469>, v=<-156,35,-46>, a=<14,18,-2> -p=<-3204,1200,-2374>, v=<86,-100,27>, a=<6,4,8> -p=<2907,1137,-2815>, v=<-18,24,26>, a=<-11,-7,10> -p=<-278,189,-3099>, v=<3,-12,51>, a=<1,0,11> -p=<-468,930,-2928>, v=<43,-21,102>, a=<-2,-3,5> -p=<-2045,-210,207>, v=<-44,-11,-23>, a=<15,2,1> -p=<596,4369,-420>, v=<-113,-42,0>, a=<8,-19,2> -p=<-829,-96,-1921>, v=<-8,13,129>, a=<5,-1,-3> -p=<2914,-780,1537>, v=<-85,29,7>, a=<-7,1,-9> -p=<667,-850,-181>, v=<18,13,-9>, a=<-5,3,2> -p=<952,404,3961>, v=<33,67,-117>, a=<-8,-9,-9> -p=<-4083,689,3182>, v=<58,-38,-36>, a=<16,0,-13> -p=<3669,2627,1586>, v=<-70,-20,-12>, a=<-12,-12,-7> -p=<1731,-204,-1549>, v=<-88,69,63>, a=<0,-6,2> -p=<-2525,366,1909>, v=<16,39,31>, a=<12,-6,-13> -p=<420,3862,-200>, v=<-19,-105,-18>, a=<0,-10,3> -p=<1256,-1382,-390>, v=<-63,61,-8>, a=<0,1,3> -p=<1284,1741,445>, v=<-113,-41,68>, a=<4,-8,-11> -p=<-780,885,885>, v=<-1,-47,-36>, a=<6,-1,-2> -p=<796,-1587,-731>, v=<-74,99,48>, a=<3,0,0> -p=<1036,-1859,1717>, v=<30,-3,-20>, a=<-11,14,-10> -p=<52,669,325>, v=<-2,9,-103>, a=<0,-6,10> -p=<1724,-2675,-379>, v=<-149,99,9>, a=<5,8,2> -p=<-3652,989,-435>, v=<136,-96,4>, a=<11,4,3> -p=<-660,-427,-1139>, v=<119,69,116>, a=<-9,-5,-5> -p=<-1054,-503,-2618>, v=<41,30,114>, a=<3,0,6> -p=<1594,2001,-10>, v=<-31,-16,19>, a=<-8,-13,-2> -p=<1946,-839,-2250>, v=<-121,-34,91>, a=<0,10,6> -p=<1882,-311,2262>, v=<-15,35,-55>, a=<-12,-2,-10> -p=<1642,1073,206>, v=<-51,-77,-54>, a=<-6,1,5> -p=<2154,817,326>, v=<-66,58,32>, a=<-8,-13,-6> -p=<-1726,2617,1662>, v=<100,-80,-43>, a=<1,-10,-7> -p=<-2662,2545,-130>, v=<48,-101,18>, a=<14,-7,-1> -p=<1799,2271,3676>, v=<-122,-39,-86>, a=<4,-3,-3> -p=<-7371,-5583,2892>, v=<133,82,-116>, a=<9,8,1> -p=<2107,-1761,246>, v=<-17,18,51>, a=<-4,3,-4> -p=<-4627,-1453,2738>, v=<122,94,-9>, a=<3,-3,-6> -p=<917,-1173,2164>, v=<69,-32,113>, a=<-7,5,-13> -p=<-2821,493,-5214>, v=<14,39,-15>, a=<6,-4,14> -p=<-497,3503,-5102>, v=<18,-141,126>, a=<0,1,4> -p=<-5789,1613,2206>, v=<149,-30,39>, a=<4,-2,-8> -p=<1855,-2881,2850>, v=<-153,87,-100>, a=<6,1,0> -p=<-1437,-2510,2378>, v=<3,51,-5>, a=<6,6,-10> -p=<-2256,871,-1654>, v=<-24,-33,0>, a=<12,-1,7> -p=<474,-746,-562>, v=<-22,-33,3>, a=<0,6,2> -p=<-998,-5851,-402>, v=<103,189,123>, a=<-5,10,-10> -p=<2902,-1171,-1782>, v=<-113,18,45>, a=<-3,4,4> -p=<-1268,1779,-372>, v=<1,-14,-57>, a=<6,-7,7> -p=<532,-2881,-402>, v=<121,30,18>, a=<-14,11,0> -p=<-1248,-3501,-3432>, v=<63,124,-9>, a=<0,5,17> -p=<-868,-531,-3632>, v=<44,49,43>, a=<0,-2,13> -p=<6474,-2376,-1510>, v=<15,-67,32>, a=<-14,9,1> -p=<-3136,-6375,-9105>, v=<85,-2,149>, a=<1,13,9> -p=<863,6614,1218>, v=<84,-37,-72>, a=<-7,-11,2> -p=<-966,197,7170>, v=<31,-150,-40>, a=<0,9,-12> -p=<-3446,-2655,6302>, v=<-33,38,-156>, a=<9,3,-3> -p=<4397,-3709,-1076>, v=<-62,56,-62>, a=<-5,4,6> -p=<-322,-1160,-2709>, v=<-31,16,88>, a=<6,6,8> -p=<2024,-2316,2510>, v=<-88,75,-39>, a=<-3,7,-12> -p=<-50,1118,1184>, v=<-56,-19,-24>, a=<7,-5,-5> -p=<-12607,-1099,3400>, v=<98,83,8>, a=<18,-3,-7> -p=<-783,-747,-6216>, v=<-24,-93,-71>, a=<3,7,16> -p=<-558,-2190,4022>, v=<61,-16,-43>, a=<-3,8,-9> -p=<-4358,-540,-6053>, v=<18,100,87>, a=<12,-6,12> -p=<2642,2960,-1303>, v=<-41,-1,53>, a=<-5,-9,0> -p=<-1408,1010,6972>, v=<-48,-40,-187>, a=<8,0,-7> -p=<-1433,-5540,-5403>, v=<135,66,74>, a=<-6,12,11> -p=<217,-4115,2747>, v=<-35,126,-70>, a=<2,3,-3> -p=<1792,5685,-2253>, v=<97,-71,91>, a=<-13,-12,0> -p=<-158,1210,172>, v=<71,121,111>, a=<-5,-13,-9> -p=<-858,-3615,-3303>, v=<-18,15,159>, a=<4,10,-2> -p=<-6083,-5215,-1353>, v=<61,14,55>, a=<14,15,0> -p=<1908,1058,-75>, v=<60,-95,57>, a=<-10,4,-4> -p=<907,4204,-4820>, v=<31,-81,-44>, a=<-5,-6,17> -p=<3637,-411,-2246>, v=<34,29,-35>, a=<-13,-1,9> -p=<1362,-4155,-283>, v=<54,11,-43>, a=<-8,11,4> -p=<4701,-9467,8834>, v=<-133,37,-37>, a=<0,13,-12> -p=<-5204,2713,-3871>, v=<6,31,2>, a=<8,-6,6> -p=<-2016,-470,-1992>, v=<-286,-72,-288>, a=<19,6,19> -p=<-2067,-2051,-1458>, v=<-296,-291,-207>, a=<20,22,10> -p=<-1027,-2595,-500>, v=<-147,-371,-71>, a=<8,27,7> -p=<-71,-3053,486>, v=<-10,-430,69>, a=<-1,33,-5> -p=<1668,359,-2327>, v=<238,50,-329>, a=<-15,-4,28> -p=<2009,537,-2278>, v=<284,76,-324>, a=<-14,-8,17> -p=<-773,2518,931>, v=<-112,357,135>, a=<5,-23,-5> -p=<411,802,2157>, v=<63,108,308>, a=<-5,-10,-21> -p=<-1874,107,2417>, v=<-266,18,347>, a=<12,-5,-26> -p=<2244,-2094,35>, v=<317,-298,9>, a=<-17,22,3> -p=<-1796,1907,1218>, v=<-255,270,175>, a=<20,-21,-10> -p=<-2128,1882,-1395>, v=<-311,268,-196>, a=<19,-16,11> -p=<1115,1844,-2272>, v=<159,260,-324>, a=<-4,-20,26> -p=<2896,560,152>, v=<414,77,25>, a=<-33,-8,1> -p=<2896,1485,547>, v=<413,210,80>, a=<-23,-14,-6> -p=<2936,-363,123>, v=<419,-49,19>, a=<-29,0,-2> -p=<1380,-388,-3156>, v=<197,-55,-448>, a=<-19,0,30> -p=<-240,-2621,-1687>, v=<-32,-368,-241>, a=<6,23,15> -p=<-2151,-239,1867>, v=<-310,-37,268>, a=<21,-4,-19> -p=<-2715,494,1671>, v=<-384,70,236>, a=<31,-3,-16> -p=<1594,442,2371>, v=<231,60,340>, a=<-13,-5,-25> -p=<-387,2027,1630>, v=<-55,284,232>, a=<-1,-21,-21> -p=<873,2025,1551>, v=<131,291,220>, a=<-8,-22,-16> -p=<-2969,370,26>, v=<-429,50,2>, a=<28,-5,-1> -p=<2798,897,-1992>, v=<400,125,-287>, a=<-33,-8,25> -p=<-1072,892,-2424>, v=<-153,127,-354>, a=<10,-5,23> -p=<1194,-2051,-1285>, v=<166,-290,-186>, a=<-13,25,16> -p=<-304,-2224,-1635>, v=<-39,-313,-229>, a=<7,22,16> -p=<498,1066,2607>, v=<74,151,370>, a=<-11,-12,-30> -p=<3622,401,268>, v=<514,57,32>, a=<-34,-4,-2> -p=<-1957,-506,-2453>, v=<-285,-66,-348>, a=<16,3,23> -p=<-1362,-501,-2102>, v=<-195,-65,-299>, a=<18,7,19> -p=<1933,1724,1334>, v=<279,246,189>, a=<-25,-21,-14> -p=<-2142,1260,-2152>, v=<-311,181,-314>, a=<22,-12,23> -p=<-347,-1371,-2579>, v=<-51,-196,-371>, a=<6,16,25> -p=<1083,2704,106>, v=<151,385,17>, a=<-12,-30,4> -p=<-2820,1697,811>, v=<-400,242,120>, a=<32,-16,-6> -p=<-1104,2720,-1534>, v=<-156,388,-219>, a=<11,-26,17> -p=<589,-751,2836>, v=<81,-108,406>, a=<-1,3,-27> -p=<-1067,-1168,2214>, v=<-152,-161,317>, a=<10,11,-22> -p=<-1207,-366,2703>, v=<-172,-52,381>, a=<17,3,-34> -p=<-1192,-3124,-321>, v=<-173,-452,-44>, a=<7,33,7> -p=<2232,-893,1778>, v=<319,-128,255>, a=<-22,9,-21> -p=<1871,-460,2230>, v=<269,-65,321>, a=<-17,4,-22> -p=<-2409,-753,795>, v=<-344,-106,113>, a=<20,4,-4> -p=<1280,386,-2672>, v=<181,53,-383>, a=<-8,-4,29> -p=<3029,1184,391>, v=<433,169,56>, a=<-25,-6,-2> -p=<1127,-737,2201>, v=<161,-105,311>, a=<-10,13,-20> -p=<-2639,-1118,-1104>, v=<-380,-159,-163>, a=<26,7,13> -p=<1096,258,3149>, v=<158,36,449>, a=<-7,1,-32> -p=<1163,2004,2321>, v=<166,283,330>, a=<-12,-25,-20> -p=<2115,-918,-1957>, v=<309,-131,-279>, a=<-20,13,18> -p=<-1432,1051,2016>, v=<-205,149,290>, a=<15,-10,-18> -p=<-1889,2232,-912>, v=<-271,317,-126>, a=<21,-19,3> -p=<-2217,1395,1388>, v=<-313,196,202>, a=<22,-17,-13> -p=<-1257,-704,-2330>, v=<-180,-100,-331>, a=<12,7,27> -p=<-1663,1076,-1905>, v=<-234,150,-270>, a=<16,-10,19> -p=<1327,1340,2125>, v=<189,195,302>, a=<-13,-11,-20> -p=<-1280,-739,-2082>, v=<-179,-107,-300>, a=<11,4,21> -p=<-1554,-998,2380>, v=<-222,-143,342>, a=<19,3,-27> -p=<679,-2132,2115>, v=<95,-305,299>, a=<-3,18,-22> -p=<-217,2813,-1020>, v=<-35,399,-142>, a=<3,-28,9> -p=<2867,-866,-1319>, v=<409,-125,-184>, a=<-28,5,10> -p=<-1320,1952,2228>, v=<-188,280,317>, a=<13,-20,-17> -p=<-1304,-1233,2264>, v=<-186,-174,319>, a=<17,12,-22> -p=<-2692,-721,-888>, v=<-382,-103,-129>, a=<20,3,9> -p=<-1976,-1554,-1752>, v=<-275,-218,-250>, a=<20,9,19> -p=<-1203,2819,-1294>, v=<-172,405,-185>, a=<11,-27,14> -p=<-2327,2241,449>, v=<-334,326,62>, a=<24,-24,-2> -p=<-2067,2050,1210>, v=<-295,297,169>, a=<20,-15,-7> -p=<1378,2394,527>, v=<190,344,70>, a=<-11,-22,-5> -p=<-1488,-2886,-992>, v=<-212,-413,-148>, a=<10,29,8> -p=<-1696,2898,-319>, v=<-245,413,-45>, a=<12,-28,2> -p=<3098,797,-510>, v=<440,113,-67>, a=<-32,-7,6> -p=<-2871,-578,-611>, v=<-410,-82,-88>, a=<24,5,5> -p=<1034,-1285,-2480>, v=<146,-185,-354>, a=<-10,15,22> -p=<879,1740,1198>, v=<122,246,168>, a=<-10,-16,-12> -p=<3168,1337,-308>, v=<448,191,-40>, a=<-31,-13,3> -p=<3035,-1149,893>, v=<434,-163,126>, a=<-27,9,-9> -p=<-947,-2705,656>, v=<-131,-387,93>, a=<8,25,-3> -p=<500,-2393,1363>, v=<77,-348,193>, a=<0,23,-8> -p=<-1882,1920,796>, v=<-268,272,115>, a=<19,-17,-3> -p=<-960,493,-2623>, v=<-139,68,-374>, a=<9,-8,21> -p=<1828,-2071,1203>, v=<259,-291,167>, a=<-18,21,-9> -p=<-1604,1283,-1649>, v=<-230,181,-239>, a=<18,-14,16> -p=<-1799,2321,-868>, v=<-252,330,-119>, a=<22,-21,8> -p=<-24,2346,-1669>, v=<-7,335,-243>, a=<4,-22,19> -p=<-876,-1276,2680>, v=<-123,-188,378>, a=<10,14,-26> -p=<-2889,1176,545>, v=<-415,168,80>, a=<32,-11,-7> -p=<-86,1176,2086>, v=<-12,168,300>, a=<-1,-7,-20> -p=<-402,-2477,807>, v=<-57,-353,119>, a=<4,27,-2> -p=<-1970,-1448,-1967>, v=<-278,-202,-283>, a=<19,12,24> -p=<631,-958,-2998>, v=<89,-136,-432>, a=<-8,10,33> -p=<-1785,1056,1545>, v=<-256,148,213>, a=<13,-15,-15> -p=<1676,1822,1043>, v=<241,263,147>, a=<-16,-17,-8> -p=<-56,2448,1580>, v=<-11,347,223>, a=<4,-24,-15> -p=<-2842,439,379>, v=<-406,66,54>, a=<31,-2,-4> -p=<-1293,1742,-1884>, v=<-183,246,-267>, a=<10,-13,18> -p=<-1336,2627,-1311>, v=<-197,379,-184>, a=<9,-23,12> -p=<-618,2160,-2253>, v=<-83,313,-321>, a=<9,-21,22> -p=<2734,-1738,-454>, v=<389,-247,-60>, a=<-27,17,8> -p=<-2927,-295,-97>, v=<-417,-40,-13>, a=<27,1,5> -p=<1538,-1987,-280>, v=<222,-283,-38>, a=<-13,18,5> -p=<-2076,1215,-363>, v=<-298,172,-53>, a=<18,-17,3> -p=<-2642,183,341>, v=<-377,19,50>, a=<23,1,-1> -p=<-31,2384,-1377>, v=<-5,337,-199>, a=<2,-26,11> -p=<771,690,-2686>, v=<116,98,-379>, a=<-15,-3,29> -p=<-68,-2134,-3000>, v=<-10,-301,-431>, a=<1,23,33> -p=<3022,1487,35>, v=<434,213,6>, a=<-31,-14,6> -p=<-402,-2383,-1800>, v=<-57,-340,-257>, a=<2,17,17> -p=<-1125,744,-2551>, v=<-156,106,-364>, a=<8,-3,25> -p=<705,2907,-863>, v=<100,411,-120>, a=<-4,-37,6> -p=<-303,-424,3358>, v=<-43,-57,481>, a=<9,0,-33> -p=<3065,-242,1553>, v=<438,-36,221>, a=<-28,-4,-15> -p=<211,3341,-1331>, v=<33,481,-190>, a=<1,-35,12> -p=<2309,1563,-21>, v=<333,218,-3>, a=<-21,-16,0> -p=<-1142,3233,737>, v=<-158,461,107>, a=<15,-32,-2> -p=<241,-3065,-706>, v=<32,-437,-101>, a=<-1,30,10> -p=<-1229,-1539,2489>, v=<-171,-212,353>, a=<14,15,-20> -p=<1664,132,-1899>, v=<236,19,-273>, a=<-18,1,15> -p=<-27,-599,2800>, v=<-2,-87,402>, a=<4,5,-30> -p=<-3022,842,-1427>, v=<-431,120,-204>, a=<26,-13,14> -p=<-2558,-862,-996>, v=<-362,-122,-135>, a=<28,11,7> -p=<1860,-1025,-2431>, v=<259,-143,-349>, a=<-21,13,24> -p=<2563,-1818,534>, v=<364,-258,82>, a=<-30,20,-8> -p=<614,-3055,-609>, v=<87,-431,-89>, a=<-6,27,2> -p=<-180,-3323,420>, v=<-22,-472,60>, a=<5,34,-2> -p=<1270,1194,-2769>, v=<182,168,-391>, a=<-14,-11,23> -p=<-89,-1147,-2030>, v=<-13,-165,-285>, a=<3,12,22> -p=<-159,-2746,874>, v=<-20,-391,128>, a=<3,27,-15> -p=<2942,694,778>, v=<423,104,112>, a=<-28,-5,-8> -p=<2937,775,238>, v=<418,118,30>, a=<-29,-7,1> -p=<-2889,-1216,-1522>, v=<-414,-176,-214>, a=<29,13,10> -p=<3108,-504,1282>, v=<440,-72,183>, a=<-37,6,-13> -p=<1404,-2482,-779>, v=<201,-356,-114>, a=<-15,21,11> -p=<-3135,1691,-457>, v=<-445,242,-63>, a=<33,-14,7> -p=<593,-560,-3030>, v=<85,-76,-433>, a=<-11,7,29> -p=<-1810,2667,339>, v=<-259,384,50>, a=<21,-28,-6> -p=<1361,2731,923>, v=<194,391,131>, a=<-13,-29,-11> -p=<-491,-1870,2097>, v=<-70,-259,295>, a=<4,12,-16> -p=<202,-3264,584>, v=<30,-464,83>, a=<-2,28,-4> -p=<-420,2323,-1657>, v=<-60,332,-233>, a=<5,-23,20> -p=<1630,-1018,1758>, v=<232,-143,246>, a=<-13,10,-17> -p=<1479,-2655,-951>, v=<213,-380,-135>, a=<-17,23,5> -p=<-1309,599,-2712>, v=<-191,85,-389>, a=<14,-3,26> -p=<-365,-1831,-3076>, v=<-52,-257,-439>, a=<1,18,28> -p=<-1572,-82,2148>, v=<-224,-6,308>, a=<11,1,-22> -p=<1951,839,-1829>, v=<275,120,-266>, a=<-16,-2,18> -p=<-462,-2306,1178>, v=<-67,-327,168>, a=<4,25,-9> -p=<-1355,-1176,2319>, v=<-189,-167,329>, a=<10,11,-23> -p=<-1609,846,1797>, v=<-226,121,262>, a=<23,-6,-17> -p=<-584,-214,2601>, v=<-80,-30,376>, a=<4,1,-26> -p=<-2998,-621,-215>, v=<-428,-88,-33>, a=<29,4,6> -p=<-2037,-2515,-628>, v=<-283,-362,-90>, a=<19,26,2> -p=<899,-825,3038>, v=<128,-123,434>, a=<-6,6,-32> -p=<1501,246,-2640>, v=<208,35,-377>, a=<-12,-8,23> -p=<-2606,-1301,775>, v=<-372,-185,112>, a=<22,12,-3> -p=<-1243,1236,2385>, v=<-182,172,337>, a=<11,-13,-21> -p=<759,735,-2578>, v=<111,105,-370>, a=<-4,-2,26> -p=<-2138,576,2315>, v=<-303,87,330>, a=<23,-6,-22> -p=<1450,-2184,-1592>, v=<206,-312,-226>, a=<-12,23,19> -p=<-1024,2357,1170>, v=<-146,332,164>, a=<10,-24,-11> -p=<1895,2547,-22>, v=<270,365,-8>, a=<-24,-25,0> -p=<2776,124,-668>, v=<395,18,-90>, a=<-24,2,9> -p=<-2599,104,474>, v=<-366,9,74>, a=<25,-6,-8> -p=<139,185,2854>, v=<20,28,406>, a=<-5,3,-30> -p=<2164,1455,-616>, v=<309,205,-89>, a=<-25,-15,3> -p=<1800,463,2549>, v=<256,66,367>, a=<-19,-4,-28> -p=<2538,-1430,344>, v=<361,-203,47>, a=<-28,15,-3> -p=<-9,2185,1710>, v=<-6,312,246>, a=<-4,-22,-15> -p=<-34,144,-3420>, v=<-4,13,-489>, a=<-3,-2,33> -p=<880,813,-2385>, v=<125,115,-339>, a=<-13,-7,18> -p=<1889,-2915,20>, v=<271,-421,0>, a=<-14,25,-2> -p=<1368,-1912,-679>, v=<198,-280,-95>, a=<-13,23,4> -p=<2464,756,-1235>, v=<351,108,-174>, a=<-18,-12,12> -p=<536,-896,2762>, v=<80,-124,398>, a=<-6,5,-29> -p=<-275,26,3405>, v=<-41,2,489>, a=<2,-3,-32> -p=<-691,2510,2012>, v=<-100,358,287>, a=<2,-24,-21> -p=<186,776,-2800>, v=<26,108,-398>, a=<-1,-9,31> -p=<48,-2765,51>, v=<6,-394,7>, a=<0,28,1> -p=<-1243,-2674,-621>, v=<-181,-387,-90>, a=<14,25,8> -p=<637,-2968,249>, v=<91,-432,37>, a=<-8,29,-2> -p=<-108,2644,-359>, v=<-15,377,-43>, a=<0,-25,1> -p=<311,2396,1647>, v=<46,341,238>, a=<0,-23,-19> -p=<2091,863,1991>, v=<300,123,281>, a=<-17,-8,-22> -p=<-1316,1419,1976>, v=<-183,204,279>, a=<13,-15,-21> -p=<57,-1973,2964>, v=<2,-281,424>, a=<-1,21,-29> -p=<-775,-2721,-1750>, v=<-109,-389,-247>, a=<13,28,19> -p=<731,1583,-2157>, v=<110,228,-314>, a=<-6,-15,22> -p=<-893,2775,-190>, v=<-126,396,-26>, a=<6,-27,2> -p=<367,-2679,-1080>, v=<51,-384,-154>, a=<-7,27,11> -p=<3177,-367,441>, v=<445,-51,64>, a=<-30,3,-5> -p=<-1647,-1342,2341>, v=<-240,-185,331>, a=<12,13,-23> -p=<986,-2763,1286>, v=<136,-391,185>, a=<-9,28,-9> -p=<-2802,-1225,252>, v=<-399,-180,31>, a=<26,13,1> -p=<175,2883,-1052>, v=<30,408,-150>, a=<-2,-31,13> -p=<-229,-2683,-1449>, v=<-28,-386,-211>, a=<7,28,14> -p=<2786,531,1110>, v=<398,77,157>, a=<-29,-8,-9> -p=<279,-2586,-2001>, v=<35,-371,-285>, a=<-2,27,20> -p=<2176,-126,1717>, v=<304,-19,245>, a=<-21,1,-24> -p=<2153,2118,998>, v=<304,302,142>, a=<-26,-24,-9> -p=<-744,2719,1245>, v=<-111,386,176>, a=<2,-28,-16> -p=<3101,-1190,-994>, v=<444,-167,-143>, a=<-34,12,7> -p=<-156,-2267,-2303>, v=<-21,-324,-334>, a=<5,19,22> -p=<1023,-1402,2182>, v=<143,-199,312>, a=<-8,20,-28> -p=<2486,-1200,-1942>, v=<359,-171,-278>, a=<-22,12,19> -p=<1355,1883,2115>, v=<197,269,305>, a=<-15,-18,-24> -p=<1830,788,2438>, v=<263,107,349>, a=<-13,-9,-17> -p=<-912,715,3178>, v=<-131,105,450>, a=<6,-9,-30> -p=<1612,-1972,-156>, v=<226,-283,-23>, a=<-20,13,4> -p=<893,-2183,2349>, v=<126,-319,334>, a=<-13,23,-24> -p=<1817,-2407,-431>, v=<256,-343,-63>, a=<-18,20,1> -p=<2372,1739,-527>, v=<336,250,-74>, a=<-23,-20,4> -p=<-2169,-888,1343>, v=<-305,-122,186>, a=<23,3,-15> -p=<1004,-2830,-740>, v=<139,-399,-107>, a=<-11,27,6> -p=<-305,-2955,521>, v=<-40,-419,74>, a=<3,29,-7> -p=<-509,1141,2439>, v=<-75,160,348>, a=<3,-11,-24> -p=<-2301,1385,-970>, v=<-327,199,-139>, a=<15,-17,11> -p=<-2030,1762,-1028>, v=<-292,253,-142>, a=<20,-21,11> -p=<-861,2917,38>, v=<-123,415,7>, a=<7,-29,3> -p=<-167,-2616,1713>, v=<-21,-374,241>, a=<2,18,-20> -p=<-1058,1016,-2844>, v=<-157,151,-402>, a=<10,-10,28> -p=<1515,795,-2400>, v=<214,120,-339>, a=<-14,-5,25> -p=<-1976,1929,1093>, v=<-285,274,156>, a=<23,-17,-10> -p=<-2791,376,-1195>, v=<-397,50,-169>, a=<27,1,14> -p=<-415,-2632,-1896>, v=<-61,-373,-274>, a=<5,29,19> -p=<731,2967,-1217>, v=<104,426,-175>, a=<-4,-29,12> -p=<-1052,-2543,-649>, v=<-154,-365,-94>, a=<8,23,0> -p=<-86,-1297,2692>, v=<-8,-183,387>, a=<1,12,-29> -p=<2334,-1447,1773>, v=<334,-210,250>, a=<-23,19,-22> -p=<-1461,1036,3091>, v=<-214,152,440>, a=<14,-7,-29> -p=<574,1634,-2195>, v=<82,232,-314>, a=<-4,-8,25> -p=<2758,-1277,-252>, v=<395,-186,-36>, a=<-30,16,-2> -p=<2285,-1449,1267>, v=<328,-207,185>, a=<-28,16,-12> -p=<-1991,-2098,-804>, v=<-284,-292,-118>, a=<17,16,8> -p=<1255,909,2080>, v=<180,129,296>, a=<-12,-13,-18> -p=<-1210,1924,-2166>, v=<-170,273,-309>, a=<10,-19,21> -p=<498,619,-2631>, v=<70,90,-374>, a=<-6,-6,29> -p=<1181,1790,-2398>, v=<170,253,-340>, a=<-10,-16,27> -p=<1096,-2878,-674>, v=<156,-411,-98>, a=<-14,29,9> -p=<-1718,2707,-58>, v=<-244,383,-7>, a=<17,-31,1> -p=<576,-3141,-439>, v=<83,-454,-62>, a=<0,28,7> -p=<1993,-1807,1900>, v=<284,-255,271>, a=<-18,18,-18> -p=<758,2506,-1611>, v=<105,354,-234>, a=<-6,-25,20> -p=<-2346,1520,-480>, v=<-335,217,-66>, a=<19,-12,4> -p=<-3102,541,88>, v=<-435,80,11>, a=<33,-7,1> -p=<1428,1818,-1579>, v=<205,256,-224>, a=<-12,-18,15> -p=<-2580,242,-393>, v=<-367,37,-61>, a=<23,2,4> -p=<2525,-866,-1209>, v=<360,-119,-172>, a=<-25,6,12> -p=<-1643,-1621,1822>, v=<-238,-235,263>, a=<13,16,-17> -p=<-1935,2048,802>, v=<-274,293,110>, a=<21,-20,-6> -p=<1482,2793,-375>, v=<213,399,-47>, a=<-17,-30,10> -p=<1252,2495,-610>, v=<176,357,-88>, a=<-12,-26,9> -p=<1009,250,-2787>, v=<143,35,-398>, a=<-10,-5,27> -p=<-878,2715,-1519>, v=<-125,385,-217>, a=<9,-24,16> -p=<-1311,2581,1146>, v=<-184,371,160>, a=<13,-24,-10> -p=<2640,410,-781>, v=<378,59,-114>, a=<-19,-6,14> -p=<-371,1354,-2693>, v=<-52,194,-384>, a=<6,-13,29> -p=<537,-2185,-2231>, v=<75,-312,-317>, a=<-3,28,25> -p=<-32,-2568,1670>, v=<-4,-370,242>, a=<3,25,-14> -p=<1565,1932,454>, v=<223,277,66>, a=<-15,-19,-3> -p=<-1345,2918,-69>, v=<-192,416,-11>, a=<10,-25,1> -p=<-2085,-271,-1874>, v=<-297,-38,-263>, a=<20,4,23> -p=<2111,-2280,-74>, v=<305,-322,-6>, a=<-22,24,-4> -p=<12,-488,3282>, v=<6,-69,462>, a=<-4,6,-35> -p=<-829,-937,2551>, v=<-116,-137,367>, a=<3,12,-23> -p=<1314,2115,-1539>, v=<187,298,-218>, a=<-13,-14,20> -p=<666,553,-3136>, v=<94,80,-448>, a=<-5,-5,28> -p=<373,2363,-928>, v=<52,335,-130>, a=<0,-20,8> -p=<-16,923,3038>, v=<0,125,435>, a=<0,-11,-30> -p=<-582,-2415,-1123>, v=<-84,-349,-157>, a=<5,20,18> -p=<1104,-320,2444>, v=<158,-44,354>, a=<-11,2,-23> -p=<-187,-1095,2647>, v=<-26,-156,376>, a=<-1,12,-21> -p=<-1421,-2357,200>, v=<-201,-333,33>, a=<15,21,2> -p=<1877,90,2147>, v=<273,12,309>, a=<-16,0,-21> -p=<-1880,419,-2597>, v=<-271,63,-374>, a=<18,-4,25> -p=<-1609,414,-2417>, v=<-229,59,-351>, a=<10,-1,24> -p=<-1480,2235,-210>, v=<-210,316,-30>, a=<12,-20,0> -p=<-1941,743,2365>, v=<-277,110,337>, a=<15,-7,-25> -p=<1495,-2896,1065>, v=<214,-412,152>, a=<-11,26,-10> -p=<-2038,541,1731>, v=<-286,80,245>, a=<15,-6,-13> -p=<1316,175,-2635>, v=<187,26,-378>, a=<-10,-1,27> -p=<1778,1932,-399>, v=<254,274,-57>, a=<-16,-20,3> -p=<-2497,84,472>, v=<-355,12,70>, a=<24,0,-6> -p=<566,-1984,-1067>, v=<77,-285,-155>, a=<-2,22,11> -p=<-1138,420,-3082>, v=<-157,62,-440>, a=<15,-1,34> -p=<789,-2022,2212>, v=<115,-290,317>, a=<-10,16,-25> -p=<354,-2402,-1538>, v=<50,-343,-214>, a=<-2,22,15> -p=<-1233,-3403,-289>, v=<-181,-482,-40>, a=<14,28,2> -p=<-2416,-1448,462>, v=<-346,-204,70>, a=<24,12,-3> -p=<676,-2408,-1515>, v=<88,-343,-221>, a=<-6,23,14> -p=<795,420,-2555>, v=<106,57,-366>, a=<-6,-5,24> -p=<951,-2678,-2019>, v=<133,-382,-289>, a=<-7,23,20> -p=<384,1486,2761>, v=<54,207,394>, a=<-4,-11,-26> -p=<-2164,1308,-2362>, v=<-308,186,-343>, a=<23,-12,23> -p=<1636,-2395,-677>, v=<233,-344,-102>, a=<-17,19,7> -p=<-836,2716,802>, v=<-116,390,114>, a=<5,-26,-8> -p=<-1017,2318,-1502>, v=<-148,331,-212>, a=<14,-22,14> -p=<-8,2290,-2327>, v=<-1,326,-336>, a=<0,-26,23> -p=<957,-475,-2503>, v=<135,-71,-363>, a=<-7,4,21> -p=<-1802,1695,-2518>, v=<-262,242,-356>, a=<17,-16,22> -p=<-1918,1084,978>, v=<-273,152,140>, a=<19,-8,-9> -p=<-2718,-511,267>, v=<-390,-70,38>, a=<22,0,-5> -p=<-931,741,-2861>, v=<-135,107,-409>, a=<4,-8,27> -p=<2919,720,-429>, v=<418,105,-59>, a=<-30,-11,4> -p=<-127,-208,-2528>, v=<-17,-29,-361>, a=<-2,2,24> -p=<2588,-1533,325>, v=<369,-224,46>, a=<-25,15,-5> -p=<2240,755,1445>, v=<321,110,206>, a=<-20,-8,-11> -p=<-1025,-2658,396>, v=<-144,-381,56>, a=<9,22,4> -p=<-1591,-1577,-2200>, v=<-227,-229,-312>, a=<17,13,22> -p=<2320,-2390,453>, v=<328,-346,65>, a=<-19,26,-3> -p=<-2665,277,577>, v=<-379,37,82>, a=<25,1,-5> -p=<-244,-314,2533>, v=<-36,-49,359>, a=<-2,4,-24> -p=<1363,1901,-1003>, v=<198,268,-143>, a=<-15,-20,10> -p=<-1982,-2008,-666>, v=<-279,-286,-93>, a=<15,21,6> -p=<404,1110,-2724>, v=<57,152,-390>, a=<-5,-11,25> -p=<1106,-29,2811>, v=<157,-5,397>, a=<-4,-1,-29> -p=<1279,-1327,-2438>, v=<176,-186,-347>, a=<-16,13,23> -p=<-2442,-1060,-1808>, v=<-348,-152,-261>, a=<25,9,17> -p=<-2764,706,766>, v=<-392,99,116>, a=<26,-4,-11> -p=<398,-961,-2682>, v=<51,-137,-388>, a=<-2,9,30> -p=<1783,-461,-1623>, v=<258,-68,-234>, a=<-19,5,13> -p=<164,-766,-3613>, v=<24,-107,-517>, a=<2,9,39> -p=<-2002,-2461,-920>, v=<-287,-349,-131>, a=<24,21,4> -p=<770,493,3153>, v=<112,71,450>, a=<-4,-1,-35> -p=<-864,477,-3078>, v=<-120,73,-439>, a=<7,-6,29> -p=<1315,2948,-955>, v=<185,418,-134>, a=<-12,-27,10> -p=<1168,2186,-1475>, v=<165,308,-215>, a=<-11,-16,14> -p=<1883,1702,1906>, v=<270,252,273>, a=<-20,-13,-18> -p=<-2462,-1690,-48>, v=<-353,-241,-8>, a=<24,15,2> -p=<-1016,1706,2368>, v=<-144,242,341>, a=<7,-21,-20> -p=<2752,1230,178>, v=<394,178,26>, a=<-23,-16,-1> -p=<-3139,492,-93>, v=<-446,70,-14>, a=<31,-6,0> -p=<-232,-669,3400>, v=<-35,-95,487>, a=<-1,3,-29> -p=<521,-4,2511>, v=<73,0,361>, a=<-8,3,-33> -p=<-1580,-2272,-2040>, v=<-224,-323,-292>, a=<15,20,20> -p=<2936,10,680>, v=<419,1,100>, a=<-33,1,-7> -p=<3134,29,491>, v=<450,8,66>, a=<-31,4,0> -p=<2028,-2215,730>, v=<286,-317,101>, a=<-17,17,-6> -p=<-942,2508,227>, v=<-132,360,34>, a=<6,-18,-2> -p=<-2074,-337,-2307>, v=<-292,-51,-325>, a=<17,9,25> -p=<3138,-829,906>, v=<448,-116,129>, a=<-27,8,-3> -p=<417,-1567,2520>, v=<60,-223,357>, a=<-7,8,-29> -p=<-591,2981,-253>, v=<-79,425,-35>, a=<9,-29,2> -p=<-428,2571,-2295>, v=<-65,372,-326>, a=<-1,-25,23> -p=<-1147,-2613,-1664>, v=<-163,-373,-239>, a=<10,32,17> -p=<-682,2368,720>, v=<-96,338,106>, a=<10,-27,-10> -p=<414,2028,-1676>, v=<65,286,-239>, a=<-6,-20,16> -p=<80,2771,-1315>, v=<8,395,-188>, a=<0,-25,13> -p=<-571,765,-2510>, v=<-80,110,-354>, a=<1,-10,31> -p=<1755,-2364,-196>, v=<251,-339,-30>, a=<-16,25,-1> -p=<-995,-2303,54>, v=<-141,-327,13>, a=<6,21,3> -p=<987,-1899,-2046>, v=<141,-272,-292>, a=<-9,18,25> -p=<-230,-841,-2371>, v=<-31,-118,-337>, a=<2,5,23> -p=<2201,-1834,1184>, v=<312,-262,169>, a=<-22,20,-7> -p=<2301,277,-1316>, v=<331,41,-186>, a=<-22,3,11> -p=<-2248,1705,39>, v=<-320,240,10>, a=<19,-15,1> -p=<-1825,2384,950>, v=<-264,341,136>, a=<20,-23,-4> -p=<2159,583,-2049>, v=<306,85,-291>, a=<-17,2,20> -p=<752,-306,-2743>, v=<110,-44,-391>, a=<-7,3,28> -p=<-1600,733,2474>, v=<-228,102,353>, a=<16,-4,-29> -p=<-1931,-2210,-1867>, v=<-276,-309,-267>, a=<18,24,14> -p=<-1295,-2031,1686>, v=<-184,-292,239>, a=<12,21,-15> -p=<478,-2672,-94>, v=<69,-381,-17>, a=<-2,23,0> -p=<1317,662,2146>, v=<184,91,301>, a=<-16,-4,-19> -p=<761,-2068,1675>, v=<109,-295,240>, a=<-5,20,-13> -p=<3126,878,1183>, v=<444,125,167>, a=<-29,-5,-8> -p=<1005,-2563,-549>, v=<146,-368,-80>, a=<-15,25,4> -p=<2042,-1193,-2128>, v=<290,-166,-300>, a=<-17,15,22> -p=<200,-1578,2895>, v=<26,-223,413>, a=<-4,11,-28> -p=<-986,2686,-304>, v=<-138,378,-38>, a=<9,-26,5> -p=<2871,-1251,358>, v=<411,-175,52>, a=<-28,17,0> -p=<1868,319,-2475>, v=<267,45,-348>, a=<-18,-3,22> -p=<2451,19,-1262>, v=<352,-1,-183>, a=<-25,0,12> -p=<1585,2301,-869>, v=<231,330,-120>, a=<-10,-23,7> -p=<2502,1759,-696>, v=<357,257,-102>, a=<-24,-19,6> -p=<2305,537,-2463>, v=<332,77,-348>, a=<-22,-8,18> -p=<-255,2470,-1500>, v=<-35,349,-217>, a=<6,-22,12> -p=<-236,2477,-1290>, v=<-37,350,-184>, a=<6,-24,15> -p=<2401,258,1682>, v=<343,36,238>, a=<-21,-2,-16> -p=<-674,2633,130>, v=<-96,377,22>, a=<7,-32,0> -p=<-682,-183,-2591>, v=<-95,-27,-365>, a=<6,6,22> -p=<-153,2400,-2116>, v=<-24,340,-304>, a=<2,-25,20> -p=<-1243,2187,1831>, v=<-177,311,261>, a=<13,-22,-18> -p=<1115,-2968,-411>, v=<164,-423,-63>, a=<-5,31,5> -p=<2669,-425,-1805>, v=<381,-55,-256>, a=<-26,4,19> -p=<-1819,-1005,-1806>, v=<-259,-146,-254>, a=<13,9,22> -p=<2727,-746,-1095>, v=<388,-107,-161>, a=<-21,7,10> -p=<2988,-1385,-756>, v=<431,-194,-105>, a=<-31,12,9> -p=<1892,-843,-2112>, v=<270,-120,-295>, a=<-18,8,18> -p=<981,-1233,2354>, v=<140,-176,335>, a=<-7,11,-21> -p=<-798,910,2557>, v=<-114,134,367>, a=<9,-9,-28> -p=<1357,3162,599>, v=<193,457,83>, a=<-12,-31,-6> -p=<2670,1729,-42>, v=<383,245,-2>, a=<-29,-17,2> -p=<-1459,-1028,2060>, v=<-208,-142,297>, a=<17,8,-17> -p=<-166,-236,2935>, v=<-20,-33,417>, a=<-2,0,-29> -p=<3032,-500,391>, v=<440,-72,55>, a=<-35,10,1> -p=<1867,1954,117>, v=<266,282,16>, a=<-11,-15,1> -p=<165,1444,2170>, v=<20,206,312>, a=<-2,-10,-19> -p=<-2105,-2100,395>, v=<-303,-300,51>, a=<23,21,-3> -p=<-975,2566,-2097>, v=<-141,364,-304>, a=<5,-26,20> -p=<2688,-678,-926>, v=<383,-97,-136>, a=<-28,6,9> -p=<-331,-3031,-174>, v=<-43,-435,-21>, a=<4,33,4> -p=<-1036,-2037,-1769>, v=<-149,-290,-254>, a=<8,27,17> -p=<443,-1213,-2648>, v=<60,-173,-386>, a=<-8,14,26> -p=<-2666,220,1758>, v=<-380,31,253>, a=<27,1,-16> -p=<1168,2827,1304>, v=<169,403,184>, a=<-11,-27,-11> -p=<1237,645,2828>, v=<176,89,403>, a=<-11,-3,-27> -p=<-194,-718,2500>, v=<-26,-97,355>, a=<2,2,-25> -p=<-1738,-1623,1459>, v=<-246,-231,207>, a=<20,18,-14> -p=<607,-1729,-2554>, v=<87,-244,-363>, a=<-5,17,21> -p=<-772,2981,-1709>, v=<-108,429,-248>, a=<6,-29,13> -p=<-929,-935,2559>, v=<-131,-133,366>, a=<8,9,-27> -p=<1889,-2222,2>, v=<273,-315,-4>, a=<-23,24,2> -p=<2252,-1177,-1148>, v=<317,-163,-169>, a=<-22,7,14> -p=<898,1129,1677>, v=<128,160,240>, a=<-8,-11,-18> -p=<585,1776,-1605>, v=<86,257,-232>, a=<-3,-11,11> -p=<1329,-702,2447>, v=<188,-99,350>, a=<-20,5,-24> -p=<-740,-1556,-2238>, v=<-104,-219,-317>, a=<9,19,22> -p=<1221,2376,-501>, v=<176,343,-70>, a=<-13,-23,2> -p=<-18,-582,-2939>, v=<-1,-83,-416>, a=<0,11,31> -p=<328,-1362,2407>, v=<47,-192,345>, a=<-1,11,-24> -p=<2254,-795,-2176>, v=<319,-115,-306>, a=<-17,7,20> -p=<1945,2178,374>, v=<273,308,54>, a=<-22,-23,-3> -p=<-1255,1542,-2209>, v=<-182,220,-315>, a=<11,-15,23> -p=<-1029,1657,2328>, v=<-148,234,331>, a=<16,-16,-27> -p=<299,2821,-1374>, v=<44,402,-193>, a=<-7,-25,13> -p=<-2317,106,-1824>, v=<-331,20,-262>, a=<23,-1,13> -p=<784,-2450,-1388>, v=<116,-346,-195>, a=<-11,26,14> -p=<2738,-544,-356>, v=<393,-77,-49>, a=<-26,10,-3> -p=<1355,1483,2334>, v=<195,211,331>, a=<-12,-19,-17> -p=<2570,-849,-414>, v=<369,-117,-60>, a=<-21,9,9> -p=<313,-1203,-2974>, v=<41,-173,-422>, a=<-4,16,26> -p=<133,-3658,193>, v=<22,-524,27>, a=<-4,42,2> -p=<1293,-1644,2714>, v=<179,-232,383>, a=<-12,15,-33> -p=<152,1845,1804>, v=<24,263,261>, a=<-1,-14,-18> -p=<1059,2077,-1799>, v=<154,296,-251>, a=<-7,-19,13> -p=<-2954,-985,167>, v=<-418,-140,23>, a=<29,7,-3> diff --git a/2017/d20/ex2/ex2.py b/2017/d20/ex2/ex2.py deleted file mode 100755 index d451315..0000000 --- a/2017/d20/ex2/ex2.py +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env python - -import collections -import sys -from typing import NamedTuple - - -class Point(NamedTuple): - x: int - y: int - z: int - - -class Particle(NamedTuple): - pos: Point - vel: Point - acc: Point - - @classmethod - def from_str(cls, input: str) -> "Particle": - p, v, a = input.split(", ") - return cls( - Point(*map(int, p[3:-1].split(","))), - Point(*map(int, v[3:-1].split(","))), - Point(*map(int, a[3:-1].split(","))), - ) - - def tick(self) -> "Particle": - pos, vel, acc = self - vel = Point(*((v + a) for v, a in zip(vel, acc))) - pos = Point(*((p + v) for p, v in zip(pos, vel))) - return Particle(pos, vel, acc) - - -def solve(input: str) -> int: - def parse(input: str) -> list[Particle]: - return [Particle.from_str(line) for line in input.splitlines()] - - def tick(particles: list[Particle]) -> list[Particle]: - particles = [p.tick() for p in particles] - positions = collections.Counter(p.pos for p in particles) - return [p for p in particles if positions[p.pos] == 1] - - particles = parse(input) - # Guesstimate that 1000 iterations is enough to process all colisions - for _ in range(1000): - particles = tick(particles) - return len(particles) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d20/ex2/input b/2017/d20/ex2/input deleted file mode 100644 index d30ed99..0000000 --- a/2017/d20/ex2/input +++ /dev/null @@ -1,1000 +0,0 @@ -p=<1500,413,-535>, v=<-119,22,36>, a=<-5,-12,3> -p=<65,1223,-530>, v=<-14,-136,52>, a=<2,2,0> -p=<260,-387,800>, v=<49,14,-103>, a=<-13,4,4> -p=<429,726,462>, v=<-36,-36,-19>, a=<0,-6,-4> -p=<1705,-165,1331>, v=<-134,9,-104>, a=<-3,0,-3> -p=<341,693,-473>, v=<-28,9,-18>, a=<0,-13,10> -p=<2816,-2250,1464>, v=<-91,41,149>, a=<-4,6,-20> -p=<-1237,-1704,-531>, v=<47,125,35>, a=<1,-4,-1> -p=<-4828,-171,-447>, v=<86,8,-24>, a=<13,0,4> -p=<2553,3286,-5524>, v=<-128,45,41>, a=<3,-9,8> -p=<1065,8038,-3700>, v=<1,-87,17>, a=<-2,-10,6> -p=<1081,-4698,860>, v=<50,113,-43>, a=<-5,2,1> -p=<-4103,102,-7540>, v=<47,-37,137>, a=<5,2,6> -p=<2985,-3162,1516>, v=<40,65,-47>, a=<-8,2,0> -p=<8089,4886,-2404>, v=<-4,28,26>, a=<-15,-11,3> -p=<-188,492,143>, v=<29,78,-27>, a=<-2,-13,2> -p=<1556,2084,1247>, v=<-97,-115,-45>, a=<0,-2,-4> -p=<220,-404,-1241>, v=<-39,-2,0>, a=<3,3,9> -p=<-948,908,751>, v=<102,-16,-99>, a=<-5,-5,6> -p=<676,-2628,-1641>, v=<-8,52,59>, a=<-4,13,5> -p=<-1636,-204,2167>, v=<77,11,-77>, a=<3,0,-7> -p=<-92,-212,615>, v=<23,-65,37>, a=<-2,9,-9> -p=<660,1700,-1217>, v=<-75,-40,41>, a=<4,-8,4> -p=<2428,-284,1007>, v=<-143,-35,-30>, a=<-1,6,-4> -p=<2516,-3412,-577>, v=<-4,101,1>, a=<-18,13,4> -p=<-1551,-1873,-3487>, v=<29,-15,-125>, a=<1,4,13> -p=<-276,3805,-2229>, v=<-61,98,13>, a=<4,-12,3> -p=<-752,5811,1239>, v=<-12,-66,-19>, a=<2,-6,-1> -p=<-6736,1782,-13636>, v=<24,70,156>, a=<10,-7,14> -p=<1169,-819,2123>, v=<124,-81,-45>, a=<-9,6,-1> -p=<31,-1310,-640>, v=<-8,167,15>, a=<0,-9,6> -p=<-1895,-1544,878>, v=<68,76,-53>, a=<13,8,-3> -p=<2382,126,1908>, v=<-112,-6,8>, a=<1,0,-7> -p=<18,-3462,288>, v=<-1,81,13>, a=<0,5,-2> -p=<-1958,317,-1998>, v=<173,40,64>, a=<-7,-6,4> -p=<-818,507,-136>, v=<13,140,-14>, a=<3,-17,2> -p=<3362,-640,-138>, v=<-32,44,18>, a=<-16,-1,-1> -p=<50,-1351,303>, v=<-19,17,22>, a=<2,6,-4> -p=<896,-244,-2424>, v=<-123,-16,31>, a=<8,3,11> -p=<50,197,726>, v=<0,-12,8>, a=<0,0,-5> -p=<698,-2431,2949>, v=<2,77,-144>, a=<-4,6,-2> -p=<-202,-226,-21>, v=<14,97,-17>, a=<0,-9,2> -p=<-1363,998,168>, v=<50,-47,1>, a=<3,-1,-1> -p=<2039,476,1554>, v=<-101,115,0>, a=<-1,-15,-9> -p=<-2992,1664,-2190>, v=<150,-27,113>, a=<2,-7,1> -p=<-4132,2004,373>, v=<47,-37,18>, a=<11,-4,-3> -p=<-1694,2004,-2433>, v=<37,-97,68>, a=<3,1,3> -p=<-1326,-2320,-1835>, v=<33,103,78>, a=<2,0,0> -p=<-1027,1682,1247>, v=<-40,-47,-116>, a=<7,-2,5> -p=<-337,2234,534>, v=<14,-47,-1>, a=<0,-4,-2> -p=<2745,3016,-202>, v=<-24,-81,-29>, a=<-8,-4,3> -p=<-1343,-3402,1983>, v=<99,84,-43>, a=<-2,13,-8> -p=<-272,1460,1303>, v=<-72,-31,-111>, a=<10,-6,4> -p=<1377,-2348,130>, v=<-52,67,21>, a=<-3,8,-3> -p=<2482,1409,1371>, v=<-135,-100,-7>, a=<-1,2,-8> -p=<136,-3334,-2879>, v=<-15,134,108>, a=<1,7,7> -p=<-2754,-614,-873>, v=<74,1,-55>, a=<10,4,12> -p=<136,950,-431>, v=<-6,17,27>, a=<0,-8,0> -p=<272,-1940,-1502>, v=<-5,142,45>, a=<-1,-3,5> -p=<952,-1532,-2743>, v=<-54,-26,118>, a=<0,13,5> -p=<646,4570,-4911>, v=<-54,-65,-31>, a=<2,-4,10> -p=<-7837,3193,-5948>, v=<73,-77,17>, a=<9,-1,9> -p=<1666,3686,6547>, v=<21,-109,-53>, a=<-4,0,-8> -p=<-1731,-1228,580>, v=<163,24,-58>, a=<2,18,0> -p=<399,422,-2410>, v=<-6,-42,197>, a=<-6,0,8> -p=<7537,-5727,-3546>, v=<-129,57,14>, a=<-12,12,9> -p=<-6802,2710,-6328>, v=<58,-11,67>, a=<15,-7,13> -p=<-2616,-3153,1771>, v=<32,120,-15>, a=<5,0,-4> -p=<1804,1046,5307>, v=<-84,-55,-70>, a=<1,1,-10> -p=<2233,-2321,445>, v=<-60,61,-18>, a=<-2,2,0> -p=<2193,-2574,-5336>, v=<-77,45,38>, a=<1,1,5> -p=<3090,1248,319>, v=<80,-33,13>, a=<-8,0,-1> -p=<4299,-1209,-8807>, v=<-111,-70,47>, a=<0,5,9> -p=<6288,-1092,-227>, v=<18,7,47>, a=<-9,1,-2> -p=<-6426,-4992,-1943>, v=<84,-53,111>, a=<4,9,-3> -p=<-5880,-10491,-4751>, v=<90,48,63>, a=<3,11,3> -p=<6210,-8463,670>, v=<-80,76,-176>, a=<-4,7,8> -p=<384,-1868,1875>, v=<-17,72,-18>, a=<0,0,-4> -p=<5376,-672,913>, v=<-47,-1,-35>, a=<-12,2,0> -p=<4856,4489,783>, v=<-27,-24,-57>, a=<-12,-11,2> -p=<-3100,1070,-946>, v=<-18,13,23>, a=<10,-4,1> -p=<-786,-5534,1420>, v=<1,132,-41>, a=<2,6,-1> -p=<2659,-2297,692>, v=<-91,21,95>, a=<-1,5,-9> -p=<-1514,-724,-2584>, v=<-79,1,-22>, a=<10,2,9> -p=<1426,-304,32>, v=<-145,-39,32>, a=<7,5,-3> -p=<1526,2846,-738>, v=<-129,-186,81>, a=<5,4,-4> -p=<356,-114,-2458>, v=<-18,-17,41>, a=<0,2,8> -p=<-719,-741,-2568>, v=<47,35,55>, a=<-1,0,6> -p=<1003,-342,3144>, v=<86,16,-30>, a=<-12,0,-11> -p=<1276,897,-2631>, v=<-59,-21,-8>, a=<0,-2,12> -p=<-1244,-426,-2862>, v=<39,97,69>, a=<2,-7,6> -p=<-530,708,603>, v=<-17,-56,-85>, a=<4,2,5> -p=<-2882,2724,-3114>, v=<-15,-20,81>, a=<14,-10,6> -p=<4552,-1035,624>, v=<-61,82,35>, a=<-14,-3,-6> -p=<2809,1317,-783>, v=<-33,-74,-41>, a=<-9,1,7> -p=<3229,1464,3417>, v=<-119,-81,-153>, a=<-3,1,-1> -p=<1321,1115,5088>, v=<62,70,-117>, a=<-8,-8,-5> -p=<3319,-2611,3711>, v=<-96,26,-80>, a=<-2,5,-4> -p=<916,-316,-744>, v=<7,-59,-41>, a=<-3,5,5> -p=<376,3302,-2526>, v=<-71,45,-87>, a=<4,-12,13> -p=<889,-181,687>, v=<-76,6,32>, a=<3,0,-4> -p=<-2594,-964,1281>, v=<-73,91,52>, a=<12,-4,-7> -p=<1240,3707,-5496>, v=<37,16,23>, a=<-6,-11,13> -p=<-3026,-2017,-4227>, v=<-29,60,-80>, a=<10,1,17> -p=<-5056,959,3746>, v=<34,-37,-136>, a=<13,0,-1> -p=<-7106,-3941,1596>, v=<77,3,-63>, a=<16,12,0> -p=<2194,-591,-3679>, v=<-48,25,31>, a=<-3,0,9> -p=<-2281,284,4771>, v=<131,-23,-47>, a=<-3,1,-11> -p=<5469,1859,-4929>, v=<-166,5,133>, a=<-4,-6,5> -p=<2194,3084,-1279>, v=<-100,-122,26>, a=<1,0,2> -p=<-3781,-1991,2496>, v=<61,42,-8>, a=<7,3,-7> -p=<-4606,-1641,6321>, v=<146,54,-70>, a=<3,1,-14> -p=<5994,2959,-3779>, v=<-148,-65,61>, a=<-7,-4,7> -p=<-1372,142,2651>, v=<63,-130,-5>, a=<0,11,-11> -p=<3101,-2693,3428>, v=<-51,115,-42>, a=<-9,1,-11> -p=<4382,3901,-1213>, v=<-167,-166,36>, a=<-4,-2,2> -p=<1862,-2084,3743>, v=<-80,130,-90>, a=<-1,-3,-8> -p=<-395,-2026,-944>, v=<-2,132,-47>, a=<2,-3,9> -p=<-2675,554,-1744>, v=<28,-18,-28>, a=<10,-1,11> -p=<-1595,-5756,-104>, v=<163,119,37>, a=<-8,16,-3> -p=<-1795,2784,2936>, v=<-16,70,-52>, a=<10,-20,-9> -p=<-1135,-86,166>, v=<14,56,13>, a=<4,-5,-2> -p=<-3989,-76,-5091>, v=<30,65,138>, a=<11,-5,6> -p=<415,-892,1581>, v=<34,-1,135>, a=<-4,3,-16> -p=<-365,-28,-3327>, v=<179,-137,77>, a=<-13,11,5> -p=<2623,3740,-5691>, v=<-8,-94,38>, a=<-8,-5,16> -p=<-497,3020,-2283>, v=<-53,-14,96>, a=<6,-9,0> -p=<403,-904,1737>, v=<22,-13,66>, a=<-3,4,-11> -p=<1195,1460,489>, v=<-61,-74,-107>, a=<1,1,7> -p=<-2009,104,1245>, v=<35,145,24>, a=<4,-12,-6> -p=<-1493,1808,-5115>, v=<101,-76,89>, a=<-3,0,10> -p=<7013,6579,-435>, v=<60,-101,-18>, a=<-18,-7,2> -p=<-3403,-2597,3595>, v=<76,19,-100>, a=<2,4,-1> -p=<-2659,1216,-3752>, v=<-28,-136,-39>, a=<7,6,10> -p=<3200,-4240,2789>, v=<-41,136,6>, a=<-4,0,-6> -p=<3262,-5852,-3690>, v=<-75,28,55>, a=<-2,10,4> -p=<-6503,1836,1487>, v=<112,-12,16>, a=<6,-3,-4> -p=<-3589,8687,1859>, v=<98,-57,36>, a=<1,-14,-6> -p=<7381,-1966,-607>, v=<-29,67,22>, a=<-15,0,0> -p=<595,1659,379>, v=<25,77,33>, a=<-3,-9,-3> -p=<1717,347,26>, v=<-92,-79,34>, a=<-6,7,-5> -p=<-1611,659,2184>, v=<143,-40,-160>, a=<-3,-2,-1> -p=<599,958,988>, v=<-41,-84,-68>, a=<-1,1,-1> -p=<469,438,1638>, v=<-59,-72,-20>, a=<3,5,-15> -p=<1457,-2175,962>, v=<-142,122,-31>, a=<4,6,-6> -p=<-2131,-4,299>, v=<134,32,-106>, a=<4,-5,12> -p=<-1013,-563,1677>, v=<-29,-37,-86>, a=<15,11,-6> -p=<-1312,-563,-871>, v=<22,-23,68>, a=<11,9,0> -p=<677,1504,1495>, v=<-82,-126,-44>, a=<4,1,-10> -p=<-401,-354,-103>, v=<54,101,-37>, a=<-3,-12,8> -p=<787,-1531,-257>, v=<-90,70,31>, a=<3,11,-1> -p=<83,405,-4>, v=<-26,-40,8>, a=<3,0,-1> -p=<-654,1032,-598>, v=<-43,-73,-10>, a=<17,-4,11> -p=<160,273,491>, v=<45,50,-49>, a=<-10,-13,1> -p=<72,-2,-895>, v=<83,9,83>, a=<-15,-2,0> -p=<-797,-1311,-631>, v=<60,26,89>, a=<2,15,-5> -p=<1045,-1354,502>, v=<-56,11,-67>, a=<0,6,4> -p=<-1691,2294,1737>, v=<28,-101,38>, a=<6,-2,-13> -p=<1847,521,-3642>, v=<0,-89,36>, a=<-5,5,7> -p=<1307,1682,30>, v=<-78,-90,40>, a=<2,2,-3> -p=<5411,5192,-5181>, v=<-20,-94,-47>, a=<-13,-7,17> -p=<-1015,-3583,651>, v=<36,105,-25>, a=<0,2,0> -p=<-1196,-512,-1809>, v=<89,-65,105>, a=<0,15,5> -p=<-91,125,102>, v=<-24,40,28>, a=<4,-7,-5> -p=<-1495,996,453>, v=<77,-41,-55>, a=<5,-5,3> -p=<-299,-1500,-1042>, v=<-43,123,-17>, a=<9,-1,14> -p=<1651,-1448,453>, v=<-32,-14,-55>, a=<-14,18,3> -p=<-520,-668,-1289>, v=<-19,10,86>, a=<8,6,2> -p=<-728,632,635>, v=<158,-27,-55>, a=<-15,-3,1> -p=<0,671,1103>, v=<18,-93,-84>, a=<-3,6,0> -p=<-975,1126,869>, v=<65,-37,-157>, a=<1,-7,13> -p=<-6957,4124,-167>, v=<90,-6,95>, a=<10,-9,-6> -p=<-1592,180,4560>, v=<10,-80,37>, a=<3,5,-13> -p=<1482,4849,906>, v=<-36,29,-47>, a=<-1,-13,1> -p=<-1360,-690,732>, v=<-103,10,4>, a=<10,1,-2> -p=<-4811,-5011,471>, v=<31,-21,-17>, a=<9,13,0> -p=<-8262,586,4647>, v=<195,56,-101>, a=<6,-5,-4> -p=<-5594,10214,2588>, v=<148,-66,0>, a=<3,-19,-6> -p=<10593,874,-5911>, v=<-83,109,43>, a=<-14,-8,8> -p=<1419,-9455,-6637>, v=<161,133,48>, a=<-12,9,9> -p=<-3333,280,128>, v=<33,25,-21>, a=<4,-2,1> -p=<-3069,-8300,722>, v=<8,13,-39>, a=<5,14,1> -p=<5973,2029,-3469>, v=<-113,40,20>, a=<-4,-6,5> -p=<-667,2909,-4429>, v=<21,-20,-131>, a=<0,-5,18> -p=<758,1919,5456>, v=<20,44,-11>, a=<-3,-7,-11> -p=<5818,2323,4262>, v=<-79,-70,-68>, a=<-16,-3,-11> -p=<417,-823,-875>, v=<-52,-65,39>, a=<3,9,0> -p=<-2179,-1098,5648>, v=<20,28,-131>, a=<7,2,-11> -p=<681,-944,-523>, v=<5,21,0>, a=<-3,2,2> -p=<-1387,-614,2832>, v=<84,-69,-62>, a=<-2,8,-5> -p=<-628,-1672,3200>, v=<39,13,-66>, a=<-1,5,-6> -p=<522,-3466,49>, v=<-59,55,-13>, a=<3,8,1> -p=<-2537,2146,-227>, v=<-34,51,47>, a=<12,-12,-3> -p=<-582,1295,739>, v=<-47,-32,-67>, a=<6,-2,3> -p=<-610,2649,-2932>, v=<-30,8,52>, a=<5,-11,7> -p=<2525,-607,-3460>, v=<0,-51,76>, a=<-10,7,7> -p=<-577,790,819>, v=<-43,-34,-38>, a=<6,0,0> -p=<3020,2363,-105>, v=<35,-48,27>, a=<-15,-5,-2> -p=<292,163,368>, v=<21,52,-29>, a=<-3,-5,1> -p=<1436,691,-3196>, v=<-31,-110,64>, a=<-3,7,7> -p=<-2007,1439,2766>, v=<91,63,46>, a=<0,-11,-15> -p=<-71,-1146,-2965>, v=<26,77,42>, a=<-2,-2,8> -p=<-3646,2451,-336>, v=<85,63,-20>, a=<7,-15,3> -p=<-730,-1186,2066>, v=<-2,27,-64>, a=<5,5,-6> -p=<3503,-1679,77>, v=<-107,74,-1>, a=<-11,3,0> -p=<2007,-2053,-1368>, v=<-10,168,66>, a=<-12,-5,2> -p=<-543,-387,570>, v=<68,-92,33>, a=<-4,13,-7> -p=<-203,378,2763>, v=<30,-128,-96>, a=<-2,12,-7> -p=<-560,2758,3647>, v=<33,-97,-121>, a=<0,-7,-10> -p=<-577,38,-280>, v=<43,-54,-25>, a=<-1,6,5> -p=<-3161,-802,-1532>, v=<86,26,29>, a=<6,1,4> -p=<-1565,-1096,2731>, v=<43,84,-119>, a=<3,-3,-1> -p=<-158,395,295>, v=<9,13,-25>, a=<0,-3,1> -p=<-1376,143,6469>, v=<-32,-96,-154>, a=<9,8,-14> -p=<73,4238,1513>, v=<-13,-159,-39>, a=<1,-4,-3> -p=<73,1592,1891>, v=<9,-121,53>, a=<-1,4,-13> -p=<703,-2314,1282>, v=<-32,-23,-105>, a=<0,12,4> -p=<-2888,-3826,-2603>, v=<29,-6,14>, a=<10,17,10> -p=<-956,-1789,3361>, v=<25,62,-39>, a=<2,2,-11> -p=<4714,-1600,1345>, v=<-3,119,2>, a=<-20,-4,-6> -p=<-341,-1584,886>, v=<9,82,2>, a=<1,0,-5> -p=<1027,-3104,-1508>, v=<-103,72,88>, a=<5,9,-1> -p=<628,12,1760>, v=<58,38,-144>, a=<-9,-4,5> -p=<-4084,1342,1000>, v=<116,-52,56>, a=<10,-2,-11> -p=<1388,1418,1817>, v=<38,-6,-107>, a=<-11,-7,1> -p=<1654,487,-4453>, v=<-66,-87,53>, a=<-2,6,18> -p=<632,-186,-1501>, v=<-10,45,26>, a=<-3,-4,7> -p=<-1204,-662,-753>, v=<71,-44,144>, a=<0,9,-11> -p=<-1051,1174,-566>, v=<-1,37,-2>, a=<7,-12,4> -p=<1975,1548,-2657>, v=<-17,-75,94>, a=<-11,-2,7> -p=<-3040,1548,-532>, v=<80,-75,-13>, a=<11,-2,5> -p=<-2037,-3416,-1705>, v=<48,172,47>, a=<8,3,6> -p=<1397,2721,233>, v=<-91,-99,59>, a=<1,-7,-8> -p=<-727,94,-946>, v=<24,-36,94>, a=<0,2,-4> -p=<1328,6919,-7711>, v=<-29,-93,180>, a=<-1,-9,5> -p=<4628,-191,-2656>, v=<-77,51,-4>, a=<-5,-3,6> -p=<4808,5914,614>, v=<10,18,-20>, a=<-11,-14,0> -p=<668,-8816,2699>, v=<-131,137,-74>, a=<7,10,-1> -p=<2978,-101,-721>, v=<9,-14,-84>, a=<-7,1,7> -p=<413,3334,1529>, v=<-45,73,58>, a=<2,-12,-7> -p=<-3442,-56,6539>, v=<68,0,-140>, a=<3,0,-5> -p=<1039,1335,128>, v=<-56,-75,-89>, a=<0,0,9> -p=<1174,2631,1478>, v=<-73,-90,-12>, a=<1,-6,-7> -p=<31,-1257,803>, v=<-95,-7,-3>, a=<10,8,-4> -p=<958,-1167,1613>, v=<53,140,-86>, a=<-11,-8,0> -p=<-1049,1335,839>, v=<41,-113,-81>, a=<2,4,4> -p=<-2219,-141,-295>, v=<30,7,134>, a=<10,0,-12> -p=<-1967,2550,2585>, v=<54,0,-45>, a=<6,-15,-10> -p=<-891,-3575,2084>, v=<62,43,-121>, a=<-2,7,3> -p=<-293,1326,-1465>, v=<93,-51,-79>, a=<-6,0,10> -p=<3698,-2262,-2687>, v=<-74,33,-32>, a=<-5,4,10> -p=<162,3224,-3896>, v=<89,-16,55>, a=<-7,-8,7> -p=<-3556,-611,-2219>, v=<151,-44,85>, a=<-1,5,0> -p=<1202,-1443,-5092>, v=<-32,69,128>, a=<-1,-1,5> -p=<6168,-1261,1967>, v=<-88,62,5>, a=<-11,-1,-6> -p=<-8173,10133,282>, v=<170,-53,9>, a=<4,-14,-1> -p=<-4688,-2923,333>, v=<155,-54,-10>, a=<-1,8,0> -p=<-4263,6393,2390>, v=<55,-48,-18>, a=<4,-8,-3> -p=<-472,1259,12743>, v=<31,68,-95>, a=<-1,-6,-16> -p=<-2308,-9910,2645>, v=<50,-6,-8>, a=<1,17,-4> -p=<-2002,-8346,11910>, v=<-29,-52,-53>, a=<5,17,-17> -p=<-489,-6459,-398>, v=<119,85,99>, a=<-6,6,-5> -p=<2418,-1512,-10785>, v=<51,-8,2>, a=<-7,3,18> -p=<-3226,-7547,4940>, v=<7,117,-58>, a=<5,6,-5> -p=<-1883,-2362,1829>, v=<-50,52,-54>, a=<6,1,0> -p=<-104,-2146,-706>, v=<-47,82,78>, a=<6,5,-4> -p=<-3300,149,1538>, v=<-3,19,-36>, a=<22,-3,-6> -p=<865,2121,-1335>, v=<-59,-115,-56>, a=<1,-1,15> -p=<491,-2350,-145>, v=<-37,13,117>, a=<1,14,-12> -p=<-2042,2835,892>, v=<157,-67,-16>, a=<-4,-11,-4> -p=<259,-985,2750>, v=<-92,-12,-33>, a=<7,5,-8> -p=<798,1072,2783>, v=<56,-2,-23>, a=<-8,-4,-9> -p=<-4691,225,1276>, v=<41,2,-35>, a=<15,-1,-2> -p=<2125,2739,2007>, v=<-41,-42,-41>, a=<-1,-2,-1> -p=<-885,-3946,-5588>, v=<45,41,-22>, a=<-1,4,10> -p=<4085,6519,-1808>, v=<-115,12,-40>, a=<0,-11,5> -p=<-2999,-2892,7364>, v=<61,-50,-88>, a=<3,10,-11> -p=<7731,2937,-31>, v=<-84,-56,47>, a=<-12,-3,-3> -p=<-911,-4110,2782>, v=<4,67,-5>, a=<2,5,-6> -p=<-4217,2328,839>, v=<-17,-80,-88>, a=<11,0,4> -p=<-1491,-340,2115>, v=<84,-138,-12>, a=<-2,10,-4> -p=<5092,2966,2376>, v=<22,-72,-126>, a=<-13,-2,3> -p=<-1250,-4251,-7477>, v=<-64,15,41>, a=<5,5,8> -p=<4792,5743,2707>, v=<11,-53,-71>, a=<-7,-5,0> -p=<-6703,-2826,-2100>, v=<21,-3,-81>, a=<8,4,7> -p=<-4032,-444,5776>, v=<55,-6,-144>, a=<10,2,-9> -p=<-3204,177,-1147>, v=<79,51,-59>, a=<5,-5,9> -p=<3305,-2054,141>, v=<-60,40,-7>, a=<-7,4,0> -p=<890,3581,3637>, v=<-15,-25,-135>, a=<-2,-11,-2> -p=<1842,1039,-3622>, v=<-84,-48,28>, a=<0,0,12> -p=<1886,775,-3303>, v=<29,-13,25>, a=<-10,-2,11> -p=<2898,3558,1548>, v=<-109,-59,0>, a=<-2,-9,-6> -p=<632,-644,1779>, v=<-52,86,-91>, a=<2,-5,1> -p=<-358,-1260,2505>, v=<-53,-24,-55>, a=<6,7,-5> -p=<1578,1567,3572>, v=<-3,-72,-23>, a=<-6,0,-12> -p=<-3614,-347,3033>, v=<141,15,13>, a=<2,0,-13> -p=<1105,-6221,129>, v=<-39,167,30>, a=<-1,10,-3> -p=<5076,2315,-311>, v=<-139,-106,-65>, a=<-8,0,7> -p=<2727,-1894,-1187>, v=<-64,98,42>, a=<-8,0,2> -p=<-579,6,-3543>, v=<-20,-12,166>, a=<5,1,2> -p=<2404,709,-1890>, v=<3,61,-61>, a=<-13,-10,16> -p=<1150,-602,390>, v=<-51,20,-31>, a=<-1,1,1> -p=<143,-1704,1701>, v=<42,138,-60>, a=<-5,-5,-3> -p=<2708,-1381,694>, v=<17,1,-17>, a=<-16,7,-2> -p=<979,-1039,-3391>, v=<-62,83,118>, a=<1,-3,6> -p=<2622,993,1733>, v=<-122,-103,-97>, a=<-1,5,1> -p=<312,-1597,2523>, v=<4,-26,-42>, a=<-2,10,-8> -p=<-538,-2877,-517>, v=<-27,59,-16>, a=<5,8,4> -p=<-1462,-3479,-1080>, v=<78,157,0>, a=<1,5,7> -p=<425,-725,433>, v=<30,67,-71>, a=<-6,-3,5> -p=<-1972,-1864,586>, v=<126,8,10>, a=<-1,11,-5> -p=<-1513,-1575,620>, v=<-9,18,-37>, a=<11,8,0> -p=<-119,873,-2491>, v=<26,-18,110>, a=<-2,-4,4> -p=<748,652,518>, v=<-61,22,-40>, a=<2,-7,1> -p=<2584,-2646,-859>, v=<-115,54,104>, a=<-4,11,-6> -p=<-221,-1116,-2304>, v=<86,72,117>, a=<-8,-1,2> -p=<3757,108,-26>, v=<-94,-72,82>, a=<-14,7,-9> -p=<-455,484,-1995>, v=<-55,68,32>, a=<6,-7,4> -p=<3073,-1724,-2607>, v=<-152,85,20>, a=<2,-1,7> -p=<-7043,-5420,5289>, v=<82,89,-84>, a=<17,11,-11> -p=<3505,1096,513>, v=<-170,-45,-85>, a=<2,0,5> -p=<-431,-920,-987>, v=<44,64,115>, a=<-2,-2,-6> -p=<-8771,2980,-723>, v=<179,-86,104>, a=<15,-3,-6> -p=<-923,1264,561>, v=<-98,48,-87>, a=<11,-8,5> -p=<-11,1792,-2019>, v=<39,-49,33>, a=<-3,-2,4> -p=<-435,1273,-382>, v=<-7,-121,-13>, a=<6,3,6> -p=<-461,571,411>, v=<37,17,-67>, a=<0,-9,5> -p=<1034,1481,255>, v=<-50,-102,64>, a=<-4,-2,-12> -p=<1109,-1211,-3947>, v=<-98,-108,-91>, a=<4,11,17> -p=<920,895,-3731>, v=<49,-18,-71>, a=<-6,-1,15> -p=<-1672,-185,-2813>, v=<-65,50,-63>, a=<9,-3,12> -p=<-4291,-4721,454>, v=<-38,36,-2>, a=<14,10,-1> -p=<3512,2596,-329>, v=<-103,-95,55>, a=<-2,0,-3> -p=<2162,-2642,1885>, v=<-193,71,57>, a=<8,2,-9> -p=<2438,-3105,2240>, v=<-85,122,13>, a=<0,-1,-6> -p=<-2086,723,4154>, v=<-34,110,-38>, a=<7,-9,-7> -p=<3424,4377,-1298>, v=<-59,-31,-45>, a=<-4,-8,6> -p=<550,-910,-2884>, v=<60,11,-17>, a=<-8,3,14> -p=<1264,1022,203>, v=<-139,-92,-54>, a=<7,4,4> -p=<1306,2576,1589>, v=<-20,-78,12>, a=<-4,-4,-8> -p=<1474,917,-28>, v=<5,1,155>, a=<-7,-4,-14> -p=<-605,1967,1379>, v=<-17,-115,-110>, a=<4,2,4> -p=<-2999,707,1316>, v=<163,-55,-52>, a=<-2,2,-1> -p=<-2124,85,1333>, v=<-76,97,-1>, a=<19,-10,-7> -p=<-2865,674,-985>, v=<43,-54,-19>, a=<11,2,7> -p=<-699,845,-4215>, v=<-21,-3,121>, a=<6,-4,10> -p=<1182,-1796,-1308>, v=<-30,66,88>, a=<-3,3,-2> -p=<-53,2080,1884>, v=<-75,-48,-100>, a=<8,-6,0> -p=<1828,-1245,1675>, v=<-74,-23,-19>, a=<-2,9,-7> -p=<1790,2859,3784>, v=<38,-109,-110>, a=<-13,-4,-9> -p=<-3245,1909,1751>, v=<143,1,27>, a=<3,-10,-12> -p=<1279,-4391,-2768>, v=<118,19,6>, a=<-13,12,8> -p=<1079,2259,4932>, v=<-4,-91,-68>, a=<-3,0,-10> -p=<3109,1104,4379>, v=<-46,-43,-174>, a=<-6,0,0> -p=<-1866,-2221,-1021>, v=<23,51,16>, a=<4,3,2> -p=<609,-2071,-3171>, v=<41,58,63>, a=<-5,2,5> -p=<3634,1004,2654>, v=<-54,-117,12>, a=<-7,6,-9> -p=<-716,5304,-171>, v=<-10,-94,-31>, a=<3,-9,3> -p=<4930,-4950,-2256>, v=<-35,96,91>, a=<-9,5,-1> -p=<-928,4214,1891>, v=<-28,-40,143>, a=<4,-7,-14> -p=<1682,1343,1456>, v=<-73,59,-82>, a=<1,-7,2> -p=<5394,-4660,-3677>, v=<-186,11,-70>, a=<0,10,13> -p=<-1740,2184,-1705>, v=<-30,-75,12>, a=<6,0,3> -p=<-2378,2851,-2894>, v=<67,-68,-7>, a=<1,-2,7> -p=<-2728,1792,2081>, v=<44,95,-69>, a=<3,-10,0> -p=<7382,-6773,-4144>, v=<-76,24,-32>, a=<-11,13,11> -p=<-6778,-1613,1556>, v=<117,-24,-36>, a=<7,5,-1> -p=<-1870,806,494>, v=<41,-29,-54>, a=<5,-1,3> -p=<360,946,2374>, v=<3,27,-22>, a=<-2,-7,-9> -p=<-1500,1016,-556>, v=<54,-29,72>, a=<2,-2,-4> -p=<870,696,2034>, v=<30,-76,-26>, a=<-7,4,-7> -p=<-390,-3464,644>, v=<-33,69,-51>, a=<5,10,2> -p=<-1180,1486,-476>, v=<17,0,68>, a=<4,-7,-4> -p=<1224,-754,1267>, v=<-14,55,-40>, a=<-10,0,-7> -p=<-1513,891,147>, v=<69,-115,25>, a=<5,7,-5> -p=<-1289,-292,868>, v=<53,97,-34>, a=<5,-10,-4> -p=<-1951,3305,-2253>, v=<-32,-17,79>, a=<7,-7,0> -p=<2123,-4535,1485>, v=<-47,31,47>, a=<-2,9,-7> -p=<-1237,3067,-6145>, v=<-14,-110,44>, a=<4,0,12> -p=<-2287,-1931,-111>, v=<9,170,46>, a=<5,-7,-3> -p=<-2940,427,-2488>, v=<53,-30,21>, a=<3,1,4> -p=<-4140,-203,4397>, v=<62,53,-7>, a=<5,-3,-9> -p=<-3240,-938,-3928>, v=<125,0,100>, a=<-1,2,2> -p=<4020,1147,-4738>, v=<-55,8,65>, a=<-5,-3,6> -p=<-1888,1962,-3057>, v=<-10,99,90>, a=<5,-11,1> -p=<838,1237,2279>, v=<-89,94,-109>, a=<4,-9,2> -p=<7044,-1547,1728>, v=<-153,70,-60>, a=<-6,-1,0> -p=<-3976,-1402,-1230>, v=<152,-10,-63>, a=<-1,4,7> -p=<-5484,-3461,-3840>, v=<69,136,117>, a=<8,-1,1> -p=<-1685,-4911,-4942>, v=<-2,81,170>, a=<4,6,0> -p=<-5861,831,5730>, v=<7,48,-3>, a=<13,-5,-13> -p=<2868,628,1148>, v=<-99,25,65>, a=<0,-3,-7> -p=<-1308,-4766,-4652>, v=<0,61,40>, a=<3,7,8> -p=<-1917,-1721,1699>, v=<-9,-59,-59>, a=<5,8,0> -p=<4897,-13852,5050>, v=<14,-6,-29>, a=<-7,18,-5> -p=<-836,-1606,-6416>, v=<41,-20,-35>, a=<-1,3,10> -p=<-9338,5648,-9068>, v=<-1,-6,73>, a=<12,-7,8> -p=<-7778,-9679,-2360>, v=<39,47,81>, a=<8,10,-1> -p=<7978,11537,6649>, v=<-25,-57,-30>, a=<-9,-12,-7> -p=<-8870,-3517,3022>, v=<-73,-71,63>, a=<15,8,-7> -p=<334,9821,682>, v=<51,67,-117>, a=<-3,-16,5> -p=<-378,289,-2545>, v=<-115,19,22>, a=<12,-3,9> -p=<672,184,2159>, v=<-66,123,-81>, a=<3,-12,-2> -p=<-2583,2620,-4456>, v=<23,7,58>, a=<9,-12,14> -p=<4662,1507,500>, v=<-135,-17,-57>, a=<-8,-5,3> -p=<-1533,2536,1403>, v=<39,-66,43>, a=<3,-5,-10> -p=<714,919,122>, v=<-68,-66,-39>, a=<3,2,3> -p=<21,-2588,-3931>, v=<53,-31,154>, a=<-5,14,3> -p=<1575,1255,1655>, v=<-65,-60,42>, a=<-1,0,-11> -p=<-2961,-404,-2818>, v=<184,30,101>, a=<-4,-1,3> -p=<-2961,1465,-3280>, v=<52,51,-9>, a=<8,-11,15> -p=<446,81,-335>, v=<-29,-42,-22>, a=<-2,6,8> -p=<193,510,-720>, v=<-6,-87,31>, a=<-2,7,5> -p=<-214,-2196,853>, v=<7,141,-28>, a=<2,10,-9> -p=<-49,48,-984>, v=<10,-21,1>, a=<-1,3,14> -p=<-1237,719,-621>, v=<82,-10,4>, a=<5,-9,8> -p=<-104,1709,171>, v=<63,-136,-50>, a=<-9,-3,5> -p=<611,-513,-1215>, v=<-38,0,82>, a=<-3,8,4> -p=<-1138,-1954,-742>, v=<1,125,21>, a=<17,9,7> -p=<1227,587,-841>, v=<-82,2,6>, a=<-5,-9,11> -p=<820,-1019,1414>, v=<-93,76,-109>, a=<3,3,-4> -p=<-2978,8304,-1519>, v=<30,-106,-23>, a=<5,-12,5> -p=<-2137,-889,5441>, v=<106,-74,-38>, a=<-2,7,-10> -p=<-629,5259,-533>, v=<69,-61,78>, a=<-3,-8,-4> -p=<10318,3176,-4795>, v=<-111,31,89>, a=<-11,-7,3> -p=<3246,4315,-2262>, v=<-78,-55,67>, a=<-1,-4,0> -p=<-2381,5199,2872>, v=<35,-11,126>, a=<2,-8,-12> -p=<6051,-6140,-2381>, v=<-38,60,-122>, a=<-8,7,11> -p=<-1925,445,1736>, v=<31,-85,-133>, a=<7,6,4> -p=<1571,-1683,3617>, v=<-43,57,-62>, a=<-4,3,-13> -p=<184,2003,-734>, v=<10,-97,-63>, a=<-2,-1,10> -p=<-1583,-3070,368>, v=<63,150,-1>, a=<2,1,-2> -p=<2255,-1550,1527>, v=<-79,-110,-72>, a=<-4,19,-1> -p=<-595,65,3256>, v=<51,-5,-203>, a=<-2,0,3> -p=<-766,2839,-1580>, v=<-35,-67,29>, a=<7,-7,5> -p=<-116,-2071,1060>, v=<48,63,-19>, a=<-4,4,-3> -p=<-3386,-2081,-1570>, v=<159,11,81>, a=<1,9,0> -p=<1604,1409,470>, v=<25,-48,-42>, a=<-10,-2,2> -p=<-3586,-511,290>, v=<64,6,51>, a=<11,2,-6> -p=<-596,429,-3420>, v=<-12,-20,58>, a=<4,0,11> -p=<704,539,1230>, v=<70,-78,-59>, a=<-10,5,0> -p=<3944,-4401,1840>, v=<-113,148,-16>, a=<-8,7,-7> -p=<-456,3089,1380>, v=<65,-69,7>, a=<-4,-8,-7> -p=<1714,1789,-780>, v=<-96,59,-53>, a=<1,-14,9> -p=<1943,-411,2163>, v=<0,20,-14>, a=<-16,1,-16> -p=<98,-1566,603>, v=<11,49,74>, a=<-2,7,-14> -p=<-502,-2541,-342>, v=<3,82,-95>, a=<4,11,15> -p=<263,-291,1473>, v=<72,12,-112>, a=<-11,1,2> -p=<1688,-381,-567>, v=<-143,-22,-40>, a=<4,6,10> -p=<-682,519,2883>, v=<23,-10,-118>, a=<3,-3,-9> -p=<383,744,-72>, v=<8,-1,79>, a=<-4,-6,-9> -p=<443,9,168>, v=<52,0,71>, a=<-10,0,-10> -p=<-1387,-2950,-247>, v=<115,110,-16>, a=<-4,6,3> -p=<-730,-1438,-2092>, v=<12,83,77>, a=<3,0,4> -p=<2276,695,-301>, v=<-22,-26,44>, a=<-11,-1,-3> -p=<628,-3534,-2913>, v=<-39,-38,186>, a=<1,15,-5> -p=<-140,1326,603>, v=<-107,-28,-23>, a=<9,-2,0> -p=<1480,-1650,2583>, v=<13,71,-43>, a=<-6,0,-5> -p=<-824,-366,-657>, v=<59,-20,-108>, a=<-2,3,11> -p=<1168,-426,-2625>, v=<1,20,74>, a=<-4,0,3> -p=<-260,2154,2079>, v=<-2,0,78>, a=<1,-7,-13> -p=<-128,2286,3579>, v=<55,32,-122>, a=<-4,-10,-2> -p=<-3812,1686,27>, v=<-29,-43,-24>, a=<15,-2,2> -p=<-33,-807,1257>, v=<-20,31,-83>, a=<4,4,-2> -p=<942,-1249,685>, v=<-67,79,-53>, a=<0,2,0> -p=<-423,-1119,191>, v=<-32,-15,-15>, a=<10,14,0> -p=<2772,-7072,-3749>, v=<-53,-94,34>, a=<-2,19,5> -p=<-3052,3008,5659>, v=<-3,-13,-128>, a=<6,-5,-3> -p=<2980,-11056,-2565>, v=<56,80,30>, a=<-9,16,3> -p=<4676,3696,7083>, v=<-162,-51,-90>, a=<1,-4,-8> -p=<-492,2224,379>, v=<82,-71,-62>, a=<-4,0,3> -p=<3332,-1264,8443>, v=<-54,104,-17>, a=<-3,-4,-15> -p=<-1196,11904,-3445>, v=<-28,-126,-25>, a=<4,-15,8> -p=<244,2096,8779>, v=<-7,65,22>, a=<0,-8,-18> -p=<-1502,113,127>, v=<3,-41,-53>, a=<12,4,6> -p=<-1112,233,-548>, v=<65,15,40>, a=<1,-4,0> -p=<73,-2377,-458>, v=<10,-3,42>, a=<-2,20,-1> -p=<-632,-1537,-188>, v=<-31,-3,48>, a=<9,13,-4> -p=<253,8,1267>, v=<14,-2,-57>, a=<-4,0,-3> -p=<-2342,-1792,517>, v=<67,54,1>, a=<11,8,-4> -p=<-1607,1193,37>, v=<2,-81,-103>, a=<13,0,13> -p=<-3302,-232,-2588>, v=<123,6,32>, a=<12,1,18> -p=<156,-333,2057>, v=<58,-71,-52>, a=<-6,8,-4> -p=<-75,969,-2017>, v=<25,-12,10>, a=<-2,-3,8> -p=<30,-4869,1469>, v=<-156,35,-46>, a=<14,18,-2> -p=<-3204,1200,-2374>, v=<86,-100,27>, a=<6,4,8> -p=<2907,1137,-2815>, v=<-18,24,26>, a=<-11,-7,10> -p=<-278,189,-3099>, v=<3,-12,51>, a=<1,0,11> -p=<-468,930,-2928>, v=<43,-21,102>, a=<-2,-3,5> -p=<-2045,-210,207>, v=<-44,-11,-23>, a=<15,2,1> -p=<596,4369,-420>, v=<-113,-42,0>, a=<8,-19,2> -p=<-829,-96,-1921>, v=<-8,13,129>, a=<5,-1,-3> -p=<2914,-780,1537>, v=<-85,29,7>, a=<-7,1,-9> -p=<667,-850,-181>, v=<18,13,-9>, a=<-5,3,2> -p=<952,404,3961>, v=<33,67,-117>, a=<-8,-9,-9> -p=<-4083,689,3182>, v=<58,-38,-36>, a=<16,0,-13> -p=<3669,2627,1586>, v=<-70,-20,-12>, a=<-12,-12,-7> -p=<1731,-204,-1549>, v=<-88,69,63>, a=<0,-6,2> -p=<-2525,366,1909>, v=<16,39,31>, a=<12,-6,-13> -p=<420,3862,-200>, v=<-19,-105,-18>, a=<0,-10,3> -p=<1256,-1382,-390>, v=<-63,61,-8>, a=<0,1,3> -p=<1284,1741,445>, v=<-113,-41,68>, a=<4,-8,-11> -p=<-780,885,885>, v=<-1,-47,-36>, a=<6,-1,-2> -p=<796,-1587,-731>, v=<-74,99,48>, a=<3,0,0> -p=<1036,-1859,1717>, v=<30,-3,-20>, a=<-11,14,-10> -p=<52,669,325>, v=<-2,9,-103>, a=<0,-6,10> -p=<1724,-2675,-379>, v=<-149,99,9>, a=<5,8,2> -p=<-3652,989,-435>, v=<136,-96,4>, a=<11,4,3> -p=<-660,-427,-1139>, v=<119,69,116>, a=<-9,-5,-5> -p=<-1054,-503,-2618>, v=<41,30,114>, a=<3,0,6> -p=<1594,2001,-10>, v=<-31,-16,19>, a=<-8,-13,-2> -p=<1946,-839,-2250>, v=<-121,-34,91>, a=<0,10,6> -p=<1882,-311,2262>, v=<-15,35,-55>, a=<-12,-2,-10> -p=<1642,1073,206>, v=<-51,-77,-54>, a=<-6,1,5> -p=<2154,817,326>, v=<-66,58,32>, a=<-8,-13,-6> -p=<-1726,2617,1662>, v=<100,-80,-43>, a=<1,-10,-7> -p=<-2662,2545,-130>, v=<48,-101,18>, a=<14,-7,-1> -p=<1799,2271,3676>, v=<-122,-39,-86>, a=<4,-3,-3> -p=<-7371,-5583,2892>, v=<133,82,-116>, a=<9,8,1> -p=<2107,-1761,246>, v=<-17,18,51>, a=<-4,3,-4> -p=<-4627,-1453,2738>, v=<122,94,-9>, a=<3,-3,-6> -p=<917,-1173,2164>, v=<69,-32,113>, a=<-7,5,-13> -p=<-2821,493,-5214>, v=<14,39,-15>, a=<6,-4,14> -p=<-497,3503,-5102>, v=<18,-141,126>, a=<0,1,4> -p=<-5789,1613,2206>, v=<149,-30,39>, a=<4,-2,-8> -p=<1855,-2881,2850>, v=<-153,87,-100>, a=<6,1,0> -p=<-1437,-2510,2378>, v=<3,51,-5>, a=<6,6,-10> -p=<-2256,871,-1654>, v=<-24,-33,0>, a=<12,-1,7> -p=<474,-746,-562>, v=<-22,-33,3>, a=<0,6,2> -p=<-998,-5851,-402>, v=<103,189,123>, a=<-5,10,-10> -p=<2902,-1171,-1782>, v=<-113,18,45>, a=<-3,4,4> -p=<-1268,1779,-372>, v=<1,-14,-57>, a=<6,-7,7> -p=<532,-2881,-402>, v=<121,30,18>, a=<-14,11,0> -p=<-1248,-3501,-3432>, v=<63,124,-9>, a=<0,5,17> -p=<-868,-531,-3632>, v=<44,49,43>, a=<0,-2,13> -p=<6474,-2376,-1510>, v=<15,-67,32>, a=<-14,9,1> -p=<-3136,-6375,-9105>, v=<85,-2,149>, a=<1,13,9> -p=<863,6614,1218>, v=<84,-37,-72>, a=<-7,-11,2> -p=<-966,197,7170>, v=<31,-150,-40>, a=<0,9,-12> -p=<-3446,-2655,6302>, v=<-33,38,-156>, a=<9,3,-3> -p=<4397,-3709,-1076>, v=<-62,56,-62>, a=<-5,4,6> -p=<-322,-1160,-2709>, v=<-31,16,88>, a=<6,6,8> -p=<2024,-2316,2510>, v=<-88,75,-39>, a=<-3,7,-12> -p=<-50,1118,1184>, v=<-56,-19,-24>, a=<7,-5,-5> -p=<-12607,-1099,3400>, v=<98,83,8>, a=<18,-3,-7> -p=<-783,-747,-6216>, v=<-24,-93,-71>, a=<3,7,16> -p=<-558,-2190,4022>, v=<61,-16,-43>, a=<-3,8,-9> -p=<-4358,-540,-6053>, v=<18,100,87>, a=<12,-6,12> -p=<2642,2960,-1303>, v=<-41,-1,53>, a=<-5,-9,0> -p=<-1408,1010,6972>, v=<-48,-40,-187>, a=<8,0,-7> -p=<-1433,-5540,-5403>, v=<135,66,74>, a=<-6,12,11> -p=<217,-4115,2747>, v=<-35,126,-70>, a=<2,3,-3> -p=<1792,5685,-2253>, v=<97,-71,91>, a=<-13,-12,0> -p=<-158,1210,172>, v=<71,121,111>, a=<-5,-13,-9> -p=<-858,-3615,-3303>, v=<-18,15,159>, a=<4,10,-2> -p=<-6083,-5215,-1353>, v=<61,14,55>, a=<14,15,0> -p=<1908,1058,-75>, v=<60,-95,57>, a=<-10,4,-4> -p=<907,4204,-4820>, v=<31,-81,-44>, a=<-5,-6,17> -p=<3637,-411,-2246>, v=<34,29,-35>, a=<-13,-1,9> -p=<1362,-4155,-283>, v=<54,11,-43>, a=<-8,11,4> -p=<4701,-9467,8834>, v=<-133,37,-37>, a=<0,13,-12> -p=<-5204,2713,-3871>, v=<6,31,2>, a=<8,-6,6> -p=<-2016,-470,-1992>, v=<-286,-72,-288>, a=<19,6,19> -p=<-2067,-2051,-1458>, v=<-296,-291,-207>, a=<20,22,10> -p=<-1027,-2595,-500>, v=<-147,-371,-71>, a=<8,27,7> -p=<-71,-3053,486>, v=<-10,-430,69>, a=<-1,33,-5> -p=<1668,359,-2327>, v=<238,50,-329>, a=<-15,-4,28> -p=<2009,537,-2278>, v=<284,76,-324>, a=<-14,-8,17> -p=<-773,2518,931>, v=<-112,357,135>, a=<5,-23,-5> -p=<411,802,2157>, v=<63,108,308>, a=<-5,-10,-21> -p=<-1874,107,2417>, v=<-266,18,347>, a=<12,-5,-26> -p=<2244,-2094,35>, v=<317,-298,9>, a=<-17,22,3> -p=<-1796,1907,1218>, v=<-255,270,175>, a=<20,-21,-10> -p=<-2128,1882,-1395>, v=<-311,268,-196>, a=<19,-16,11> -p=<1115,1844,-2272>, v=<159,260,-324>, a=<-4,-20,26> -p=<2896,560,152>, v=<414,77,25>, a=<-33,-8,1> -p=<2896,1485,547>, v=<413,210,80>, a=<-23,-14,-6> -p=<2936,-363,123>, v=<419,-49,19>, a=<-29,0,-2> -p=<1380,-388,-3156>, v=<197,-55,-448>, a=<-19,0,30> -p=<-240,-2621,-1687>, v=<-32,-368,-241>, a=<6,23,15> -p=<-2151,-239,1867>, v=<-310,-37,268>, a=<21,-4,-19> -p=<-2715,494,1671>, v=<-384,70,236>, a=<31,-3,-16> -p=<1594,442,2371>, v=<231,60,340>, a=<-13,-5,-25> -p=<-387,2027,1630>, v=<-55,284,232>, a=<-1,-21,-21> -p=<873,2025,1551>, v=<131,291,220>, a=<-8,-22,-16> -p=<-2969,370,26>, v=<-429,50,2>, a=<28,-5,-1> -p=<2798,897,-1992>, v=<400,125,-287>, a=<-33,-8,25> -p=<-1072,892,-2424>, v=<-153,127,-354>, a=<10,-5,23> -p=<1194,-2051,-1285>, v=<166,-290,-186>, a=<-13,25,16> -p=<-304,-2224,-1635>, v=<-39,-313,-229>, a=<7,22,16> -p=<498,1066,2607>, v=<74,151,370>, a=<-11,-12,-30> -p=<3622,401,268>, v=<514,57,32>, a=<-34,-4,-2> -p=<-1957,-506,-2453>, v=<-285,-66,-348>, a=<16,3,23> -p=<-1362,-501,-2102>, v=<-195,-65,-299>, a=<18,7,19> -p=<1933,1724,1334>, v=<279,246,189>, a=<-25,-21,-14> -p=<-2142,1260,-2152>, v=<-311,181,-314>, a=<22,-12,23> -p=<-347,-1371,-2579>, v=<-51,-196,-371>, a=<6,16,25> -p=<1083,2704,106>, v=<151,385,17>, a=<-12,-30,4> -p=<-2820,1697,811>, v=<-400,242,120>, a=<32,-16,-6> -p=<-1104,2720,-1534>, v=<-156,388,-219>, a=<11,-26,17> -p=<589,-751,2836>, v=<81,-108,406>, a=<-1,3,-27> -p=<-1067,-1168,2214>, v=<-152,-161,317>, a=<10,11,-22> -p=<-1207,-366,2703>, v=<-172,-52,381>, a=<17,3,-34> -p=<-1192,-3124,-321>, v=<-173,-452,-44>, a=<7,33,7> -p=<2232,-893,1778>, v=<319,-128,255>, a=<-22,9,-21> -p=<1871,-460,2230>, v=<269,-65,321>, a=<-17,4,-22> -p=<-2409,-753,795>, v=<-344,-106,113>, a=<20,4,-4> -p=<1280,386,-2672>, v=<181,53,-383>, a=<-8,-4,29> -p=<3029,1184,391>, v=<433,169,56>, a=<-25,-6,-2> -p=<1127,-737,2201>, v=<161,-105,311>, a=<-10,13,-20> -p=<-2639,-1118,-1104>, v=<-380,-159,-163>, a=<26,7,13> -p=<1096,258,3149>, v=<158,36,449>, a=<-7,1,-32> -p=<1163,2004,2321>, v=<166,283,330>, a=<-12,-25,-20> -p=<2115,-918,-1957>, v=<309,-131,-279>, a=<-20,13,18> -p=<-1432,1051,2016>, v=<-205,149,290>, a=<15,-10,-18> -p=<-1889,2232,-912>, v=<-271,317,-126>, a=<21,-19,3> -p=<-2217,1395,1388>, v=<-313,196,202>, a=<22,-17,-13> -p=<-1257,-704,-2330>, v=<-180,-100,-331>, a=<12,7,27> -p=<-1663,1076,-1905>, v=<-234,150,-270>, a=<16,-10,19> -p=<1327,1340,2125>, v=<189,195,302>, a=<-13,-11,-20> -p=<-1280,-739,-2082>, v=<-179,-107,-300>, a=<11,4,21> -p=<-1554,-998,2380>, v=<-222,-143,342>, a=<19,3,-27> -p=<679,-2132,2115>, v=<95,-305,299>, a=<-3,18,-22> -p=<-217,2813,-1020>, v=<-35,399,-142>, a=<3,-28,9> -p=<2867,-866,-1319>, v=<409,-125,-184>, a=<-28,5,10> -p=<-1320,1952,2228>, v=<-188,280,317>, a=<13,-20,-17> -p=<-1304,-1233,2264>, v=<-186,-174,319>, a=<17,12,-22> -p=<-2692,-721,-888>, v=<-382,-103,-129>, a=<20,3,9> -p=<-1976,-1554,-1752>, v=<-275,-218,-250>, a=<20,9,19> -p=<-1203,2819,-1294>, v=<-172,405,-185>, a=<11,-27,14> -p=<-2327,2241,449>, v=<-334,326,62>, a=<24,-24,-2> -p=<-2067,2050,1210>, v=<-295,297,169>, a=<20,-15,-7> -p=<1378,2394,527>, v=<190,344,70>, a=<-11,-22,-5> -p=<-1488,-2886,-992>, v=<-212,-413,-148>, a=<10,29,8> -p=<-1696,2898,-319>, v=<-245,413,-45>, a=<12,-28,2> -p=<3098,797,-510>, v=<440,113,-67>, a=<-32,-7,6> -p=<-2871,-578,-611>, v=<-410,-82,-88>, a=<24,5,5> -p=<1034,-1285,-2480>, v=<146,-185,-354>, a=<-10,15,22> -p=<879,1740,1198>, v=<122,246,168>, a=<-10,-16,-12> -p=<3168,1337,-308>, v=<448,191,-40>, a=<-31,-13,3> -p=<3035,-1149,893>, v=<434,-163,126>, a=<-27,9,-9> -p=<-947,-2705,656>, v=<-131,-387,93>, a=<8,25,-3> -p=<500,-2393,1363>, v=<77,-348,193>, a=<0,23,-8> -p=<-1882,1920,796>, v=<-268,272,115>, a=<19,-17,-3> -p=<-960,493,-2623>, v=<-139,68,-374>, a=<9,-8,21> -p=<1828,-2071,1203>, v=<259,-291,167>, a=<-18,21,-9> -p=<-1604,1283,-1649>, v=<-230,181,-239>, a=<18,-14,16> -p=<-1799,2321,-868>, v=<-252,330,-119>, a=<22,-21,8> -p=<-24,2346,-1669>, v=<-7,335,-243>, a=<4,-22,19> -p=<-876,-1276,2680>, v=<-123,-188,378>, a=<10,14,-26> -p=<-2889,1176,545>, v=<-415,168,80>, a=<32,-11,-7> -p=<-86,1176,2086>, v=<-12,168,300>, a=<-1,-7,-20> -p=<-402,-2477,807>, v=<-57,-353,119>, a=<4,27,-2> -p=<-1970,-1448,-1967>, v=<-278,-202,-283>, a=<19,12,24> -p=<631,-958,-2998>, v=<89,-136,-432>, a=<-8,10,33> -p=<-1785,1056,1545>, v=<-256,148,213>, a=<13,-15,-15> -p=<1676,1822,1043>, v=<241,263,147>, a=<-16,-17,-8> -p=<-56,2448,1580>, v=<-11,347,223>, a=<4,-24,-15> -p=<-2842,439,379>, v=<-406,66,54>, a=<31,-2,-4> -p=<-1293,1742,-1884>, v=<-183,246,-267>, a=<10,-13,18> -p=<-1336,2627,-1311>, v=<-197,379,-184>, a=<9,-23,12> -p=<-618,2160,-2253>, v=<-83,313,-321>, a=<9,-21,22> -p=<2734,-1738,-454>, v=<389,-247,-60>, a=<-27,17,8> -p=<-2927,-295,-97>, v=<-417,-40,-13>, a=<27,1,5> -p=<1538,-1987,-280>, v=<222,-283,-38>, a=<-13,18,5> -p=<-2076,1215,-363>, v=<-298,172,-53>, a=<18,-17,3> -p=<-2642,183,341>, v=<-377,19,50>, a=<23,1,-1> -p=<-31,2384,-1377>, v=<-5,337,-199>, a=<2,-26,11> -p=<771,690,-2686>, v=<116,98,-379>, a=<-15,-3,29> -p=<-68,-2134,-3000>, v=<-10,-301,-431>, a=<1,23,33> -p=<3022,1487,35>, v=<434,213,6>, a=<-31,-14,6> -p=<-402,-2383,-1800>, v=<-57,-340,-257>, a=<2,17,17> -p=<-1125,744,-2551>, v=<-156,106,-364>, a=<8,-3,25> -p=<705,2907,-863>, v=<100,411,-120>, a=<-4,-37,6> -p=<-303,-424,3358>, v=<-43,-57,481>, a=<9,0,-33> -p=<3065,-242,1553>, v=<438,-36,221>, a=<-28,-4,-15> -p=<211,3341,-1331>, v=<33,481,-190>, a=<1,-35,12> -p=<2309,1563,-21>, v=<333,218,-3>, a=<-21,-16,0> -p=<-1142,3233,737>, v=<-158,461,107>, a=<15,-32,-2> -p=<241,-3065,-706>, v=<32,-437,-101>, a=<-1,30,10> -p=<-1229,-1539,2489>, v=<-171,-212,353>, a=<14,15,-20> -p=<1664,132,-1899>, v=<236,19,-273>, a=<-18,1,15> -p=<-27,-599,2800>, v=<-2,-87,402>, a=<4,5,-30> -p=<-3022,842,-1427>, v=<-431,120,-204>, a=<26,-13,14> -p=<-2558,-862,-996>, v=<-362,-122,-135>, a=<28,11,7> -p=<1860,-1025,-2431>, v=<259,-143,-349>, a=<-21,13,24> -p=<2563,-1818,534>, v=<364,-258,82>, a=<-30,20,-8> -p=<614,-3055,-609>, v=<87,-431,-89>, a=<-6,27,2> -p=<-180,-3323,420>, v=<-22,-472,60>, a=<5,34,-2> -p=<1270,1194,-2769>, v=<182,168,-391>, a=<-14,-11,23> -p=<-89,-1147,-2030>, v=<-13,-165,-285>, a=<3,12,22> -p=<-159,-2746,874>, v=<-20,-391,128>, a=<3,27,-15> -p=<2942,694,778>, v=<423,104,112>, a=<-28,-5,-8> -p=<2937,775,238>, v=<418,118,30>, a=<-29,-7,1> -p=<-2889,-1216,-1522>, v=<-414,-176,-214>, a=<29,13,10> -p=<3108,-504,1282>, v=<440,-72,183>, a=<-37,6,-13> -p=<1404,-2482,-779>, v=<201,-356,-114>, a=<-15,21,11> -p=<-3135,1691,-457>, v=<-445,242,-63>, a=<33,-14,7> -p=<593,-560,-3030>, v=<85,-76,-433>, a=<-11,7,29> -p=<-1810,2667,339>, v=<-259,384,50>, a=<21,-28,-6> -p=<1361,2731,923>, v=<194,391,131>, a=<-13,-29,-11> -p=<-491,-1870,2097>, v=<-70,-259,295>, a=<4,12,-16> -p=<202,-3264,584>, v=<30,-464,83>, a=<-2,28,-4> -p=<-420,2323,-1657>, v=<-60,332,-233>, a=<5,-23,20> -p=<1630,-1018,1758>, v=<232,-143,246>, a=<-13,10,-17> -p=<1479,-2655,-951>, v=<213,-380,-135>, a=<-17,23,5> -p=<-1309,599,-2712>, v=<-191,85,-389>, a=<14,-3,26> -p=<-365,-1831,-3076>, v=<-52,-257,-439>, a=<1,18,28> -p=<-1572,-82,2148>, v=<-224,-6,308>, a=<11,1,-22> -p=<1951,839,-1829>, v=<275,120,-266>, a=<-16,-2,18> -p=<-462,-2306,1178>, v=<-67,-327,168>, a=<4,25,-9> -p=<-1355,-1176,2319>, v=<-189,-167,329>, a=<10,11,-23> -p=<-1609,846,1797>, v=<-226,121,262>, a=<23,-6,-17> -p=<-584,-214,2601>, v=<-80,-30,376>, a=<4,1,-26> -p=<-2998,-621,-215>, v=<-428,-88,-33>, a=<29,4,6> -p=<-2037,-2515,-628>, v=<-283,-362,-90>, a=<19,26,2> -p=<899,-825,3038>, v=<128,-123,434>, a=<-6,6,-32> -p=<1501,246,-2640>, v=<208,35,-377>, a=<-12,-8,23> -p=<-2606,-1301,775>, v=<-372,-185,112>, a=<22,12,-3> -p=<-1243,1236,2385>, v=<-182,172,337>, a=<11,-13,-21> -p=<759,735,-2578>, v=<111,105,-370>, a=<-4,-2,26> -p=<-2138,576,2315>, v=<-303,87,330>, a=<23,-6,-22> -p=<1450,-2184,-1592>, v=<206,-312,-226>, a=<-12,23,19> -p=<-1024,2357,1170>, v=<-146,332,164>, a=<10,-24,-11> -p=<1895,2547,-22>, v=<270,365,-8>, a=<-24,-25,0> -p=<2776,124,-668>, v=<395,18,-90>, a=<-24,2,9> -p=<-2599,104,474>, v=<-366,9,74>, a=<25,-6,-8> -p=<139,185,2854>, v=<20,28,406>, a=<-5,3,-30> -p=<2164,1455,-616>, v=<309,205,-89>, a=<-25,-15,3> -p=<1800,463,2549>, v=<256,66,367>, a=<-19,-4,-28> -p=<2538,-1430,344>, v=<361,-203,47>, a=<-28,15,-3> -p=<-9,2185,1710>, v=<-6,312,246>, a=<-4,-22,-15> -p=<-34,144,-3420>, v=<-4,13,-489>, a=<-3,-2,33> -p=<880,813,-2385>, v=<125,115,-339>, a=<-13,-7,18> -p=<1889,-2915,20>, v=<271,-421,0>, a=<-14,25,-2> -p=<1368,-1912,-679>, v=<198,-280,-95>, a=<-13,23,4> -p=<2464,756,-1235>, v=<351,108,-174>, a=<-18,-12,12> -p=<536,-896,2762>, v=<80,-124,398>, a=<-6,5,-29> -p=<-275,26,3405>, v=<-41,2,489>, a=<2,-3,-32> -p=<-691,2510,2012>, v=<-100,358,287>, a=<2,-24,-21> -p=<186,776,-2800>, v=<26,108,-398>, a=<-1,-9,31> -p=<48,-2765,51>, v=<6,-394,7>, a=<0,28,1> -p=<-1243,-2674,-621>, v=<-181,-387,-90>, a=<14,25,8> -p=<637,-2968,249>, v=<91,-432,37>, a=<-8,29,-2> -p=<-108,2644,-359>, v=<-15,377,-43>, a=<0,-25,1> -p=<311,2396,1647>, v=<46,341,238>, a=<0,-23,-19> -p=<2091,863,1991>, v=<300,123,281>, a=<-17,-8,-22> -p=<-1316,1419,1976>, v=<-183,204,279>, a=<13,-15,-21> -p=<57,-1973,2964>, v=<2,-281,424>, a=<-1,21,-29> -p=<-775,-2721,-1750>, v=<-109,-389,-247>, a=<13,28,19> -p=<731,1583,-2157>, v=<110,228,-314>, a=<-6,-15,22> -p=<-893,2775,-190>, v=<-126,396,-26>, a=<6,-27,2> -p=<367,-2679,-1080>, v=<51,-384,-154>, a=<-7,27,11> -p=<3177,-367,441>, v=<445,-51,64>, a=<-30,3,-5> -p=<-1647,-1342,2341>, v=<-240,-185,331>, a=<12,13,-23> -p=<986,-2763,1286>, v=<136,-391,185>, a=<-9,28,-9> -p=<-2802,-1225,252>, v=<-399,-180,31>, a=<26,13,1> -p=<175,2883,-1052>, v=<30,408,-150>, a=<-2,-31,13> -p=<-229,-2683,-1449>, v=<-28,-386,-211>, a=<7,28,14> -p=<2786,531,1110>, v=<398,77,157>, a=<-29,-8,-9> -p=<279,-2586,-2001>, v=<35,-371,-285>, a=<-2,27,20> -p=<2176,-126,1717>, v=<304,-19,245>, a=<-21,1,-24> -p=<2153,2118,998>, v=<304,302,142>, a=<-26,-24,-9> -p=<-744,2719,1245>, v=<-111,386,176>, a=<2,-28,-16> -p=<3101,-1190,-994>, v=<444,-167,-143>, a=<-34,12,7> -p=<-156,-2267,-2303>, v=<-21,-324,-334>, a=<5,19,22> -p=<1023,-1402,2182>, v=<143,-199,312>, a=<-8,20,-28> -p=<2486,-1200,-1942>, v=<359,-171,-278>, a=<-22,12,19> -p=<1355,1883,2115>, v=<197,269,305>, a=<-15,-18,-24> -p=<1830,788,2438>, v=<263,107,349>, a=<-13,-9,-17> -p=<-912,715,3178>, v=<-131,105,450>, a=<6,-9,-30> -p=<1612,-1972,-156>, v=<226,-283,-23>, a=<-20,13,4> -p=<893,-2183,2349>, v=<126,-319,334>, a=<-13,23,-24> -p=<1817,-2407,-431>, v=<256,-343,-63>, a=<-18,20,1> -p=<2372,1739,-527>, v=<336,250,-74>, a=<-23,-20,4> -p=<-2169,-888,1343>, v=<-305,-122,186>, a=<23,3,-15> -p=<1004,-2830,-740>, v=<139,-399,-107>, a=<-11,27,6> -p=<-305,-2955,521>, v=<-40,-419,74>, a=<3,29,-7> -p=<-509,1141,2439>, v=<-75,160,348>, a=<3,-11,-24> -p=<-2301,1385,-970>, v=<-327,199,-139>, a=<15,-17,11> -p=<-2030,1762,-1028>, v=<-292,253,-142>, a=<20,-21,11> -p=<-861,2917,38>, v=<-123,415,7>, a=<7,-29,3> -p=<-167,-2616,1713>, v=<-21,-374,241>, a=<2,18,-20> -p=<-1058,1016,-2844>, v=<-157,151,-402>, a=<10,-10,28> -p=<1515,795,-2400>, v=<214,120,-339>, a=<-14,-5,25> -p=<-1976,1929,1093>, v=<-285,274,156>, a=<23,-17,-10> -p=<-2791,376,-1195>, v=<-397,50,-169>, a=<27,1,14> -p=<-415,-2632,-1896>, v=<-61,-373,-274>, a=<5,29,19> -p=<731,2967,-1217>, v=<104,426,-175>, a=<-4,-29,12> -p=<-1052,-2543,-649>, v=<-154,-365,-94>, a=<8,23,0> -p=<-86,-1297,2692>, v=<-8,-183,387>, a=<1,12,-29> -p=<2334,-1447,1773>, v=<334,-210,250>, a=<-23,19,-22> -p=<-1461,1036,3091>, v=<-214,152,440>, a=<14,-7,-29> -p=<574,1634,-2195>, v=<82,232,-314>, a=<-4,-8,25> -p=<2758,-1277,-252>, v=<395,-186,-36>, a=<-30,16,-2> -p=<2285,-1449,1267>, v=<328,-207,185>, a=<-28,16,-12> -p=<-1991,-2098,-804>, v=<-284,-292,-118>, a=<17,16,8> -p=<1255,909,2080>, v=<180,129,296>, a=<-12,-13,-18> -p=<-1210,1924,-2166>, v=<-170,273,-309>, a=<10,-19,21> -p=<498,619,-2631>, v=<70,90,-374>, a=<-6,-6,29> -p=<1181,1790,-2398>, v=<170,253,-340>, a=<-10,-16,27> -p=<1096,-2878,-674>, v=<156,-411,-98>, a=<-14,29,9> -p=<-1718,2707,-58>, v=<-244,383,-7>, a=<17,-31,1> -p=<576,-3141,-439>, v=<83,-454,-62>, a=<0,28,7> -p=<1993,-1807,1900>, v=<284,-255,271>, a=<-18,18,-18> -p=<758,2506,-1611>, v=<105,354,-234>, a=<-6,-25,20> -p=<-2346,1520,-480>, v=<-335,217,-66>, a=<19,-12,4> -p=<-3102,541,88>, v=<-435,80,11>, a=<33,-7,1> -p=<1428,1818,-1579>, v=<205,256,-224>, a=<-12,-18,15> -p=<-2580,242,-393>, v=<-367,37,-61>, a=<23,2,4> -p=<2525,-866,-1209>, v=<360,-119,-172>, a=<-25,6,12> -p=<-1643,-1621,1822>, v=<-238,-235,263>, a=<13,16,-17> -p=<-1935,2048,802>, v=<-274,293,110>, a=<21,-20,-6> -p=<1482,2793,-375>, v=<213,399,-47>, a=<-17,-30,10> -p=<1252,2495,-610>, v=<176,357,-88>, a=<-12,-26,9> -p=<1009,250,-2787>, v=<143,35,-398>, a=<-10,-5,27> -p=<-878,2715,-1519>, v=<-125,385,-217>, a=<9,-24,16> -p=<-1311,2581,1146>, v=<-184,371,160>, a=<13,-24,-10> -p=<2640,410,-781>, v=<378,59,-114>, a=<-19,-6,14> -p=<-371,1354,-2693>, v=<-52,194,-384>, a=<6,-13,29> -p=<537,-2185,-2231>, v=<75,-312,-317>, a=<-3,28,25> -p=<-32,-2568,1670>, v=<-4,-370,242>, a=<3,25,-14> -p=<1565,1932,454>, v=<223,277,66>, a=<-15,-19,-3> -p=<-1345,2918,-69>, v=<-192,416,-11>, a=<10,-25,1> -p=<-2085,-271,-1874>, v=<-297,-38,-263>, a=<20,4,23> -p=<2111,-2280,-74>, v=<305,-322,-6>, a=<-22,24,-4> -p=<12,-488,3282>, v=<6,-69,462>, a=<-4,6,-35> -p=<-829,-937,2551>, v=<-116,-137,367>, a=<3,12,-23> -p=<1314,2115,-1539>, v=<187,298,-218>, a=<-13,-14,20> -p=<666,553,-3136>, v=<94,80,-448>, a=<-5,-5,28> -p=<373,2363,-928>, v=<52,335,-130>, a=<0,-20,8> -p=<-16,923,3038>, v=<0,125,435>, a=<0,-11,-30> -p=<-582,-2415,-1123>, v=<-84,-349,-157>, a=<5,20,18> -p=<1104,-320,2444>, v=<158,-44,354>, a=<-11,2,-23> -p=<-187,-1095,2647>, v=<-26,-156,376>, a=<-1,12,-21> -p=<-1421,-2357,200>, v=<-201,-333,33>, a=<15,21,2> -p=<1877,90,2147>, v=<273,12,309>, a=<-16,0,-21> -p=<-1880,419,-2597>, v=<-271,63,-374>, a=<18,-4,25> -p=<-1609,414,-2417>, v=<-229,59,-351>, a=<10,-1,24> -p=<-1480,2235,-210>, v=<-210,316,-30>, a=<12,-20,0> -p=<-1941,743,2365>, v=<-277,110,337>, a=<15,-7,-25> -p=<1495,-2896,1065>, v=<214,-412,152>, a=<-11,26,-10> -p=<-2038,541,1731>, v=<-286,80,245>, a=<15,-6,-13> -p=<1316,175,-2635>, v=<187,26,-378>, a=<-10,-1,27> -p=<1778,1932,-399>, v=<254,274,-57>, a=<-16,-20,3> -p=<-2497,84,472>, v=<-355,12,70>, a=<24,0,-6> -p=<566,-1984,-1067>, v=<77,-285,-155>, a=<-2,22,11> -p=<-1138,420,-3082>, v=<-157,62,-440>, a=<15,-1,34> -p=<789,-2022,2212>, v=<115,-290,317>, a=<-10,16,-25> -p=<354,-2402,-1538>, v=<50,-343,-214>, a=<-2,22,15> -p=<-1233,-3403,-289>, v=<-181,-482,-40>, a=<14,28,2> -p=<-2416,-1448,462>, v=<-346,-204,70>, a=<24,12,-3> -p=<676,-2408,-1515>, v=<88,-343,-221>, a=<-6,23,14> -p=<795,420,-2555>, v=<106,57,-366>, a=<-6,-5,24> -p=<951,-2678,-2019>, v=<133,-382,-289>, a=<-7,23,20> -p=<384,1486,2761>, v=<54,207,394>, a=<-4,-11,-26> -p=<-2164,1308,-2362>, v=<-308,186,-343>, a=<23,-12,23> -p=<1636,-2395,-677>, v=<233,-344,-102>, a=<-17,19,7> -p=<-836,2716,802>, v=<-116,390,114>, a=<5,-26,-8> -p=<-1017,2318,-1502>, v=<-148,331,-212>, a=<14,-22,14> -p=<-8,2290,-2327>, v=<-1,326,-336>, a=<0,-26,23> -p=<957,-475,-2503>, v=<135,-71,-363>, a=<-7,4,21> -p=<-1802,1695,-2518>, v=<-262,242,-356>, a=<17,-16,22> -p=<-1918,1084,978>, v=<-273,152,140>, a=<19,-8,-9> -p=<-2718,-511,267>, v=<-390,-70,38>, a=<22,0,-5> -p=<-931,741,-2861>, v=<-135,107,-409>, a=<4,-8,27> -p=<2919,720,-429>, v=<418,105,-59>, a=<-30,-11,4> -p=<-127,-208,-2528>, v=<-17,-29,-361>, a=<-2,2,24> -p=<2588,-1533,325>, v=<369,-224,46>, a=<-25,15,-5> -p=<2240,755,1445>, v=<321,110,206>, a=<-20,-8,-11> -p=<-1025,-2658,396>, v=<-144,-381,56>, a=<9,22,4> -p=<-1591,-1577,-2200>, v=<-227,-229,-312>, a=<17,13,22> -p=<2320,-2390,453>, v=<328,-346,65>, a=<-19,26,-3> -p=<-2665,277,577>, v=<-379,37,82>, a=<25,1,-5> -p=<-244,-314,2533>, v=<-36,-49,359>, a=<-2,4,-24> -p=<1363,1901,-1003>, v=<198,268,-143>, a=<-15,-20,10> -p=<-1982,-2008,-666>, v=<-279,-286,-93>, a=<15,21,6> -p=<404,1110,-2724>, v=<57,152,-390>, a=<-5,-11,25> -p=<1106,-29,2811>, v=<157,-5,397>, a=<-4,-1,-29> -p=<1279,-1327,-2438>, v=<176,-186,-347>, a=<-16,13,23> -p=<-2442,-1060,-1808>, v=<-348,-152,-261>, a=<25,9,17> -p=<-2764,706,766>, v=<-392,99,116>, a=<26,-4,-11> -p=<398,-961,-2682>, v=<51,-137,-388>, a=<-2,9,30> -p=<1783,-461,-1623>, v=<258,-68,-234>, a=<-19,5,13> -p=<164,-766,-3613>, v=<24,-107,-517>, a=<2,9,39> -p=<-2002,-2461,-920>, v=<-287,-349,-131>, a=<24,21,4> -p=<770,493,3153>, v=<112,71,450>, a=<-4,-1,-35> -p=<-864,477,-3078>, v=<-120,73,-439>, a=<7,-6,29> -p=<1315,2948,-955>, v=<185,418,-134>, a=<-12,-27,10> -p=<1168,2186,-1475>, v=<165,308,-215>, a=<-11,-16,14> -p=<1883,1702,1906>, v=<270,252,273>, a=<-20,-13,-18> -p=<-2462,-1690,-48>, v=<-353,-241,-8>, a=<24,15,2> -p=<-1016,1706,2368>, v=<-144,242,341>, a=<7,-21,-20> -p=<2752,1230,178>, v=<394,178,26>, a=<-23,-16,-1> -p=<-3139,492,-93>, v=<-446,70,-14>, a=<31,-6,0> -p=<-232,-669,3400>, v=<-35,-95,487>, a=<-1,3,-29> -p=<521,-4,2511>, v=<73,0,361>, a=<-8,3,-33> -p=<-1580,-2272,-2040>, v=<-224,-323,-292>, a=<15,20,20> -p=<2936,10,680>, v=<419,1,100>, a=<-33,1,-7> -p=<3134,29,491>, v=<450,8,66>, a=<-31,4,0> -p=<2028,-2215,730>, v=<286,-317,101>, a=<-17,17,-6> -p=<-942,2508,227>, v=<-132,360,34>, a=<6,-18,-2> -p=<-2074,-337,-2307>, v=<-292,-51,-325>, a=<17,9,25> -p=<3138,-829,906>, v=<448,-116,129>, a=<-27,8,-3> -p=<417,-1567,2520>, v=<60,-223,357>, a=<-7,8,-29> -p=<-591,2981,-253>, v=<-79,425,-35>, a=<9,-29,2> -p=<-428,2571,-2295>, v=<-65,372,-326>, a=<-1,-25,23> -p=<-1147,-2613,-1664>, v=<-163,-373,-239>, a=<10,32,17> -p=<-682,2368,720>, v=<-96,338,106>, a=<10,-27,-10> -p=<414,2028,-1676>, v=<65,286,-239>, a=<-6,-20,16> -p=<80,2771,-1315>, v=<8,395,-188>, a=<0,-25,13> -p=<-571,765,-2510>, v=<-80,110,-354>, a=<1,-10,31> -p=<1755,-2364,-196>, v=<251,-339,-30>, a=<-16,25,-1> -p=<-995,-2303,54>, v=<-141,-327,13>, a=<6,21,3> -p=<987,-1899,-2046>, v=<141,-272,-292>, a=<-9,18,25> -p=<-230,-841,-2371>, v=<-31,-118,-337>, a=<2,5,23> -p=<2201,-1834,1184>, v=<312,-262,169>, a=<-22,20,-7> -p=<2301,277,-1316>, v=<331,41,-186>, a=<-22,3,11> -p=<-2248,1705,39>, v=<-320,240,10>, a=<19,-15,1> -p=<-1825,2384,950>, v=<-264,341,136>, a=<20,-23,-4> -p=<2159,583,-2049>, v=<306,85,-291>, a=<-17,2,20> -p=<752,-306,-2743>, v=<110,-44,-391>, a=<-7,3,28> -p=<-1600,733,2474>, v=<-228,102,353>, a=<16,-4,-29> -p=<-1931,-2210,-1867>, v=<-276,-309,-267>, a=<18,24,14> -p=<-1295,-2031,1686>, v=<-184,-292,239>, a=<12,21,-15> -p=<478,-2672,-94>, v=<69,-381,-17>, a=<-2,23,0> -p=<1317,662,2146>, v=<184,91,301>, a=<-16,-4,-19> -p=<761,-2068,1675>, v=<109,-295,240>, a=<-5,20,-13> -p=<3126,878,1183>, v=<444,125,167>, a=<-29,-5,-8> -p=<1005,-2563,-549>, v=<146,-368,-80>, a=<-15,25,4> -p=<2042,-1193,-2128>, v=<290,-166,-300>, a=<-17,15,22> -p=<200,-1578,2895>, v=<26,-223,413>, a=<-4,11,-28> -p=<-986,2686,-304>, v=<-138,378,-38>, a=<9,-26,5> -p=<2871,-1251,358>, v=<411,-175,52>, a=<-28,17,0> -p=<1868,319,-2475>, v=<267,45,-348>, a=<-18,-3,22> -p=<2451,19,-1262>, v=<352,-1,-183>, a=<-25,0,12> -p=<1585,2301,-869>, v=<231,330,-120>, a=<-10,-23,7> -p=<2502,1759,-696>, v=<357,257,-102>, a=<-24,-19,6> -p=<2305,537,-2463>, v=<332,77,-348>, a=<-22,-8,18> -p=<-255,2470,-1500>, v=<-35,349,-217>, a=<6,-22,12> -p=<-236,2477,-1290>, v=<-37,350,-184>, a=<6,-24,15> -p=<2401,258,1682>, v=<343,36,238>, a=<-21,-2,-16> -p=<-674,2633,130>, v=<-96,377,22>, a=<7,-32,0> -p=<-682,-183,-2591>, v=<-95,-27,-365>, a=<6,6,22> -p=<-153,2400,-2116>, v=<-24,340,-304>, a=<2,-25,20> -p=<-1243,2187,1831>, v=<-177,311,261>, a=<13,-22,-18> -p=<1115,-2968,-411>, v=<164,-423,-63>, a=<-5,31,5> -p=<2669,-425,-1805>, v=<381,-55,-256>, a=<-26,4,19> -p=<-1819,-1005,-1806>, v=<-259,-146,-254>, a=<13,9,22> -p=<2727,-746,-1095>, v=<388,-107,-161>, a=<-21,7,10> -p=<2988,-1385,-756>, v=<431,-194,-105>, a=<-31,12,9> -p=<1892,-843,-2112>, v=<270,-120,-295>, a=<-18,8,18> -p=<981,-1233,2354>, v=<140,-176,335>, a=<-7,11,-21> -p=<-798,910,2557>, v=<-114,134,367>, a=<9,-9,-28> -p=<1357,3162,599>, v=<193,457,83>, a=<-12,-31,-6> -p=<2670,1729,-42>, v=<383,245,-2>, a=<-29,-17,2> -p=<-1459,-1028,2060>, v=<-208,-142,297>, a=<17,8,-17> -p=<-166,-236,2935>, v=<-20,-33,417>, a=<-2,0,-29> -p=<3032,-500,391>, v=<440,-72,55>, a=<-35,10,1> -p=<1867,1954,117>, v=<266,282,16>, a=<-11,-15,1> -p=<165,1444,2170>, v=<20,206,312>, a=<-2,-10,-19> -p=<-2105,-2100,395>, v=<-303,-300,51>, a=<23,21,-3> -p=<-975,2566,-2097>, v=<-141,364,-304>, a=<5,-26,20> -p=<2688,-678,-926>, v=<383,-97,-136>, a=<-28,6,9> -p=<-331,-3031,-174>, v=<-43,-435,-21>, a=<4,33,4> -p=<-1036,-2037,-1769>, v=<-149,-290,-254>, a=<8,27,17> -p=<443,-1213,-2648>, v=<60,-173,-386>, a=<-8,14,26> -p=<-2666,220,1758>, v=<-380,31,253>, a=<27,1,-16> -p=<1168,2827,1304>, v=<169,403,184>, a=<-11,-27,-11> -p=<1237,645,2828>, v=<176,89,403>, a=<-11,-3,-27> -p=<-194,-718,2500>, v=<-26,-97,355>, a=<2,2,-25> -p=<-1738,-1623,1459>, v=<-246,-231,207>, a=<20,18,-14> -p=<607,-1729,-2554>, v=<87,-244,-363>, a=<-5,17,21> -p=<-772,2981,-1709>, v=<-108,429,-248>, a=<6,-29,13> -p=<-929,-935,2559>, v=<-131,-133,366>, a=<8,9,-27> -p=<1889,-2222,2>, v=<273,-315,-4>, a=<-23,24,2> -p=<2252,-1177,-1148>, v=<317,-163,-169>, a=<-22,7,14> -p=<898,1129,1677>, v=<128,160,240>, a=<-8,-11,-18> -p=<585,1776,-1605>, v=<86,257,-232>, a=<-3,-11,11> -p=<1329,-702,2447>, v=<188,-99,350>, a=<-20,5,-24> -p=<-740,-1556,-2238>, v=<-104,-219,-317>, a=<9,19,22> -p=<1221,2376,-501>, v=<176,343,-70>, a=<-13,-23,2> -p=<-18,-582,-2939>, v=<-1,-83,-416>, a=<0,11,31> -p=<328,-1362,2407>, v=<47,-192,345>, a=<-1,11,-24> -p=<2254,-795,-2176>, v=<319,-115,-306>, a=<-17,7,20> -p=<1945,2178,374>, v=<273,308,54>, a=<-22,-23,-3> -p=<-1255,1542,-2209>, v=<-182,220,-315>, a=<11,-15,23> -p=<-1029,1657,2328>, v=<-148,234,331>, a=<16,-16,-27> -p=<299,2821,-1374>, v=<44,402,-193>, a=<-7,-25,13> -p=<-2317,106,-1824>, v=<-331,20,-262>, a=<23,-1,13> -p=<784,-2450,-1388>, v=<116,-346,-195>, a=<-11,26,14> -p=<2738,-544,-356>, v=<393,-77,-49>, a=<-26,10,-3> -p=<1355,1483,2334>, v=<195,211,331>, a=<-12,-19,-17> -p=<2570,-849,-414>, v=<369,-117,-60>, a=<-21,9,9> -p=<313,-1203,-2974>, v=<41,-173,-422>, a=<-4,16,26> -p=<133,-3658,193>, v=<22,-524,27>, a=<-4,42,2> -p=<1293,-1644,2714>, v=<179,-232,383>, a=<-12,15,-33> -p=<152,1845,1804>, v=<24,263,261>, a=<-1,-14,-18> -p=<1059,2077,-1799>, v=<154,296,-251>, a=<-7,-19,13> -p=<-2954,-985,167>, v=<-418,-140,23>, a=<29,7,-3> diff --git a/2017/d21/ex1/ex1.py b/2017/d21/ex1/ex1.py deleted file mode 100755 index b5bda88..0000000 --- a/2017/d21/ex1/ex1.py +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env python - -import itertools -import sys -from collections.abc import Iterator - -# 2x2 *and* 3x3 grid -Grid = tuple[tuple[bool, ...], ...] -START = ".#./..#/###" - - -def solve(input: str) -> int: - def parse_pattern(input: str) -> Grid: - return tuple(tuple(c == "#" for c in line) for line in input.split("/")) - - def parse(input: str) -> dict[Grid, Grid]: - return { - start: end - for start, end in ( - map(parse_pattern, line.split(" => ")) for line in input.splitlines() - ) - } - - def permutations(grid: Grid) -> set[Grid]: - def iter_rotated(grid: Grid) -> Iterator[Grid]: - for _ in range(4): - yield grid - grid = tuple( - tuple(grid[len(grid) - y - 1][x] for y in range(len(grid[0]))) - for x in range(len(grid)) - ) - - def iter_flipped(grid: Grid) -> Iterator[Grid]: - yield grid - yield grid[::-1] - yield tuple(line[::-1] for line in grid) - - return { - flip for rotated in iter_rotated(grid) for flip in iter_flipped(rotated) - } - - def normalize_rules(raw_rules: dict[Grid, Grid]) -> dict[Grid, Grid]: - res: dict[Grid, Grid] = {} - for pattern, grid in raw_rules.items(): - for perm in permutations(pattern): - res[perm] = grid - return res - - def enhance(rules: dict[Grid, Grid], rounds: int) -> list[list[bool]]: - def step(grid: list[list[bool]]) -> list[list[bool]]: - is_even = len(grid) % 2 == 0 - step_size = 2 if is_even else 3 - next_size = len(grid) * (step_size + 1) // step_size - res = [[False for _ in range(next_size)] for _ in range(next_size)] - - for x, y in itertools.product(range(len(grid) // step_size), repeat=2): - elem = tuple( - tuple( - grid[x * step_size + dx][y * step_size + dy] - for dy in range(step_size) - ) - for dx in range(step_size) - ) - new_grid = rules[elem] - for dx, line in enumerate(new_grid): - for dy, p in enumerate(line): - res[x * len(new_grid) + dx][y * len(line) + dy] = p - - return res - - grid = [[p for p in line] for line in parse_pattern(START)] - for _ in range(rounds): - grid = step(grid) - return grid - - raw_rules = parse(input) - norm_rules = normalize_rules(raw_rules) - art = enhance(norm_rules, 5) - return sum(itertools.chain.from_iterable(art)) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d21/ex1/input b/2017/d21/ex1/input deleted file mode 100644 index 4f409b0..0000000 --- a/2017/d21/ex1/input +++ /dev/null @@ -1,108 +0,0 @@ -../.. => #.#/#../... -#./.. => #.#/#.#/.#. -##/.. => #../.##/##. -.#/#. => ..#/..#/..# -##/#. => ##./.#./#.. -##/## => .../.#./.#. -.../.../... => ..#./##.#/#.##/##.# -#../.../... => #.##/..../##../###. -.#./.../... => ##.#/###./#.##/#.#. -##./.../... => ##.#/#.##/.#../##.# -#.#/.../... => ...#/..#./.#.#/.### -###/.../... => ..../#..#/#.##/##.. -.#./#../... => .#../.#.#/..#./.### -##./#../... => ..##/#.##/#.../#.#. -..#/#../... => .##./#.##/.#../##.. -#.#/#../... => #.../.##./...#/###. -.##/#../... => #.##/..##/.#.#/##.. -###/#../... => #..#/...#/..#./...# -.../.#./... => .###/.#../..#./#### -#../.#./... => ####/#.../.###/##.. -.#./.#./... => ####/#..#/####/#..# -##./.#./... => .#../..##/..##/#..# -#.#/.#./... => .#.#/#.##/#.#./.#.# -###/.#./... => #.##/#.../###./#..# -.#./##./... => ###./#.../..../.### -##./##./... => #.##/###./...#/###. -..#/##./... => .#.#/###./..#./#... -#.#/##./... => #.#./##../##../..## -.##/##./... => ..../..#./.##./.#.# -###/##./... => #.../.#../#.#./#..# -.../#.#/... => ##../#.##/.##./.##. -#../#.#/... => #.#./##.#/.###/.### -.#./#.#/... => ..../####/####/.#.# -##./#.#/... => #.##/.###/##../#... -#.#/#.#/... => ###./..##/#.#./#### -###/#.#/... => .##./..../###./.... -.../###/... => ###./.##./##../.### -#../###/... => .#../#.../###./...# -.#./###/... => #.#./#.#./####/###. -##./###/... => ...#/##../###./#.#. -#.#/###/... => .#.#/#.#./..#./.##. -###/###/... => ..../#.##/...#/##.. -..#/.../#.. => ...#/#.##/#..#/..## -#.#/.../#.. => ..#./##.#/.#.#/..## -.##/.../#.. => ..##/##../#.#./#.## -###/.../#.. => #.##/###./...#/.##. -.##/#../#.. => ##../#.##/##.#/##.. -###/#../#.. => #.##/##../.##./.#.# -..#/.#./#.. => #..#/##../.###/#.#. -#.#/.#./#.. => .###/#.##/#.#./#### -.##/.#./#.. => #.#./#.../#.##/...# -###/.#./#.. => .##./.#.#/#.#./.#.# -.##/##./#.. => .###/.#.#/...#/#.#. -###/##./#.. => .###/#.##/#.##/#.#. -#../..#/#.. => #.../##../.##./###. -.#./..#/#.. => #.../#.##/#.../###. -##./..#/#.. => ####/..../##.#/.### -#.#/..#/#.. => ..##/##.#/#.##/#..# -.##/..#/#.. => ..#./##.#/#.#./..## -###/..#/#.. => ..##/...#/#..#/#..# -#../#.#/#.. => #.../..../#.../#.## -.#./#.#/#.. => ##../####/.#.#/##.. -##./#.#/#.. => .#../..../#.../.##. -..#/#.#/#.. => .#../.#.#/.#.#/..#. -#.#/#.#/#.. => ..#./#.##/#.#./..## -.##/#.#/#.. => #.##/..##/...#/#### -###/#.#/#.. => .##./.#.#/###./#..# -#../.##/#.. => ..##/.###/.#../##.# -.#./.##/#.. => #.##/.##./.##./.### -##./.##/#.. => .##./.#../..../..## -#.#/.##/#.. => ..../#.#./##.#/###. -.##/.##/#.. => #..#/..../##.#/..#. -###/.##/#.. => ####/##.#/#..#/##.. -#../###/#.. => #.#./###./.###/#... -.#./###/#.. => ##.#/#..#/#.##/..#. -##./###/#.. => ..#./...#/..##/...# -..#/###/#.. => .#.#/..../..##/..## -#.#/###/#.. => #..#/..#./.#../..#. -.##/###/#.. => .#.#/..../#..#/...# -###/###/#.. => #.##/##../.#../.... -.#./#.#/.#. => ..../####/.###/.#.# -##./#.#/.#. => #.##/...#/####/#### -#.#/#.#/.#. => ..#./##../..../#... -###/#.#/.#. => ####/#.##/###./...# -.#./###/.#. => ...#/..#./...#/..#. -##./###/.#. => .##./#.../.#.#/.### -#.#/###/.#. => ..../..../.#.#/#.## -###/###/.#. => ..#./###./##.#/.... -#.#/..#/##. => .###/.#../..#./#### -###/..#/##. => #.##/..#./#..#/.... -.##/#.#/##. => #.../##../####/.##. -###/#.#/##. => ###./..#./..#./##.. -#.#/.##/##. => #.../##../##.#/#.## -###/.##/##. => ..#./#..#/#.##/#### -.##/###/##. => .#.#/.###/...#/.#.. -###/###/##. => ####/..../.#.#/...# -#.#/.../#.# => ##.#/#..#/.##./...# -###/.../#.# => #.#./.#../...#/...# -###/#../#.# => .#.#/.#../##../##.. -#.#/.#./#.# => ###./#.../####/.#.# -###/.#./#.# => ##../#.#./..##/##.# -###/##./#.# => ####/..../###./.##. -#.#/#.#/#.# => ...#/.##./##../.### -###/#.#/#.# => ..#./.##./##.#/.#.. -#.#/###/#.# => ...#/..../..#./...# -###/###/#.# => #.#./#.#./##../.... -###/#.#/### => #.../##.#/.#../..#. -###/###/### => ##../..#./##../..#. diff --git a/2017/d21/ex2/ex2.py b/2017/d21/ex2/ex2.py deleted file mode 100755 index 321a032..0000000 --- a/2017/d21/ex2/ex2.py +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env python - -import itertools -import sys -from collections.abc import Iterator - -# 2x2 *and* 3x3 grid -Grid = tuple[tuple[bool, ...], ...] -START = ".#./..#/###" - - -def solve(input: str) -> int: - def parse_pattern(input: str) -> Grid: - return tuple(tuple(c == "#" for c in line) for line in input.split("/")) - - def parse(input: str) -> dict[Grid, Grid]: - return { - start: end - for start, end in ( - map(parse_pattern, line.split(" => ")) for line in input.splitlines() - ) - } - - def permutations(grid: Grid) -> set[Grid]: - def iter_rotated(grid: Grid) -> Iterator[Grid]: - for _ in range(4): - yield grid - grid = tuple( - tuple(grid[len(grid) - y - 1][x] for y in range(len(grid[0]))) - for x in range(len(grid)) - ) - - def iter_flipped(grid: Grid) -> Iterator[Grid]: - yield grid - yield grid[::-1] - yield tuple(line[::-1] for line in grid) - - return { - flip for rotated in iter_rotated(grid) for flip in iter_flipped(rotated) - } - - def normalize_rules(raw_rules: dict[Grid, Grid]) -> dict[Grid, Grid]: - res: dict[Grid, Grid] = {} - for pattern, grid in raw_rules.items(): - for perm in permutations(pattern): - res[perm] = grid - return res - - def enhance(rules: dict[Grid, Grid], rounds: int) -> list[list[bool]]: - def step(grid: list[list[bool]]) -> list[list[bool]]: - is_even = len(grid) % 2 == 0 - step_size = 2 if is_even else 3 - next_size = len(grid) * (step_size + 1) // step_size - res = [[False for _ in range(next_size)] for _ in range(next_size)] - - for x, y in itertools.product(range(len(grid) // step_size), repeat=2): - elem = tuple( - tuple( - grid[x * step_size + dx][y * step_size + dy] - for dy in range(step_size) - ) - for dx in range(step_size) - ) - new_grid = rules[elem] - for dx, line in enumerate(new_grid): - for dy, p in enumerate(line): - res[x * len(new_grid) + dx][y * len(line) + dy] = p - - return res - - grid = [[p for p in line] for line in parse_pattern(START)] - for _ in range(rounds): - grid = step(grid) - return grid - - raw_rules = parse(input) - norm_rules = normalize_rules(raw_rules) - art = enhance(norm_rules, 18) - return sum(itertools.chain.from_iterable(art)) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d21/ex2/input b/2017/d21/ex2/input deleted file mode 100644 index 4f409b0..0000000 --- a/2017/d21/ex2/input +++ /dev/null @@ -1,108 +0,0 @@ -../.. => #.#/#../... -#./.. => #.#/#.#/.#. -##/.. => #../.##/##. -.#/#. => ..#/..#/..# -##/#. => ##./.#./#.. -##/## => .../.#./.#. -.../.../... => ..#./##.#/#.##/##.# -#../.../... => #.##/..../##../###. -.#./.../... => ##.#/###./#.##/#.#. -##./.../... => ##.#/#.##/.#../##.# -#.#/.../... => ...#/..#./.#.#/.### -###/.../... => ..../#..#/#.##/##.. -.#./#../... => .#../.#.#/..#./.### -##./#../... => ..##/#.##/#.../#.#. -..#/#../... => .##./#.##/.#../##.. -#.#/#../... => #.../.##./...#/###. -.##/#../... => #.##/..##/.#.#/##.. -###/#../... => #..#/...#/..#./...# -.../.#./... => .###/.#../..#./#### -#../.#./... => ####/#.../.###/##.. -.#./.#./... => ####/#..#/####/#..# -##./.#./... => .#../..##/..##/#..# -#.#/.#./... => .#.#/#.##/#.#./.#.# -###/.#./... => #.##/#.../###./#..# -.#./##./... => ###./#.../..../.### -##./##./... => #.##/###./...#/###. -..#/##./... => .#.#/###./..#./#... -#.#/##./... => #.#./##../##../..## -.##/##./... => ..../..#./.##./.#.# -###/##./... => #.../.#../#.#./#..# -.../#.#/... => ##../#.##/.##./.##. -#../#.#/... => #.#./##.#/.###/.### -.#./#.#/... => ..../####/####/.#.# -##./#.#/... => #.##/.###/##../#... -#.#/#.#/... => ###./..##/#.#./#### -###/#.#/... => .##./..../###./.... -.../###/... => ###./.##./##../.### -#../###/... => .#../#.../###./...# -.#./###/... => #.#./#.#./####/###. -##./###/... => ...#/##../###./#.#. -#.#/###/... => .#.#/#.#./..#./.##. -###/###/... => ..../#.##/...#/##.. -..#/.../#.. => ...#/#.##/#..#/..## -#.#/.../#.. => ..#./##.#/.#.#/..## -.##/.../#.. => ..##/##../#.#./#.## -###/.../#.. => #.##/###./...#/.##. -.##/#../#.. => ##../#.##/##.#/##.. -###/#../#.. => #.##/##../.##./.#.# -..#/.#./#.. => #..#/##../.###/#.#. -#.#/.#./#.. => .###/#.##/#.#./#### -.##/.#./#.. => #.#./#.../#.##/...# -###/.#./#.. => .##./.#.#/#.#./.#.# -.##/##./#.. => .###/.#.#/...#/#.#. -###/##./#.. => .###/#.##/#.##/#.#. -#../..#/#.. => #.../##../.##./###. -.#./..#/#.. => #.../#.##/#.../###. -##./..#/#.. => ####/..../##.#/.### -#.#/..#/#.. => ..##/##.#/#.##/#..# -.##/..#/#.. => ..#./##.#/#.#./..## -###/..#/#.. => ..##/...#/#..#/#..# -#../#.#/#.. => #.../..../#.../#.## -.#./#.#/#.. => ##../####/.#.#/##.. -##./#.#/#.. => .#../..../#.../.##. -..#/#.#/#.. => .#../.#.#/.#.#/..#. -#.#/#.#/#.. => ..#./#.##/#.#./..## -.##/#.#/#.. => #.##/..##/...#/#### -###/#.#/#.. => .##./.#.#/###./#..# -#../.##/#.. => ..##/.###/.#../##.# -.#./.##/#.. => #.##/.##./.##./.### -##./.##/#.. => .##./.#../..../..## -#.#/.##/#.. => ..../#.#./##.#/###. -.##/.##/#.. => #..#/..../##.#/..#. -###/.##/#.. => ####/##.#/#..#/##.. -#../###/#.. => #.#./###./.###/#... -.#./###/#.. => ##.#/#..#/#.##/..#. -##./###/#.. => ..#./...#/..##/...# -..#/###/#.. => .#.#/..../..##/..## -#.#/###/#.. => #..#/..#./.#../..#. -.##/###/#.. => .#.#/..../#..#/...# -###/###/#.. => #.##/##../.#../.... -.#./#.#/.#. => ..../####/.###/.#.# -##./#.#/.#. => #.##/...#/####/#### -#.#/#.#/.#. => ..#./##../..../#... -###/#.#/.#. => ####/#.##/###./...# -.#./###/.#. => ...#/..#./...#/..#. -##./###/.#. => .##./#.../.#.#/.### -#.#/###/.#. => ..../..../.#.#/#.## -###/###/.#. => ..#./###./##.#/.... -#.#/..#/##. => .###/.#../..#./#### -###/..#/##. => #.##/..#./#..#/.... -.##/#.#/##. => #.../##../####/.##. -###/#.#/##. => ###./..#./..#./##.. -#.#/.##/##. => #.../##../##.#/#.## -###/.##/##. => ..#./#..#/#.##/#### -.##/###/##. => .#.#/.###/...#/.#.. -###/###/##. => ####/..../.#.#/...# -#.#/.../#.# => ##.#/#..#/.##./...# -###/.../#.# => #.#./.#../...#/...# -###/#../#.# => .#.#/.#../##../##.. -#.#/.#./#.# => ###./#.../####/.#.# -###/.#./#.# => ##../#.#./..##/##.# -###/##./#.# => ####/..../###./.##. -#.#/#.#/#.# => ...#/.##./##../.### -###/#.#/#.# => ..#./.##./##.#/.#.. -#.#/###/#.# => ...#/..../..#./...# -###/###/#.# => #.#./#.#./##../.... -###/#.#/### => #.../##.#/.#../..#. -###/###/### => ##../..#./##../..#. diff --git a/2017/d22/ex1/ex1.py b/2017/d22/ex1/ex1.py deleted file mode 100755 index 3aab299..0000000 --- a/2017/d22/ex1/ex1.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python - -import dataclasses -import enum -import sys -from typing import NamedTuple - - -class Point(NamedTuple): - x: int - y: int - - -class Direction(enum.Enum): - UP = Point(-1, 0) - DOWN = Point(1, 0) - LEFT = Point(0, -1) - RIGHT = Point(0, 1) - - def left(self) -> "Direction": - x, y = self.value - return Direction(Point(-y, x)) - - def right(self) -> "Direction": - x, y = self.value - return Direction(Point(y, -x)) - - def apply(self, p: Point) -> Point: - dx, dy = self.value - return Point(p.x + dx, p.y + dy) - - -@dataclasses.dataclass -class Carrier: - pos: Point - dir: Direction - - def burst(self, infected: set[Point]) -> bool: - infect = False - if self.pos in infected: - self.dir = self.dir.right() - infected.remove(self.pos) - else: - self.dir = self.dir.left() - infected.add(self.pos) - infect = True - self.pos = self.dir.apply(self.pos) - return infect - - -def solve(input: str) -> int: - def parse(input: str) -> set[Point]: - return { - Point(x, y) - for x, line in enumerate(input.splitlines()) - for y, c in enumerate(line) - if c == "#" - } - - infected = parse(input) - middle = len(input.splitlines()) // 2 - carrier = Carrier(Point(middle, middle), Direction.UP) - total = 0 - - for _ in range(10000): - total += carrier.burst(infected) - return total - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d22/ex1/input b/2017/d22/ex1/input deleted file mode 100644 index 216f837..0000000 --- a/2017/d22/ex1/input +++ /dev/null @@ -1,25 +0,0 @@ -#..#...#.#.#..#.#...##.## -.....##.#....#.#......#.# -..#.###.#.#######.###.#.# -.......#.##.###.###..##.# -#....#...#.###....##..... -#.....##.#########..#.#.# -.####.##..#...###.##...#. -#....#..#.###.##.#..##.#. -#####.#.#..#.##..#...#### -##.#.#..#.#....###.###### -.##.#...#...##.#.##..#### -...#..##.#.....#.#..####. -#.##.###..#######.#..#.#. -##....##....##.#..#.##..# -##.#.#.#.##...##.....#... -.#####..#.#....#.#######. -####....###.###.#.#..#..# -.###...#.###..#..#.#####. -#.###..#.#######.#.#####. -.##.#.###.##.##.#.#...#.. -######.###.#.#.##.####..# -##..####.##..##.#...##... -...##.##...#..#..##.####. -#.....##.##.#..##.##....# -#.#..####.....#....#.###. diff --git a/2017/d22/ex2/ex2.py b/2017/d22/ex2/ex2.py deleted file mode 100755 index b4e6a62..0000000 --- a/2017/d22/ex2/ex2.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python - -import collections -import dataclasses -import enum -import sys -from typing import NamedTuple - - -class Point(NamedTuple): - x: int - y: int - - -class Direction(enum.Enum): - UP = Point(-1, 0) - DOWN = Point(1, 0) - LEFT = Point(0, -1) - RIGHT = Point(0, 1) - - def left(self) -> "Direction": - x, y = self.value - return Direction(Point(-y, x)) - - def right(self) -> "Direction": - x, y = self.value - return Direction(Point(y, -x)) - - def flip(self) -> "Direction": - x, y = self.value - return Direction(Point(-x, -y)) - - def apply(self, p: Point) -> Point: - dx, dy = self.value - return Point(p.x + dx, p.y + dy) - - -class State(enum.StrEnum): - CLEAN = "." - WEAKENED = "W" - FLAGGED = "F" - INFECTED = "#" - - -@dataclasses.dataclass -class Carrier: - pos: Point - dir: Direction - - def burst(self, infected: dict[Point, State]) -> bool: - infect = False - match infected[self.pos]: - case State.CLEAN: - self.dir = self.dir.left() - infected[self.pos] = State.WEAKENED - case State.WEAKENED: - infected[self.pos] = State.INFECTED - infect = True - case State.FLAGGED: - self.dir = self.dir.flip() - infected[self.pos] = State.CLEAN - case State.INFECTED: - self.dir = self.dir.right() - infected[self.pos] = State.FLAGGED - self.pos = self.dir.apply(self.pos) - return infect - - -def solve(input: str) -> int: - def parse(input: str) -> set[Point]: - return { - Point(x, y) - for x, line in enumerate(input.splitlines()) - for y, c in enumerate(line) - if c == "#" - } - - infected: dict[Point, State] = collections.defaultdict(lambda: State.CLEAN) - for p in parse(input): - infected[p] = State.INFECTED - middle = len(input.splitlines()) // 2 - carrier = Carrier(Point(middle, middle), Direction.UP) - total = 0 - - for _ in range(10000000): - total += carrier.burst(infected) - return total - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d22/ex2/input b/2017/d22/ex2/input deleted file mode 100644 index 216f837..0000000 --- a/2017/d22/ex2/input +++ /dev/null @@ -1,25 +0,0 @@ -#..#...#.#.#..#.#...##.## -.....##.#....#.#......#.# -..#.###.#.#######.###.#.# -.......#.##.###.###..##.# -#....#...#.###....##..... -#.....##.#########..#.#.# -.####.##..#...###.##...#. -#....#..#.###.##.#..##.#. -#####.#.#..#.##..#...#### -##.#.#..#.#....###.###### -.##.#...#...##.#.##..#### -...#..##.#.....#.#..####. -#.##.###..#######.#..#.#. -##....##....##.#..#.##..# -##.#.#.#.##...##.....#... -.#####..#.#....#.#######. -####....###.###.#.#..#..# -.###...#.###..#..#.#####. -#.###..#.#######.#.#####. -.##.#.###.##.##.#.#...#.. -######.###.#.#.##.####..# -##..####.##..##.#...##... -...##.##...#..#..##.####. -#.....##.##.#..##.##....# -#.#..####.....#....#.###. diff --git a/2017/d23/ex1/ex1.py b/2017/d23/ex1/ex1.py deleted file mode 100755 index 1e87b46..0000000 --- a/2017/d23/ex1/ex1.py +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env python - -import enum -import sys -from typing import NamedTuple - - -class Op(enum.StrEnum): - SET = "set" - SUB = "sub" - MUL = "mul" - JNZ = "jnz" - - -class Instruction(NamedTuple): - op: Op - x: str - y: str - - @classmethod - def from_str(cls, input: str) -> "Instruction": - op, *rest = input.split() - return cls(Op(op), *rest) - - -def solve(input: str) -> int: - def parse(input: str) -> list[Instruction]: - return [Instruction.from_str(line) for line in input.splitlines()] - - def resolve(y: str | None, registers: dict[str, int]) -> int: - assert y is not None # Sanity check - try: - return int(y) - except ValueError: - return registers[y] - - instructions = parse(input) - registers = {chr(ord("a") + i): 0 for i in range(8)} - - ip = 0 - total_muls = 0 - while True: - if ip < 0 or ip >= len(instructions): - break - instr = instructions[ip] - ip += 1 - match instr.op: - case Op.SET: - registers[instr.x] = resolve(instr.y, registers) - case Op.SUB: - registers[instr.x] -= resolve(instr.y, registers) - case Op.MUL: - registers[instr.x] *= resolve(instr.y, registers) - total_muls += 1 - case Op.JNZ: - if resolve(instr.x, registers) != 0: - ip += resolve(instr.y, registers) - 1 # Account auto-increment - return total_muls - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d23/ex1/input b/2017/d23/ex1/input deleted file mode 100644 index 30fb446..0000000 --- a/2017/d23/ex1/input +++ /dev/null @@ -1,32 +0,0 @@ -set b 81 -set c b -jnz a 2 -jnz 1 5 -mul b 100 -sub b -100000 -set c b -sub c -17000 -set f 1 -set d 2 -set e 2 -set g d -mul g e -sub g b -jnz g 2 -set f 0 -sub e -1 -set g e -sub g b -jnz g -8 -sub d -1 -set g d -sub g b -jnz g -13 -jnz f 2 -sub h -1 -set g b -sub g c -jnz g 2 -jnz 1 3 -sub b -17 -jnz 1 -23 diff --git a/2017/d23/ex2/ex2.py b/2017/d23/ex2/ex2.py deleted file mode 100755 index cf18a89..0000000 --- a/2017/d23/ex2/ex2.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python - -import enum -import math -import sys -from typing import NamedTuple - - -class Op(enum.StrEnum): - SET = "set" - SUB = "sub" - MUL = "mul" - JNZ = "jnz" - - -class Instruction(NamedTuple): - op: Op - x: str - y: str - - @classmethod - def from_str(cls, input: str) -> "Instruction": - op, *rest = input.split() - return cls(Op(op), *rest) - - -def solve(input: str) -> int: - def parse(input: str) -> list[Instruction]: - return [Instruction.from_str(line) for line in input.splitlines()] - - def is_prime(n: int) -> bool: - if n % 2 == 0: - return False - for i in range(3, math.isqrt(n), 2): - if n % i == 0: - return False - return True - - instructions = parse(input) - start = int(instructions[0].y) * 100 + 100000 - end = start + 17000 - - total = 0 - for n in range(start, end + 1, 17): - total += not is_prime(n) - return total - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d23/ex2/input b/2017/d23/ex2/input deleted file mode 100644 index 30fb446..0000000 --- a/2017/d23/ex2/input +++ /dev/null @@ -1,32 +0,0 @@ -set b 81 -set c b -jnz a 2 -jnz 1 5 -mul b 100 -sub b -100000 -set c b -sub c -17000 -set f 1 -set d 2 -set e 2 -set g d -mul g e -sub g b -jnz g 2 -set f 0 -sub e -1 -set g e -sub g b -jnz g -8 -sub d -1 -set g d -sub g b -jnz g -13 -jnz f 2 -sub h -1 -set g b -sub g c -jnz g 2 -jnz 1 3 -sub b -17 -jnz 1 -23 diff --git a/2017/d24/ex1/ex1.py b/2017/d24/ex1/ex1.py deleted file mode 100755 index 82509fc..0000000 --- a/2017/d24/ex1/ex1.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python - -import functools -import sys -from typing import NamedTuple - - -class Component(NamedTuple): - left: int - right: int - - @classmethod - def from_str(cls, input: str) -> "Component": - return cls(*map(int, input.split("/"))) - - def remaining_port(self, connection: int) -> int: - if connection == self.left: - return self.right - elif connection == self.right: - return self.left - assert False # Sanity check - - -def solve(input: str) -> int: - def parse(input: str) -> list[Component]: - return [Component.from_str(line) for line in input.splitlines()] - - @functools.cache - def strongest_bridge(start: int, components: frozenset[Component]) -> int: - candidates = {c for c in components if start in c} - if not candidates: - return 0 - return max( - sum(c) + strongest_bridge(c.remaining_port(start), components - {c}) - for c in candidates - ) - - components = parse(input) - assert len(set(components)) == len(components) # Sanity check - return strongest_bridge(0, frozenset(components)) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d24/ex1/input b/2017/d24/ex1/input deleted file mode 100644 index 383dcb0..0000000 --- a/2017/d24/ex1/input +++ /dev/null @@ -1,57 +0,0 @@ -25/13 -4/43 -42/42 -39/40 -17/18 -30/7 -12/12 -32/28 -9/28 -1/1 -16/7 -47/43 -34/16 -39/36 -6/4 -3/2 -10/49 -46/50 -18/25 -2/23 -3/21 -5/24 -46/26 -50/19 -26/41 -1/50 -47/41 -39/50 -12/14 -11/19 -28/2 -38/47 -5/5 -38/34 -39/39 -17/34 -42/16 -32/23 -13/21 -28/6 -6/20 -1/30 -44/21 -11/28 -14/17 -33/33 -17/43 -31/13 -11/21 -31/39 -0/9 -13/50 -10/14 -16/10 -3/24 -7/0 -50/50 diff --git a/2017/d24/ex2/ex2.py b/2017/d24/ex2/ex2.py deleted file mode 100755 index 28540eb..0000000 --- a/2017/d24/ex2/ex2.py +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env python - -import itertools -import sys -from collections.abc import Iterator -from typing import NamedTuple - - -class Component(NamedTuple): - left: int - right: int - - @classmethod - def from_str(cls, input: str) -> "Component": - return cls(*map(int, input.split("/"))) - - def remaining_port(self, connection: int) -> int: - if connection == self.left: - return self.right - elif connection == self.right: - return self.left - assert False # Sanity check - - -class Bridge(NamedTuple): - components: tuple[Component, ...] - head: int - - @property - def length(self): - return len(self.components) - - @property - def strength(self): - return sum(itertools.chain.from_iterable(self.components)) - - def add(self, c: Component) -> "Bridge": - assert self.head in c # Sanity check - return Bridge(self.components + (c,), c.remaining_port(self.head)) - - -def solve(input: str) -> int: - def parse(input: str) -> list[Component]: - return [Component.from_str(line) for line in input.splitlines()] - - def longest_bridge(components: set[Component]) -> Bridge: - def build_bridges( - bridge: Bridge, components: set[Component] - ) -> Iterator[Bridge]: - candidates = {c for c in components if bridge.head in c} - if not candidates: - yield bridge - return - for c in candidates: - yield from build_bridges(bridge.add(c), components - {c}) - - return max( - build_bridges(Bridge((), 0), components), - key=lambda b: (b.length, b.strength), - ) - - components = parse(input) - assert len(set(components)) == len(components) # Sanity check - bridge = longest_bridge(set(components)) - return bridge.strength - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d24/ex2/input b/2017/d24/ex2/input deleted file mode 100644 index 383dcb0..0000000 --- a/2017/d24/ex2/input +++ /dev/null @@ -1,57 +0,0 @@ -25/13 -4/43 -42/42 -39/40 -17/18 -30/7 -12/12 -32/28 -9/28 -1/1 -16/7 -47/43 -34/16 -39/36 -6/4 -3/2 -10/49 -46/50 -18/25 -2/23 -3/21 -5/24 -46/26 -50/19 -26/41 -1/50 -47/41 -39/50 -12/14 -11/19 -28/2 -38/47 -5/5 -38/34 -39/39 -17/34 -42/16 -32/23 -13/21 -28/6 -6/20 -1/30 -44/21 -11/28 -14/17 -33/33 -17/43 -31/13 -11/21 -31/39 -0/9 -13/50 -10/14 -16/10 -3/24 -7/0 -50/50 diff --git a/2017/d25/ex1/ex1.py b/2017/d25/ex1/ex1.py deleted file mode 100755 index b57dc3f..0000000 --- a/2017/d25/ex1/ex1.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python - -import collections -import enum -import sys -from typing import NamedTuple - - -class Direction(enum.StrEnum): - LEFT = "left" - RIGHT = "right" - - def apply(self, pos: int) -> int: - return pos + 1 if self == Direction.RIGHT else pos - 1 - - -class Rules(NamedTuple): - zero_write: bool - zero_dir: Direction - zero_transition: str - - one_write: bool - one_dir: Direction - one_transition: str - - @classmethod - def from_str(cls, input: str) -> "Rules": - lines = input.splitlines() - return cls( - zero_write=bool(int(lines[1][-2])), - zero_dir=Direction(lines[2][:-1].split()[-1]), - zero_transition=lines[3][-2], - one_write=bool(int(lines[5][-2])), - one_dir=Direction(lines[6][:-1].split()[-1]), - one_transition=lines[7][-2], - ) - - def apply(self, tape: dict[int, bool], pos: int) -> tuple[str, int]: - if tape[pos]: - tape[pos] = self.one_write - return self.one_transition, self.one_dir.apply(pos) - else: - tape[pos] = self.zero_write - return self.zero_transition, self.zero_dir.apply(pos) - - -def solve(input: str) -> int: - def parse_rules(input: str) -> tuple[str, Rules]: - assert input.startswith("In state ") # Sanity check - state, lines = input.split("\n", 1) - return state[-2], Rules.from_str(lines) - - def parse(input: str) -> tuple[str, int, dict[str, Rules]]: - first, *rest = input.split("\n\n") - raw_state, raw_checksum = first.splitlines() - rules = {state: rules for state, rules in map(parse_rules, rest)} - return raw_state[-2], int(raw_checksum.split()[-2]), rules - - state, iterations, rules = parse(input) - pos = 0 - tape: dict[int, bool] = collections.defaultdict(bool) - for _ in range(iterations): - state, pos = rules[state].apply(tape, pos) - return sum(tape.values()) - - -def main() -> None: - input = sys.stdin.read() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2017/d25/ex1/input b/2017/d25/ex1/input deleted file mode 100644 index 199164f..0000000 --- a/2017/d25/ex1/input +++ /dev/null @@ -1,62 +0,0 @@ -Begin in state A. -Perform a diagnostic checksum after 12683008 steps. - -In state A: - If the current value is 0: - - Write the value 1. - - Move one slot to the right. - - Continue with state B. - If the current value is 1: - - Write the value 0. - - Move one slot to the left. - - Continue with state B. - -In state B: - If the current value is 0: - - Write the value 1. - - Move one slot to the left. - - Continue with state C. - If the current value is 1: - - Write the value 0. - - Move one slot to the right. - - Continue with state E. - -In state C: - If the current value is 0: - - Write the value 1. - - Move one slot to the right. - - Continue with state E. - If the current value is 1: - - Write the value 0. - - Move one slot to the left. - - Continue with state D. - -In state D: - If the current value is 0: - - Write the value 1. - - Move one slot to the left. - - Continue with state A. - If the current value is 1: - - Write the value 1. - - Move one slot to the left. - - Continue with state A. - -In state E: - If the current value is 0: - - Write the value 0. - - Move one slot to the right. - - Continue with state A. - If the current value is 1: - - Write the value 0. - - Move one slot to the right. - - Continue with state F. - -In state F: - If the current value is 0: - - Write the value 1. - - Move one slot to the right. - - Continue with state E. - If the current value is 1: - - Write the value 1. - - Move one slot to the right. - - Continue with state A. diff --git a/2017/d25/ex2/ex2.py b/2017/d25/ex2/ex2.py deleted file mode 100755 index 918e0ec..0000000 --- a/2017/d25/ex2/ex2.py +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env python - - -def main() -> None: - print("There is no part two...") - - -if __name__ == "__main__": - main() diff --git a/2017/d25/ex2/input b/2017/d25/ex2/input deleted file mode 100644 index 199164f..0000000 --- a/2017/d25/ex2/input +++ /dev/null @@ -1,62 +0,0 @@ -Begin in state A. -Perform a diagnostic checksum after 12683008 steps. - -In state A: - If the current value is 0: - - Write the value 1. - - Move one slot to the right. - - Continue with state B. - If the current value is 1: - - Write the value 0. - - Move one slot to the left. - - Continue with state B. - -In state B: - If the current value is 0: - - Write the value 1. - - Move one slot to the left. - - Continue with state C. - If the current value is 1: - - Write the value 0. - - Move one slot to the right. - - Continue with state E. - -In state C: - If the current value is 0: - - Write the value 1. - - Move one slot to the right. - - Continue with state E. - If the current value is 1: - - Write the value 0. - - Move one slot to the left. - - Continue with state D. - -In state D: - If the current value is 0: - - Write the value 1. - - Move one slot to the left. - - Continue with state A. - If the current value is 1: - - Write the value 1. - - Move one slot to the left. - - Continue with state A. - -In state E: - If the current value is 0: - - Write the value 0. - - Move one slot to the right. - - Continue with state A. - If the current value is 1: - - Write the value 0. - - Move one slot to the right. - - Continue with state F. - -In state F: - If the current value is 0: - - Write the value 1. - - Move one slot to the right. - - Continue with state E. - If the current value is 1: - - Write the value 1. - - Move one slot to the right. - - Continue with state A.