heh
d25
aoc done :(
| -rw-r--r-- | Cargo.toml | 1 | ||||
| -rw-r--r-- | src/inp.txt | 1552 | ||||
| -rw-r--r-- | src/main.rs | 241 |
3 files changed, 1389 insertions, 405 deletions
@@ -8,7 +8,6 @@ edition = "2021" [dependencies] itertools = "0.12.0" memchr = "2.6.4" -umath = "0.0.7" [profile.release] lto = true codegen-units = 1 diff --git a/src/inp.txt b/src/inp.txt index 0168991..58449f1 100644 --- a/src/inp.txt +++ b/src/inp.txt @@ -1,300 +1,1252 @@ -246721424318191, 306735195971895, 195640804079938 @ 46, -42, 141 -286716952521568, 348951612232772, 274203424013154 @ 121, 421, -683 -231402843137765, 83297412652001, 273065723902291 @ 30, 154, 66 -149007003797913, 135560881744452, 410108443488148 @ 94, 29, -45 -300753321910904, 325992413695632, 294261243172676 @ -42, -9, -109 -300781588558364, 344948875944323, 229364859114892 @ 13, 498, -357 -302416458755294, 412874844208922, 178639130881522 @ 28, 6, 18 -540472514518877, 478952261686592, 505458461450740 @ -312, -311, -173 -276629207785995, 379893174962255, 152821077152811 @ 128, 52, 262 -223200859996270, 114056922580498, 375502982328520 @ 28, 74, -27 -312505186925210, 415915381089560, 212826752815317 @ -81, -143, -118 -273794100456071, 282467744290445, 306298513451258 @ -24, -98, 41 -259245649187948, 316374707389376, 294906031108960 @ 43, -15, -79 -143643667453234, 88866006914236, 353368801626174 @ 184, 251, -86 -332368149189662, 334747534451742, 385329199247756 @ -120, -12, -361 -268933652419162, 421740118342042, 391493101790816 @ 94, -214, -679 -301531784847016, 413994789138520, 287794043139863 @ -47, -223, -46 -176915604519101, 138271809955392, 377724585323003 @ 102, 105, -70 -309189878135560, 419571934158352, 180163951121044 @ -56, -67, -12 -262132992306992, 267518766563744, 349909481560834 @ 181, 593, -756 -239788061990996, 301077791945030, 218822561314048 @ 99, 46, 69 -319370801477810, 392479898544435, 249482280086024 @ -117, -28, -281 -288707028447527, 410618924373965, 181576682269387 @ 100, -78, 62 -244521854811880, 283051561687366, 418795729455662 @ 89, 90, -398 -238807520082063, 136241007048093, 324715592395753 @ 10, 44, 30 -294299994571745, 385145428484483, 195910731717085 @ 58, 124, -52 -306461763665864, 387268253700128, 204685867171204 @ -40, 70, -89 -150598729402492, 216934671296672, 388007739625504 @ 95, -47, -27 -195072796221443, 297575703140000, 142754563217814 @ 138, -23, 233 -430769604245252, 229973070563291, 434035646179750 @ -195, -40, -99 -332353368526034, 135412329046925, 122938613925455 @ -105, 292, 272 -310982937073304, 311524964955440, 149455427070268 @ -71, 517, 290 -343115420460683, 228216500870165, 218120975698582 @ -114, 52, 113 -327597792982512, 372487719333498, 196100842247682 @ -155, 56, 32 -398064309447116, 225098858957039, 524866315148092 @ -163, -26, -213 -158929446916050, 103990827096452, 231247768851240 @ 104, 103, 121 -252227819340623, 297045207886766, 287364155527121 @ 60, 31, -68 -353843214482102, 285898655957210, 402144043314484 @ -112, -98, -69 -286960863445446, 376276907993440, 222153547640848 @ 34, -15, -51 -319293209745416, 258199711416220, 334319212032088 @ -75, -42, -18 -324432786186812, 349882976659793, 137109423781624 @ -91, -102, 247 -237574994443745, 316897394285108, 379979722976610 @ 18, -131, -47 -383515921182651, 311739218003626, 363284835363396 @ -158, -105, -61 -260527439500358, 181469835811736, 325064698571908 @ -14, -11, 35 -246859296332206, 369893127109357, 136998548988340 @ 47, -150, 243 -294454739155396, 355425422256410, 208384350886123 @ 61, 379, -162 -288293451577373, 253011793841258, 273395774598079 @ -16, 135, -44 -282626651563528, 402140597670290, 129944591466276 @ 25, -158, 307 -229860839158736, 289959627421280, 236684829341308 @ 42, -73, 100 -333234089033843, 344406817664942, 274418471987416 @ -122, -37, -81 -327113169860496, 157080430222374, 504427681777182 @ -83, 56, -196 -216695929769111, 350704706628125, 86557060742263 @ 158, -64, 380 -230636017709051, 441827058928940, 234319432021678 @ 66, -275, 81 -323330042177986, 338471392993848, 180264388740804 @ -118, 125, 131 -281852642010608, 366824981011048, 137999472048756 @ 150, 254, 397 -418862456971472, 333566748777272, 288671227290092 @ -222, -116, 14 -321152813798756, 178228588342115, 377805466604068 @ -75, 6, -29 -266638547778762, 293761636023333, 281304743583643 @ 31, 44, -60 -263242291342808, 170117111450912, 383271302891684 @ -15, 10, -31 -245996037293074, 422248817246364, 266565597450706 @ 83, -235, -39 -279315320347361, 341710731357575, 157116540219433 @ 174, 460, 252 -194638875907186, 345989262913910, 230356522421368 @ 136, -110, 81 -197781971376015, 113634354104988, 379495334474160 @ 64, 101, -49 -277269860103656, 294745907976220, 229333729353508 @ 9, 47, 51 -386321630839526, 338836698675676, 282346598519384 @ -228, -57, -59 -292755568881228, 426260682983300, 52232426778848 @ -32, -248, 400 -304787636152376, 466885993642980, 168609998346408 @ 9, -736, 134 -293607024651767, 202924050395237, 325578883249678 @ -44, 10, 5 -301719197799506, 414293049983015, 176944487458843 @ 31, -26, 48 -286430256250216, 215707378547000, 189871236710228 @ 67, 958, 53 -259709806407704, 296171312488496, 294563194535908 @ 35, 8, -60 -301569088814996, 459568281597260, 237006069307468 @ -12, -420, -259 -226107589162191, 376656862088385, 426739755818503 @ 112, -142, -354 -300593136494261, 487604661487135, 383755366664753 @ -24, -490, -742 -383786498238641, 255727808198569, 490313497645618 @ -138, -82, -135 -326533994569808, 456296377195264, 293321794346460 @ -120, -337, -242 -313852183229624, 425415506984864, 182936106557020 @ -115, -149, -38 -279004851703630, 343127247074809, 559710212918371 @ -25, -150, -294 -225129473919407, 349877740979111, 284784692668713 @ 60, -140, 20 -98199785141279, 111837182125448, 222865616734099 @ 194, 129, 124 -254743017137204, 249613491575984, 287932951940128 @ 6, -31, 40 -381923352317740, 425629240274264, 414187406927170 @ -161, -251, -144 -299793608794724, 387192364080320, 143233287595190 @ 63, 337, 464 -282720961237964, 342156001500026, 243973012424752 @ 11, -10, -23 -346383807759328, 199972748186264, 176880723079060 @ -116, 76, 177 -294266400886348, 332905124169016, 210796206927592 @ -35, -79, 111 -200848222291704, 217439026207652, 443060345157672 @ 89, 40, -194 -162176719644098, 199080132603704, 285536027394760 @ 110, 13, 53 -189990486267691, 217037870740765, 484352027390898 @ 62, -36, -139 -161968477207611, 307482098609333, 143664175167170 @ 122, -104, 221 -278039493255788, 332278741131214, 188346685796366 @ 39, 66, 118 -212024474677916, 165633698438540, 446741573376568 @ 82, 136, -224 -277511817747984, 302590965306472, 107909845889596 @ -10, -46, 288 -301306356737075, 421764316237813, 202382250223118 @ -12, -186, -35 -255609912866441, 135322494676145, 422737981043563 @ -10, 30, -58 -316297968479182, 357351582496046, 238857988822285 @ -85, -5, -54 -307161575684322, 406471185415634, 184747418154592 @ -32, 76, -51 -319432982414549, 431952554614367, 291512044719768 @ -144, -242, -865 -201180178502835, 339769343877550, 406281015855696 @ 86, -133, -137 -258964181488216, 297025006551120, 272788832005188 @ 26, -22, 5 -287028633240856, 167387227231760, 386125875793028 @ -37, 43, -59 -309195265338348, 371925232948695, 122820649199216 @ -59, 212, 511 -320804498786191, 101994064274270, 238017586878078 @ -88, 487, 29 -288986848159957, 257941572011315, 229997315679607 @ -26, 52, 78 -230775864719837, 239098577085875, 337472990937445 @ 36, -18, -22 -338036762019994, 518836779966132, 257174952367669 @ -161, -555, -126 -196477785747870, 358457014214022, 182269365183111 @ 83, -165, 172 -311549517509000, 226128674002544, 305151455714356 @ -66, 79, -36 -218207118037512, 29190212565888, 477260877122268 @ 35, 171, -140 -317393450978648, 385480355035856, 211535175710788 @ -120, 101, -155 -299091562946912, 311334794254882, 257002570737977 @ -39, 15, -14 -302224206628343, 392743599482192, 196159152582552 @ 6, 121, -97 -310033280353780, 349791097879312, 163339908361314 @ -67, 825, 209 -302057369637758, 375426899435141, 150074661070537 @ 55, 646, 416 -313663789919076, 333559381818064, 212519854206960 @ -73, -7, 73 -302767517534676, 421297694837596, 209019778422968 @ 22, -102, -350 -263160875959766, 238292859553896, 241410521831724 @ 12, 53, 71 -313115649345480, 369505317251952, 415562539164324 @ -77, 5, -841 -173964880826015, 180506413525436, 322898819677777 @ 200, 229, -112 -271834313405423, 329952581236160, 252398548099066 @ 24, -23, -7 -323643077564473, 197103375494182, 325348210210274 @ -122, 743, -487 -240062178309289, 133124320543859, 72832689462042 @ 118, 520, 433 -431611228196746, 213194324867524, 368828456134286 @ -193, -27, -23 -279210814583228, 283390845619802, 137609248434655 @ 61, 351, 304 -280896498932472, 219974884243872, 243275643676276 @ -29, -10, 102 -193856657360398, 214679939204937, 212190799310200 @ 199, 234, 87 -307499988135020, 342417105895400, 215217458441668 @ -56, 27, 35 -281864876728586, 220899255140090, 436247130167008 @ -30, -10, -127 -333004806275108, 222430020172325, 310224495308326 @ -147, 502, -331 -306820085730860, 402177574674984, 174325664925320 @ -24, 171, 62 -272222194737544, 261357086465954, 141315450042710 @ 169, 808, 338 -308757473249960, 345978565400732, 152614566504952 @ -51, 838, 342 -380545855850618, 402147912212456, 281360256844096 @ -212, -195, -51 -296375698707214, 470827283781022, 389475108295270 @ -5, -421, -783 -256307577601153, 241096640079778, 139412666854599 @ 16, 23, 232 -284592138916236, 308249989239675, 247814845009158 @ -19, -42, 49 -316554025113023, 407141966736692, 134745384647530 @ -92, -147, 321 -282366680602894, 407521214188681, 186367921917670 @ 139, -64, 33 -351966627233510, 214016963757974, 266313726892450 @ -182, 358, -92 -176726051468751, 298900204169286, 396099821834398 @ 92, -105, -75 -265407544235886, 307662821902028, 194086100076295 @ 67, 109, 108 -501734873194135, 530111640108523, 380535317713836 @ -326, -394, -101 -173245473751373, 116407379521552, 191189624857118 @ 294, 569, 125 -297761534203103, 423376498786192, 202044202024097 @ 6, -199, -22 -296449172773716, 375539051686196, 179295051231540 @ 37, 181, 83 -128171886073276, 336100465900080, 52316934040488 @ 188, -127, 350 -339380752383208, 137882303511600, 471071281000868 @ -122, 327, -415 -554370585618983, 478187507260244, 425051776704658 @ -354, -315, -115 -477220916840824, 308846009474264, 472853089413746 @ -271, -107, -188 -316170470223760, 260360451741032, 403024406833116 @ -71, -47, -101 -193442027725088, 266279610721967, 240565199467998 @ 105, -20, 85 -418103952377216, 278219521445585, 420030394804573 @ -183, -90, -88 -314383133686160, 174221364382980, 301934152489336 @ -69, 72, 18 -292798126665176, 356832141543584, 213085550421028 @ 17, 104, -35 -229260592183736, 511507706934320, 408381549030388 @ 31, -353, -90 -333830914432166, 296391670030970, 196574802050988 @ -129, 115, 107 -314915871098775, 509410943995357, 346958404358890 @ -70, -364, -51 -321540954135941, 295478856350450, 234397974641128 @ -88, 31, 47 -170623481496605, 147944019815768, 425967986144950 @ 104, 81, -119 -296604743633363, 375389431301626, 203247958507992 @ 60, 291, -169 -296332046096936, 397573575370384, 187638713652580 @ 27, -15, 39 -261623461340920, 123095735599088, 39120282935380 @ 13, 229, 393 -191491030298598, 35248905928680, 390143122624786 @ 91, 257, -99 -315647953007744, 511014303102090, 274554232423350 @ -75, -418, -28 -287336583274965, 381419950675969, 261023963434093 @ 10, -90, -120 -246249716710826, 435590325496961, 339164881693984 @ 107, -266, -273 -198904491741506, 407970397713185, 454321602339883 @ 75, -230, -166 -181563940097084, 224556228926390, 227035458784718 @ 111, 22, 110 -241399457240152, 209219475714034, 327763012731166 @ 65, 159, -111 -279672841171919, 374792256774284, 169472738267884 @ 80, 21, 171 -262010216152624, 190799535161718, 290524852602624 @ -7, 23, 47 -297913006219224, 179101601017968, 377728757640756 @ -47, 83, -94 -296411409863648, 423219643019878, 250472728771774 @ 21, -192, -348 -253554436862471, 307766744600765, 285908126118283 @ 66, 28, -84 -320954306883422, 311449285311740, 247334946791518 @ -84, -33, 40 -311090870561631, 438029394478639, 284346092446582 @ -68, -276, -243 -317322809120710, 269234377196520, 109240755646262 @ -86, 237, 362 -250290415097078, 269382602283470, 289162401581848 @ 18, -38, 25 -249536125348441, 340958351719020, 240532279142563 @ 58, -75, 42 -317713394151095, 375965036514033, 257268288915207 @ -144, 330, -746 -265938733797896, 415583345183280, 404808026446788 @ -12, -241, -85 -234460673791530, 129771621651566, 445745987763558 @ 40, 154, -190 -308178107252168, 409768582707152, 198737368923588 @ -54, -119, -5 -135115319635616, 60812016650492, 277050812560867 @ 137, 165, 66 -289379193714166, 366860444932095, 302640677097163 @ -29, -150, -36 -285213989112104, 158755554306260, 349260476816766 @ -39, 7, 14 -301205681276216, 299983991831420, 80153854382938 @ -15, 495, 670 -234810352513064, 293534829900512, 289282208697108 @ 114, 70, -100 -240952833920571, 197695514419360, 311543229658383 @ 16, 9, 26 -305227494507256, 405935597165360, 185856632562788 @ -20, 10, -10 -319775262915076, 339969179926476, 209166727366395 @ -83, -75, 106 -270338432082852, 91601866170304, 76395761166092 @ 5, 329, 347 -263386024158920, 222988263385328, 315912396766348 @ 15, 93, -60 -178304260725436, 118910362298380, 119574386634208 @ 104, 138, 252 -206283598704930, 142807962377448, 334848469062451 @ 59, 81, -6 -292364105463680, 309767745625964, 225791068005160 @ 51, 556, -208 -200705901256040, 147798368839072, 311803090438700 @ 45, 21, 49 -345206783211584, 323580154629995, 219672947423395 @ -151, 12, 58 -281963055614396, 411693690132560, 202153168837528 @ -24, -231, 142 -277341769320985, 145137555303643, 68333479675496 @ -32, 14, 287 -529271225298244, 453842221080146, 496520855131348 @ -301, -284, -165 -264298788323609, 293541925137647, 98430049258118 @ 54, 100, 365 -327615972425816, 490050114085520, 277487153309188 @ -129, -468, -222 -186107941994676, 283280774262818, 237171624735205 @ 197, 55, 42 -278978429739436, 330175719278560, 273783099262008 @ 95, 273, -367 -435531197475376, 400670730457280, 279911142989008 @ -197, -227, 72 -190004342145176, 370006894380560, 198196037116548 @ 93, -179, 151 -335854428953144, 381479387316216, 236293819059340 @ -99, -190, 96 -207554532548248, 6539444781936, 217188119108260 @ 59, 248, 132 -262013991259446, 508200724269910, 329238876156648 @ -8, -348, 5 -218799766626421, 166720043764543, 306769790899965 @ 82, 164, -32 -296973080259372, 440844666968742, 190185712280585 @ 85, -337, -104 -309064385465064, 414085415702208, 521492515997524 @ -62, -232, -348 -317963694114626, 399481733312270, 190165510484623 @ -169, 187, -136 -218469482057714, 272394930395906, 342167564954521 @ 71, -25, -66 -302264904286593, 373125391193044, 144309548929775 @ -10, 173, 338 -263238300283226, 224777273135614, 330737734366010 @ -18, -60, 34 -129961827135919, 288132832471634, 259277840833003 @ 136, -101, 90 -308761217331781, 260575799465185, 381557378361098 @ -62, -82, -31 -203759198472328, 91983444207282, 367840187848473 @ 49, 99, -20 -303893908668145, 417758465361114, 172504540426443 @ 20, -25, 80 -296754539531210, 399288127219007, 194084532115705 @ 59, 68, -84 -307351257536384, 449879793266828, 182308577450321 @ -39, -419, 14 -272378337974448, 378262301111296, 224487313426852 @ 34, -117, 39 -459927820855406, 424983541138388, 349419905478262 @ -253, -251, -39 -287004981528824, 190972613820887, 326288001300256 @ -31, 80, -33 -252784542442791, 363657304377220, 285481350084863 @ 56, -115, -58 -326038639710308, 450786906770012, 251946265998736 @ -85, -285, 77 -283474704671274, 371940001093817, 209976237330305 @ -29, -182, 136 -382702858409528, 444422167774208, 331124536044712 @ -151, -275, -6 -179948040734783, 228108420999779, 255909505402867 @ 120, 28, 66 -237524321878289, 148841614852238, 151254778022413 @ 74, 279, 220 -348569462333665, 421453262961424, 301514432941074 @ -254, -199, -479 -199251321681646, 136199503556261, 427009739111869 @ 67, 88, -114 -278418218302606, 562530988680470, 261755708321350 @ -8, -488, 24 -176842477452459, 141978111598604, 309103048997340 @ 106, 109, 11 -348755026135408, 162561919101752, 498526112311628 @ -122, 148, -310 -269297612527496, 180975881314805, 540881265587293 @ -15, 38, -252 -345652585950535, 288311748747680, 314241969805474 @ -122, -23, -51 -262704746817928, 353869290157712, 221941656379551 @ 49, -71, 58 -287257704962006, 531815332362030, 441488675296178 @ -33, -393, -175 -256520617424591, 448150572325835, 227764461177313 @ 42, -290, 70 -202893363204066, 79371971250023, 207588282625175 @ 187, 568, 94 -319663232965736, 353490274595755, 260321391408833 @ -111, 128, -268 -256460780680036, 320339128487420, 351604531210072 @ 7, -113, -51 -340343237259132, 242391306258356, 514486403335505 @ -107, 13, -308 -277789641544148, 366170545888619, 206414614920270 @ 45, -32, 53 -206557091057336, 284412235858640, 265249742364748 @ 113, -7, 23 -200058942595208, 149651001258802, 382994015638247 @ 81, 111, -92 -299882162146280, 171870621175403, 263442495672019 @ -47, 164, 34 -287130633382189, 255583803866596, 219755227411948 @ -14, 125, 75 -395972296970792, 439860873144581, 306982169737690 @ -207, -272, -43 -304831995146888, 440039353753188, 207895883988548 @ 9, -345, -445 -295944517253747, 240135771142652, 315256271434996 @ -44, 5, -13 -329008076058398, 485899869839072, 172695007808866 @ -84, -319, 186 -272373236462388, 363704224544288, 235686962623623 @ 13, -119, 50 -319279022263128, 266624321542728, 284490123865420 @ -79, 18, -6 -161641561276466, 41563569070578, 268085808633733 @ 87, 135, 90 -365971083609728, 339047606719955, 303043441198114 @ -119, -168, 57 -294443683486196, 159461249372360, 122838665595778 @ -45, 61, 244 -302275049368607, 441796049764563, 153834331419663 @ 60, -384, 370 -288372450517132, 406187629437418, 197004038862644 @ 131, -6, -101 -57723906085246, 55110994531743, 126970359328833 @ 307, 294, 250 -203070234228688, 142540320706520, 111492906485796 @ 74, 112, 263 -362723230963720, 364960363560400, 299104890089108 @ -124, -183, 40 -203004225714562, 47287703427334, 469589331754592 @ 58, 176, -151 -218851618553087, 251952874554825, 398983744250762 @ 54, -28, -107 -21689832173314, 7196048475593, 14843783552640 @ 299, 274, 383 -301904706242596, 392333322546700, 140787103433108 @ 19, 179, 443 -315321553133120, 255283247651792, 384680191729812 @ -69, -71, -41 -303106212036766, 483956022043614, 167605088543932 @ -38, -450, 183 -284757900665506, 411544050121970, 211810295233858 @ -14, -218, 102 -90637077940343, 91161958250552, 154642232371349 @ 228, 193, 208 -298012025700996, 338448765621996, 291482316933485 @ -43, -99, -22 -342974195933200, 233206693961880, 426072122569920 @ -101, -33, -104 -423050052685844, 327267977271980, 463574855179352 @ -174, -158, -98 -222566881838600, 322764422648384, 289229054612948 @ 150, 10, -110 -236609167796616, 324435474780574, 290549096104558 @ 137, 38, -150 -308729807021465, 166588915910750, 319205398187944 @ -62, 7, 39 -263650255197564, 171982750892979, 338410835900087 @ 13, 170, -92 -352915265477066, 139891883907995, 401992709491063 @ -113, 78, -80 -241611446917781, 234910761928220, 301084380649513 @ 94, 197, -120 -273829665179716, 361865242082552, 198681033733752 @ 112, 91, 28 -327570986719837, 357677902936825, 288957622723288 @ -106, -78, -105 -302852208546603, 420068579406206, 212517789863679 @ 20, -89, -386 -315212196479630, 414136017997320, 201641132140594 @ -90, -163, 12 -274402229551268, 203910875376665, 371442394235011 @ -27, -28, -16 -262779995707576, 353012112533280, 292139285374988 @ 73, -27, -175 -219929362937879, 223780407774609, 288261150329807 @ 90, 96, -16 -169211911265255, 78828973725456, 8836481164160 @ 114, 185, 391 -236511643043306, 233997116096030, 306060703484698 @ 44, 30, -12 -254413781762700, 383936855578932, 112304555750424 @ 76, -136, 326 -244578011242068, 345070552690802, 240315299634937 @ 125, -5, -24 -307577747041581, 411802832680750, 184585131560997 @ -28, 107, -134 -295915680499993, 353395053699836, 219948398240689 @ -16, 13, 6 -199501005263612, 52016793693776, 379559585792044 @ 103, 313, -129 -226173273919487, 293120563169781, 227485141664908 @ 96, 6, 75 -278967133656536, 344098352677328, 160013451876676 @ 132, 310, 223 -247485317039478, 361598208398985, 232574714551191 @ 95, -78, 22 -320985069928504, 330688714410752, 230801427150028 @ -91, -5, 30 +pzt: zfx qdv +tzg: bqj +fcj: znv sjk pqc zcr +jrm: qpf lrs xgm +dxx: lrz xvc pcs +zbt: vpp khl hnc +pjt: jbr +qpf: trv gnl +jjd: pnj lfr sdv +xrt: lkc qfj bmx rtt +vvl: mkq +cdn: kkz fdl hsr +sgq: xqd +htv: qcb vgz jdz fqd llm +mkp: kmj ktt dbg +txd: hrf bcf lpr +scv: jmj jdf glc +kpx: xmd jqh +zhj: qbq sqr rqr tvg tjs cnz +vtf: slb gxt mrg +bkc: gmk rmk +jrj: xpg rsz qnp sln +nbf: vcz tbn nfb +xfz: jgh dkp mkc +hsr: bqh vpp fkq +dbc: hfb ksl fgs +qls: pgg +kvn: hfp +fcr: vzx lfl jmj pmn spt sjl lgg +kpq: jkj sjz dkc zhq +dst: ftf thj smm ltr dkb pzt +fgv: tzz prd hcq dkr +qcr: vqs +khl: fdl fbd +gsn: rlm +xrm: dkc +sqf: mzj tkj ntf +fpt: tmn dmp bls +kst: cqt pmr +lbb: gnd jtz dpm cmq cgr +sjz: rxv kcp xpf xck mpp ddr dcm +scs: kkg gxz +mdq: sdh ldj dsg +ppm: mjg kmd +qbl: cmh vdz +svb: jqr jsx +bfb: fml bln xkj +jnh: qbq vfd kqh +fqz: ctq fqc zfb +ndl: xmk njr +zzx: nnf qqh tgm kzh kmr +svm: rpb fpg pkc grk +crm: smm dlg gnl vgz vnp +qkf: jtr cvv ghs khg ntd +rll: cbx vgt zfb +spt: znb +ckr: bfd xxq zkm +nnd: kkz msm tdz gxk +pmc: xkf tnr pbq +pxf: tsp zcv +fxh: rxl sxn zbb rmc +mqs: mzj vkc +jkl: xrl vln zpf lvg +tkx: zgz vpp knn mzc +bml: qcm tcq lvz lqs +cfn: pjd +pnj: pcc khl mbf bzp +fsm: snd gmr mqf nrg +ftt: hnc qrr qfb smr +dhr: dpc +mns: gbd tqh +cdr: xvj sxn kcq +cfc: zbh +tlt: qxd xxg xlq jnx +kkx: ltv +jqq: pzv bkv jlk +brr: sqf mrn mkp hmc sjz +qgg: srn lvp dsg +jnx: rpd scv +cjc: xlh stk fdp +ktb: rjx qdh szh sfq +zfb: jzq +fdz: dfp rsz +phl: djf gql +dxg: gxk skv +qcx: pfp kmx spt ghp +hhd: qzv qqh +xsm: gxt hkb xtk cbx +lkn: fnl htd mjt kvm +xpk: gtl pxx gmh +kxz: gmz mmm hpk +ksq: jbr sdv hpt sfl +mcx: mzg qcm mhc hgt +pdk: lvg xfc jkv nfj +nhk: kmd zgh ckr +nnt: qxc pnj bdp sqz +qfq: npp vnr fsq kgh +ggq: xpg qlc nnx qjq +nrm: rzv bln +krc: xsz znt +llv: vkm xfq xbk xvk +tgm: vjt fmc +bxg: jlv lvz +vld: xgt +hpt: tzp dtm vgq lmj glv +qvx: tnr czl snh jmb +qtf: dsj vtn +zdp: ffr cbq tcp +lxx: qkp pzt plr +sdc: spr zbh +bkq: zfx knp +dhn: xkj hjr rnh +jbx: nnm vgk +kqk: xvx mhm ffv +slb: lrt jcg rkb +lvj: ffv ntl stz +mpt: ztk +jdg: mzp fcf jxv pxp +slr: jjd svr jcg +mdj: qrk vck jzx fqb +nqp: hkk szb +mlh: fhq +thc: pqm rsh +nrt: nrm btg qhr mpc kst +smm: gnt +jpm: plr +qsv: fhq pbl kqk fjx qbl +jlm: zdd czn bmr lcx +sps: zgz jbr +dtm: str +vkh: btx +hcp: fmc +pmf: lnq vxb qfj mqf +xvk: svl jbr mzz +ftj: cnf dxp mjg hrz +jmn: ddr sxv mzb nzk lgz dhp +bjc: xxg +snx: dbf pbm cjc xfz hlm gcn +pbm: kps bkr rsr +jjl: sfq drk rgv gcl +dmt: ktp +zzd: qnv +tct: ftz glc dqc +ssq: jcb +dfl: qvt zcp mtn kcr +xsn: fdl gqd vqs +gch: sbt brs sct cmq gln +tpb: nfg rpb trg bhh +bmr: zxq vgh mts +hhr: bhd xhf jcb krx +hls: mkq rjx rzj +spq: msq cmh rgv ddv pfp +vhn: hnq sls bnc fdv +fkk: gpm rdx kxb ndd +lkg: qpf xpp +qgc: mjm mct gbr +hhq: gjp tmh tcp sgz +nlz: vkc jgb xmd fbh +lrs: fpm +ghg: nzk kfs gqk +jqt: glv bfb fpl btk +rdt: nkx pzg +fbd: skn +dpj: pjs +vkm: xgt pxp gdv +lvq: mds mdq lxk xtg +dxl: grb hjc srj +jxr: sfl mbz nnc fbd +qtk: pbq +knp: tmd +phb: vgk +nsv: phl rnj szh cgr +bnd: zdg xlj mjg +fxd: xjk dbt fkq vnr +vzh: nnm dfq htd jqg +ggx: ntz bkr fzq zjf +rkb: tzp xmh glj +sxv: rsr nzh +pkf: kcp hpk vsh +gdz: bll fmc +hjs: dhk +qhg: gln +mgq: bkc xnh xvj xkf rpd +rsd: lsl znb hcq +mgr: kvl +lqb: nss fpl hkb gsn jzk +npq: grk ddk rsh vfq +gcn: mrq mzb brs sfp +rff: cvn +fdx: xfq gjq +tqm: pqm bgx +ntp: fbd scj cbq +pfg: ckb vkh vxb rtl +xpg: jsg zdf +djf: szb zpk +vft: hcq xkf +ldj: pqm +jbk: jdz nfq gmj hkk jsn +rqj: qts kvj pdd cpn +crx: vpp +dsv: zpk vxr bkn +mhm: rpp mpg nzk kmr +kcf: sfn +nkx: jlp +rvh: lrs zlp rgd rkj +ffq: ksk lzm bnm spn qqt +pxs: cfc kvj zrc xjn +jjv: rhp pkf lvb +ntz: mzj nsg +dmx: zln pbl fdp mkc ppk +dqb: pxg gcq sjk lnx blz +bss: tdq jrk +qjv: xtp kcj bmx vcq zcg +bxj: vnl xfl +ntc: tng +khm: jcb qpd +mzd: fzq dvp brh zxl +rqm: gbq +ldb: tmg +tsq: cfn frd xck rxl +qpr: lnq lfd qfb +ckb: lxk nfb +rlk: gxm pfr tbh gql +kcb: ssh pcc +lfc: ltm hdg xrf hrf +xjm: kgr cbn vpf dlz dgh +pzv: qrs njj +vpj: qbq +vxf: lhk +mjp: tch pzg zlb mts +jlt: vdz mtb +blz: ftx +pkc: vrt pzr +spn: rmn bff mdf +rnk: fbd cqt +ckj: jkv djf cxq llm ndn +jmz: sjh cjg nlz jgh +nzz: nzs pqm nrg zhl +lvb: dpj mzf +jkj: zmz qls bqv +bfc: dhk +czq: klv ssh +npp: jqs pjt bhh gpm +jmj: lqs rsm sml +vgx: nfc +mfs: ffv +scn: fhq +svg: jlv +jjc: tbb lzn +rcs: vcf fnx gnz smr llk xsz dtm +pvk: gvx bpd mrc vck stm +dzb: pdq dlt tcr hvd +dpg: pdd +cjx: xsz vtn fjb grv +jkf: nmc vlp pxj krp +lmg: tvj jqh +lxv: mrc xns gln +dvn: rrn krc ndm +jhh: ztj lcc bkn +ntl: cvh +rlj: vjj lnx pzg dfq +mhj: lzm pgj lfp cbh +tnr: qdt +vjn: kkz zfb dtp sfn +jsn: xpf +mdf: ckj xfc zmt +hjr: gbq mbx +rqn: stm xlq +dpf: kvk +sgs: rhp +mtm: tdb fqd lgx blr +klh: tzg +rsm: qfd +fqb: dpf tmd hfp gvx +ffv: kvk +scf: rkt xns mcs nrf +zzb: nft hcp nkh gxm +lhs: klv dtp ffr shv +xzx: fzt srn vxb ghs +rjx: qkk djv +lnm: vfp zhl gll czq +snh: tdb vzn nrf mxn +pzd: fhj bkh +vhq: dsg ssn hdx zcr +zrd: bll +rxm: tcx kxb zgz +htm: grb sbk pcm +mpg: dvp jsx +vlm: ttd dpx lss +vnl: ksl txn +czg: hrz gks kfl +mkc: kns +jjr: hkq cqm xqd tqj vbx +fnl: qcl thc +tgg: dxg nck fcn +kgv: xgl ztk dfs +lqs: bll +xkl: hkk +hmc: hkk +ztb: rmp rxv jzz +pzr: jdh qcd gsn svx +zlg: gpm +jvd: bjc crn brh lrn +xhh: bzp gbq +zdk: crn gks sct lqh +vbq: nzh fzq sxn jgs +txv: tkg qfk jlj bkr +tzl: bcf +cts: gjl vgk +dcd: pkc gcp ndd rxm +khj: lvz qfd rkt kcp +lxz: dkc qgj ztb +cbq: dgh +ckl: mts shv +gmh: rdr phb +tmf: xzt gjl mzr +cjr: fnl tsp ptq +xhf: xpf btv +qbf: tbh pcp +hfp: xlj +lgg: dbn ltv bnm +gqd: zzd rdr +rfm: hgf hjl vcz +mcj: xkj hnh dhk +xml: nkx +xvf: czp +drz: dpg pxk jtl +hld: jzl krp lrt +gjf: cjc qxd pfm lgz +ctf: vkh +mnh: fcm tsf qnv zbk tth +gdg: cpn vjj vgk +vtg: jsn mkp ddv tnr +nft: ntq prb jjc lcc +zqp: tkg jrm kmj +szm: nfp vgh +xmz: qbq tjp zvf +mzp: bln dhn bvj xgl +gvj: hjs xml +nhx: pcl mrg +xvc: pxk +bmx: lhx htm khg xfl +jqd: drp zjf msq lfl +llm: mzb +lns: cfn srv mrn +scq: zcf slb lmp mpc +cnt: zkn hgk knp lvj +kbb: ktt nvf ccd mrn +gpr: kpx hgl jsx bll +dfm: fbp dbg xzq mmm +qdk: czl +smr: pcc +hps: dng rfl +lgv: jcg qcl fxk vfc +nrf: hkk tmd +lrt: blz +svr: sps xbk khg +dlt: sjh xvf +qvt: vrn dxp ffx +fcf: gcp nnm ntp +jzk: xgt fqc mfs +rnq: jsr vzx gqk ccr +kmx: znb pgj lkg zdg vzx +vxr: crn +vxc: fgq +jfr: kvn qdk rpd glc +vtd: qbh xxg qkp ntl +grv: zzd pjt sch +jrk: grk +mbx: xqb bgx +rpz: xqb lrz tqz nbf pqc +xsz: pjx +qbh: zrr kns ntz +jph: qkk +xvx: mbj zbg pgj sln jnh +cbd: zzd bgf cpn +nfg: tzp jlp bsp +gjp: lbs zlg hjp +vqf: shv mpt jjf xtp btk xsn +qrv: vjr dfq +kxk: lvn vgn rff +ksk: xvf +stz: mzf ffx +kzx: kcf rnh bzc dfs ztk +tng: qbf +ntm: zfb fdx qfb vhj +pcl: ngs tdq +xjt: pxk lhx mts +nvl: ckr khm gql vkc +rqr: vhg vdz +knn: btg pxx +fpl: nhg nrg +gjq: vrh +mxc: hnq nfc +mct: xrm +kjk: cvv fkq dlz +ppk: ndn dxr jgs +hkq: pjh +rvc: dsg mgr pcl lmd +rgl: xvf pgg gbd qlc qrk +blr: rkj lpp tnr svf +rcj: pjx fpt hfz rlj +xlj: xgm +hkb: klh gkd +zcr: cfc qtf +zvc: xqd ltv +kvl: bgx +djv: bnc mff ztj +tzs: dfp dsv jlj nzm sln +dgn: hcj vtf kst rdr +glc: tjp gqj +xnk: mns rmk czp gvx +pcp: bjv +srn: gjp xtg hdg +lxk: rnh +vfd: tdb dpc +ngp: hgv gbq crx +zsd: sdh bkz dgc +lvk: nss grb mzn +hgt: vsx +xgl: bzp pkh +dpt: mzg sxn xkl kps ppk +flz: ncg hnn mrq xfc +fgd: rph hfz dbc +hbl: ghf jqq mfv gdg mpc +gxh: crv nnd nhx +vdn: kmd bjv +cnc: rxq jfj svb +ksl: sfn +msm: pqm szm +rdz: ckc cnc sxj lrs +nnc: lbs jrk +bvj: cvn xfl +rsz: pcp +mgs: nsx tsq vgz dsv +pxx: xmh +lvp: mxl +btt: bhd dpc qlc +ddv: jgb rps +drp: xlq +vln: gnd xxg +rsj: jqt mpt hld vgt +kzh: tgm jsn blx +sdf: rff qrv htd fkf fhk dpg +hgb: jvk tzv qmn vnz +nvd: pzp tvj +sjh: qzv +svl: sdv hjs +kzz: hlx bzp gtl +rps: zfx srv jvk +tcp: kbg +qrk: dkr bkq +vfk: cbx ppt +mxh: xsj ftx hrf +lcc: pfm +rmm: hss dxr mrq +xck: rsm +mvr: jbk xnh zhh pbq ffv +xmh: bfc +htr: pxf chr gmm fgs bps rdr +tkr: jnx bfd ntc xsd +bdg: rpp gks qqm ctp +rbg: klr zhh +pmq: bcv knp glc +jzl: nqf gsx qtr ctf vcd +ddk: kkg lcx lhj +tjb: htm chr vgt xjg +vcq: tdz zdd +llk: jbx jtl tlb rmd +jqj: stk nfj vtb bjh kcr fkn bhc +cbx: lnq +txt: rbg kcp +vnz: tzv tbg +bhc: cqv zrz +vzf: vkm trg lpj dmp +qcl: fjb +zxq: ssh gjl sbj mbz +kqh: zrz vbx +vhp: gjp vbg fqz +nrp: znv +kjl: rjg krp mxl +rcg: mtr nxf kvm npr +rqx: kvb nmc +ntd: nbf cts +bkz: zcv +zgh: lqf bff nnn +hgk: kns tcq qvl +kqq: hnc vfp srn tmn tjb +kgh: smr tbn pmr vfk +chr: ngs kcb +zxm: jqs ptq mxr +lmp: hnh szc dqb xtk +hrs: tmf fml +mpc: cfc +qkp: fbh +ffx: ksk +pnk: mct scn jbs slm +fqm: sch knb nkx bzp +blx: cvh hgl xkf +pmr: hjs pxj +gnj: fqj zxl rqg +ngb: vds ljh qhr dfc +cmq: gfx czl +xfl: njr +ggj: jmj lsl ttz jtz +lss: ttz +ktm: dng cqt fhc +prx: zbh pjt +hqj: czp jlv vtb vgc +kgf: rsr +vcz: hgv +tgc: fkq ndl rjg +cpf: nfc +vtx: glj zdd fgs zxm lrb +mtn: bjc djv gxm +vrn: ssq +cvg: cdp gln dkp +htk: qzv bcq jmb vqr pmn xkf +lrk: cvv msr +zcf: scs +skp: gmj hcp gnt zjk rxl +krx: vxf jfj dgq vft +xxg: cpf tdb +vsh: rkt rxb +tmh: qts tdn rnk xjk +snd: jjf gjq pzg pbc +mxk: ztz ztj kqs +qnh: gks scn hkq hgk +qvl: xvj +dql: txn cdn rph zdp +knb: ctq +vxk: tjp +zbk: kzh ffv xqd lbp +qvv: jbs ldr bcq vkf +cqt: xjn xgt hvk +hjp: mgd +nzm: khq qgc hjb tsf +mnx: ktt +ghs: ccj cqq +qfk: nfj zrz +vbg: khg pxg hnh +cqv: fxb +clp: ntd txd rkb kzk +kjx: dhr qtk +zcp: pzd dmt rbk +rdd: qrs vgn lvn lcx mgd +vnf: dlt qgc bcv +fmt: zkn +znb: jcb +fdv: lmg fdz dbg skz ffd +xdl: kss tnp ggh bqh pdh +qgn: dlg jph rmc qbl +ndt: fjb vkh hgv +grb: nzs +qtr: sfn ndl +vrh: trg vds +bnm: nsg gqk +mqf: npr qrr +xgx: dgh bxj nqv +cxc: hrs vjs kpm +nqv: dbj vgh nfp +pnm: hgk mqs mzb vlm bkc rgr +vgt: hgf ldb +pcd: nzh fbh rgv kfs +plr: mrc pzd tkj +vrj: tcr dgx kvn +fzt: sdc bqj +gbh: zpf plz fdz zvf qkk +vjt: rbk +ljh: tbg skv tmg hdg vcf +bzz: fgs nrg rdt vjj +drq: cxc xgv tzl ksl +dzx: lpr hfz tsr ssn knn +xsj: srj mzc qnv +xgv: nss jlk +nnf: vmp czp +bps: jxv ssh cbx +xjk: sgj dtp ngm +bkv: ddn qhr +mzg: fmt +cpk: hzn rrn bvj tdz +vcf: rpb bzp +vmf: lgk hhd bjv rqg hcp +hrz: xrm +mzc: fjb psb nfp +sbj: mbz +mts: dsj +ggh: msr ckl +rxq: hls qkp xnk +qtc: hnh zbn ckl hkb +cxq: mnx prb +lmv: nsx sxj hgt cdb nnn +zhl: dsg +fjx: mxk mzf gbh +ldp: zlx khd +jhb: fhc pcc +hpp: rjx sml stk ccd +fxb: kgx +fvf: mfz vrt rkb hgf csb hrf +dfp: bkq dxp +xnl: fvb hdg lfr jtl +rjg: bsp ffr +fcm: zkn +xzl: bjg pfr +pzp: sls rnq ftn mqs mzh +pjd: bff jqh +gfb: fhr zkn ncg jmj +gcf: rll jcc pxs +nkh: vrn drp stk +frl: bkz fzv +vfp: xkt bkv +kmj: czl mpp +lmq: czn sqz +ndj: njr btx hjl +njr: dfq fzv +fnj: zvc tvf gks nnf xrm sxv +xqb: qrr ctq +cbh: cmh lcc qzz +pnv: bqh fcn xrf dbj +mjm: fdp +vcr: pzv bfc fqc ngp kvb +qng: nds vld cbq kzz +dng: sgx +njz: mzr czn kkz khd +sfn: spr +gzm: rgt qqf gtl +bnc: qzz mzb +xpp: xrl mhc qcb +gkd: lmq +sns: njk hrf fhc vnl +ccd: rxr +hsp: xgm lpp rbg cxq +qrb: tgm scn zmz bgc +nvf: crn jbm qfk +gkn: vlk ktp dpj +vgk: gxz +jtg: svl kvl ptq npr +hlx: sgj cjr xjm sdh +hgn: dpg zlx cpn khg ppt +dkb: fzq jhh +gnd: vpj +bcv: xhf ldr +qqm: rxb klr mtb qqh +zcg: fgs vqs ctf +bmv: pjh mgx gmz gdp +ddz: rhn lns fhj qhg +zlr: bdr +fml: dtp +mzj: llm +vlp: pkh +mgx: jqh rmc rmk +pmn: jlt +lqh: lgz zpk +zrc: pdg btx gtl +qqt: ndz dkp +nnx: kcp lfp hnq +nqf: sdv tsr lrt +rgz: tvj lxz zkm zrr tjp nzk +zpk: tbg +lbp: rnz +bqh: zgz +dlz: lrk +vnp: fdp bjg gql +gnt: qqj +rqg: ttz +pbt: gxh vgq kvf jtl xrf +rxd: pxg jbx tmn +tqh: qzv fpm +jsr: zpr +mzq: fqc csb scj mpt +rjf: cbq svx sbk +dvk: kjx mkq dpj +fvb: msm +dhl: xlf drz ddn xhh sjk +btk: jhb jlp +cbk: hjr nmc kgv rdx thc jfb +dlg: cdp +kcx: jqj fpm bhc lxv +tcg: svg +qbt: dpf rqn jbh jqr +zdx: ljn bgx rnh zxq +sqk: zrh gsx lrk +jqs: pzg vzh +jdj: pxp kcj htz rqm dvn mtr +qdv: jsr kxz cjg +pjs: slm vtb +hlv: xml dfr zbh kkg +vqm: vcd nrm pdd rlf xvp +ccj: glm htz +zlb: zrh klh zlg kbg +srb: gnz hvg +bgj: jqh jdz mlh +kvj: vjs +xcj: fqm gsn rnk qcr +zzv: qcx mmm jzx hvs +smh: csr jsx kcq +fhq: tkj +ktn: vvl jbs gqj vsh +kbj: tqp crv rqx xhh +str: bdp sbk fcn vgn +hpk: bnd +mhx: nrm pfc rhs txd znv bjm +klc: kfl kgx jpm prd +xbv: rpp mxc vlk fxb +mjt: gcp grv +qfn: zlb hps vjr +bcf: hfb csb +lkv: rnh vfc pxs zcf +xbq: ppm ltr rzj kmr +dms: vxk dgq kmd +hqf: nvd tcg jsr zmt vxk +sdv: lnx +lqn: ntz zzb czp +rlf: zrh +ccs: xxq vpj zzb +jln: kvl srn dbj +gxk: phb +jzx: lss tvj cjg prb +mbj: qqj mrn +xrl: lqs gql +brx: npp prx pcm knb +jtl: lfd +qxm: zbb lzn zlp zjf hgt +qkk: jjc tcr +lpj: sbj jqg xjg +svc: qdh qvl sml zcp +qfv: kxb zkp +tjz: tbh gnl jdf +kps: stm +dbf: vlk khm bld +xtp: vfk tlb +pkk: nft czp slm mjm +vtq: gdz bpd dgq rxr brh +qfb: dng dbj blz +mzz: gmm pzg jgv +vqn: rmd fgd hsg ktm +hdx: qqf +lxs: vgx dbn gbd +ntq: nzh nsg +vtb: jmb sqr +drk: mpg gql fmt +zvv: bcq dkc rmc zpf +gdv: vxc rgt pzg +gjl: psb +lhx: fzv bgx +sqr: cpf xxq +qhr: pkh +pfp: dtk +xsb: btx xql njj +jdf: cdp +fgx: pjs gmz +scx: bdr kjk zfb gmr htz +rkv: szb +rjq: lbs klh zkp bgf +xkv: jtl rqx vld tnp +rnp: hmc kcq dgx jbh +dhp: gnf trv +bzk: pxg pbc kbg njz xmk +rkj: rpp ztz rbk +tmn: xql xtk +frd: zrd +qcb: rbg +lcf: tqp tmg +ghp: qvl jsg jjc +rpg: xsj tzb ldb bdr +zpc: ckb fzt rhs spr rzv +lvz: cmh +dgc: mxl btg vjf +jbd: tlb lkv xpk mgd +csn: mbf +vht: mzh lkg gqh +rsr: lbp mns +lgk: zrd +zgt: mzh lgd svb vpj +pcs: fdx tcx sdc npr hjl +vbk: zkm mlh pcd vvl plr nvf +jqg: ffj +jlg: qcm dhr nhk cvh +tqz: jhb +dfz: mlh dbg qgj frz +ptv: xgx tzl qpr jtl +lfl: kfl ssq +pxp: cbl +ldr: rbk sln gmk +rgd: mrq pjs gbr +vkx: pdp tmg gvj grt +hvk: mfs nss skv +fvk: scs xjg +ktt: qfd +vvv: xgt ftx msr vfc +nfb: pxj +ndm: vjs +lpp: jfj jgh +rxv: sls kmd +fbv: mkp nfc dtk gnx szb gkn bnd +sjp: nds kcf khg bdr +lgx: qdk qzz +zlx: bxj tqz +rtl: tqz lcf qfv fgq +rrl: nzs tmg jcc +mrg: qhr vds +bld: vxf bkn fgx +vfq: ffj +gxm: lss +tch: zbt kvb ggh mgd +zzt: kcb pms jcg +tqp: vpf crx +vgf: cdr fcm jkv jpm +jlj: pfp +gcl: cqm gnl rcn jlj pdq +qnv: xgc +mbd: vrf ppm bjc zkm +jgl: cpf dmt vkf +vrs: hgv klv fvb ngm +qvp: ngs dxg ngm cfc +lpt: dql pxx lvk +hzc: frl grv jjf gjp +cdb: bjg +sjl: kgf tct rsm +fvj: clr bhh bnr xgc +zbg: bpg tjs frd +fsb: kgr vcq gxz +dbt: ljn zbn vlp +fnv: trv dkp +rdx: jqg gxz dtm +ssn: vqs dfs +cnf: qmn hpp kqs fqb ghg +bct: xlj cvg pbq vht +dbr: dpm sfp brh kmd +dff: gbh hzp kqf jbs +xsd: jbm qdt +zcs: jlp lhj bdp ldp +mfz: kgr sjk +gfj: cvv phb +ljn: mzc gvj dfq hvg +rmd: dgh dfs +ttd: fmc zmz mzh +qdh: ztz chl pmc mzh +bfd: ktp vxr +nxf: vjs gvj rlf +tdn: mbz rlf +mvn: dtg ldb sdc +hkn: khd ndj xkt mxl zrh sgz vfq +vqr: sgs ccd pmn kvn +tkg: mct +shh: hgl szh zmz qlc +dsh: qtc qfb ndm gcq +fkn: vbx gvx +cmz: zdp scq mvb fkf +fqv: lbb cnt rkt fnv +hgf: qcd +thj: mpp nvd mxc +xjn: ngm vtn +zln: dkp rqr rhp +btg: xzt kvl +rfl: kzk xvp pxk nfb bfc +scm: jlk tzl vfc +tvk: rcn lxx nvf mzj +cqq: lpr kkz +tcr: dkr +sbk: kcf +rnj: cqv zrr gql smm +fkf: mzn clr +khq: zpk bgj sbt +crv: bls bqj mbx +mml: lvg +stp: kvj tnp lhs btk +qdz: dpt dhp gdp dxp +rmc: hmc +rcn: gbd +fcq: dmt zrd dtk lqn kqh +xjg: hvg +rzj: svg +lkc: ldp pxf qqf +mfx: hjs ctq skn +gkv: vgx pjh bff +rxl: vlk tnr +hsg: fst gmr cvv +dfr: qrs svr xfq lrt +jqr: hvd +zkq: rqg gnd kgf bll +xgc: lvn bcl +cjg: gfx +brh: sgs +pgg: nqp sls +dxr: rmb +gmr: ffr +xnh: hgl +vmp: zpf jlt +gmm: bcl +vzn: xpf tvg cqv +ftf: dhr pvl zpr +gck: hvd dgx bjc mhc +fhk: cfc kvf +rgv: sgq +pht: kfp gxk rjf +hzp: dmt sfq btt +sxf: phb qfn rfm lcf tqm fhn +msq: ctp tsf +knc: hjp cbd rph +jrf: lvn gmh zkp +cbl: fhc gsx pxk +nbv: hrs mjt xkt rjg +pxl: gnj chl bmv +vkc: gfx +kgk: nrp qcd bss vxc tcn +jjf: rlm vcz +ndn: ssq +pms: ndl pjx gfj +btz: qcr tgc mds txn bdp mvb glm bzc +xzq: mnx mjm fmt pfm +lfr: lmq rrl +ndz: brs cdb fmc dvp tcq +sxj: jbh fcm +fqd: czp +pdh: drq bdr jxv gjl +mnr: pqm fvk scm qtr btg +ztt: scs zcv +zvf: hrz jsg +zxl: tvf rsz hgl rkt +bkh: tbb qfd qdt frd +gqh: hpp mpp jzz +shj: kgx sml ncg mnx +qlc: hfp +sbt: nkh +rhn: czp +npb: klr frd fpm kkx +zmx: vhj xgc ndd +pmt: bxg xsd dlg +qxc: tsr mpt +znt: bln rsh +rgt: tzg +xlf: kvf vxc bls +tgx: gqd szc zbn qrs +sch: sbk +pkl: nlz ntf kcp +dfx: fxd jcg kgk lfd xml +kxm: xck kkx rhn zdf cdb +zhh: gqj +hcq: ftz +prd: zfx ltv mjg jsx +lhj: kcf dfc +pdd: rdr +zhq: nsg mtm vft +vcd: fhk jcc +rhc: mrn hls xkl rxr vhg +vts: rkv gmz spt +lmj: fml sqz tbn +mff: lvg +dls: zhl qqf lpr xsz +trs: pnj xhh kjl vkh +rlm: rlf ffr +btv: hhd +jdz: xgh +cnz: bgn qqh mtb +sht: fvk nzs +bjh: jdf ktt pcp +ktj: nfj jbh tbh mml +zkp: nhg +bgf: mfx vrh +ssf: ncg jkv jfj jqr +svf: xhf vjt tvg +chc: grb hps sdh ngs +pvl: rpp +bqv: kgf khm +vlc: hvg vxb grk ftx hjc +kkg: hfb +jfb: zbn xtg xmk +hrf: gsx +tsz: xsd qtk pfr pjh +jgv: gjl klv qrv pcl +ltr: tkg qbf fbh +rhs: vjf tqm chc +zdf: tkj +bbm: kgf qnp jpm mff qnx +ddr: qqj +mzf: lrr rxb +gdp: npb xnh +xmb: lbs qxc krc ndm jbd +srj: pkh +jsx: vrn +gll: glm bzc +mmm: nnn mzj kdl qnp +stm: bjv +pxj: dsj +cvn: vds rzv +zbb: fbp mzg ghp +qts: nfg jln +tnp: lcx +jtz: jlt +gzc: xpk qcr jrf rcj qgg +dmp: bss jqg +tdz: znt kzk +ghn: zcf vgn mpt +tth: rkv mtb mxc tng +qjd: cbh pvp tcg pjh jbm +fzv: sgj +glv: nnc bzc +lff: ntq vmp nsg xmd +nhf: frl sps czq xsm +tqj: sbt hkq rcn +qjq: rmp +dfc: mgr ptq +mzr: tdq sgz +gsl: vfd tmd ssf dtk xmz +zdd: glm +tmv: xrf vhp cqq svx +zjk: sct tct xfc +gsb: tzp rqm sgx lvn +tzv: svg lhk bcq chl rhp +ccr: xmd mml vlk +vrf: qhg lgk lpz bhd +tsr: xql +zbn: hdx +fxk: dlz sht hsr +qnp: dgq +mfq: mbf vtn hfz mxr +rfx: sbj njj rjf slr zzt +nds: hzn +jdh: bqj nzs tbn ztt +cgr: mxn mpp +vjf: zcf qtf +tpk: xgm rbg frz gdz +qmx: czp gnl lpz bpd +xkj: ffj +xlh: dxr lqh zrz +zqk: njr sqz ldj ppt xsb +lrb: jcc ndd mbf +kcj: xql nmc +dmh: npb kxm nqp lzn +nlx: mpd fxb txt pmt +xql: nhg +fsq: cqt krp sfl +kqf: jph hpp vrj lvj +npc: hfb gll zcg dgc +scj: lnq +vgq: sbj +nnn: kqs dbn +rmt: hnq ttd vts kvk +pqc: ldj zlr kxb mfs +tcn: znt krp prx szc +pjf: jzq tgg svx psb +gmj: mff dbn +rct: qxd zdg cmh xxq +dqc: vck gnt +vgc: qls xvj bkr +vnr: mrg bsp +lsl: czp ddr +ffd: sdl mkc tjs +fht: vrt sfn pxj rxd +dtg: tlb gmm bkz +vvn: ndt klq spr cts ccj +kdl: vdn kfs sgq +cbn: hzn kxb hdx +xhc: drk czp mzf rxl +sfp: bgn bqv +ckc: xxq kjx tjz qjq lvb qqt +jzq: pcm gkd +xns: ttz xrm +cvp: kjx tjs ggj ttt +ghf: vfc xvp rgt scm qfv +tcx: kzk mfx +qnx: nsg kcr zxl +nmx: psb rff cbk pxk +dkv: vgf szh mbj fbp +mfv: vjr +jzz: hfp rsr +kvb: pcm bhh +qcm: kps +lvn: zbh +sgz: fdl +gnx: zqp lzm ckc +rrn: gfj vqs xfq +hpn: vnz vxr tcg dhr xrm +xcp: vsx pvl fkn jsg +crc: grk lhs vld dpg +xbk: ngp +vpf: jbr +qfj: xkt +mxn: gmk +ltm: tdn kjk qcl +qtj: rsh nrp zmx +clr: pht +nfc: kcq +tvf: rhp lgd +vvq: grt xvc jxv jjf +njk: sht bxj ptq vgq +xdz: ztj rgr zpr lqv +mpq: qfj fjb lxk mvn vhp +gxt: srb xvp tzg +gnf: jvk vbx +kcp: ktp +gvd: gjq zlg mxl pxx txn +vpm: zdf lrr rmb lmg +ztf: fst bcf qnv sdv ndd +lrz: csn xmh dxl +qmv: qqm brh qdk mcs kkx jrj +nzh: mml +tsp: njr +frz: fgx nrf +fhj: gmk kgx +lfp: kcr bgc xnk +dpx: sls zdf bml +kbp: zlr vlp zkp sjk +bqk: znv vfq zcv rpb ctf +plz: rsm cfn +pns: qzz rhn phl qdv mrc pxl cmq +mvb: nmc htd +lzm: btv zpf +ftn: lgd rbk +qqs: dxx vnl lpt vfc +tcq: qtk jsn +nkq: knc vhq xgv fhn +pvp: tbb vdn zvc +xzt: ddn nnm +grt: szc +pdp: fgq scj hjl jlk +fhr: jgh ndn +glm: jrk +fqj: ztz jlv jgl +rmp: drk gnf +njj: tsp hzn rqm +jms: tjs qqj vln fnv +hlm: qjq txt dbr jph pvl vck +tzz: ftz csr zpk +dpc: cvh +msr: hjc xmk +xzj: vxf lhk kpx srv tng +sxd: kns bhd fnv +ksb: ntl bxg jjv zpr sbt +jtr: vrx szm tcp bcl +kfp: dsj sch sfl zlr +klr: dkr +bpg: ksk jvk qls chl tkj +hnn: ntc svg sgq lqv +pgj: bjg szb +rfj: kvm zsd clr lkn +fjb: pjx +nps: bjm mfz njk srb +vkf: vgz tqh tbb +lpz: hss ndn +jlb: pkl vln rnz lgx +zdg: jgs dgx +gnz: lvp grt +csr: trv +rtt: xrf ddn csb +fst: ffj qtj +qgj: sfq btv +bts: nhg gxz nhx dxl +fpg: scj ddn nrp +qpd: rxr gmk kmr +jsf: fbp smh htv bpd +mcs: lqf lhk +hss: xkf jgs +tlj: rmm jlg ccs xbq +hbh: xsd mgx slm xlh +bnr: krp bls pcl +sct: hnq +ccp: zrr ffx scf vnf +ffr: fdl +trg: qrr +vrt: bcl +glj: bqk lvn +pgn: xjt skn kxk gcq xbk +qkm: knb vjr glm +rnz: mzb rxb +ttt: pfm hgl tvg cqm +hjb: pdq gqk stz vjt +gqj: mzb +bgn: qhg +pbc: fvb rdt +nxh: pzd xqd czg xzl +fnx: shv gkd mgr +rpd: jcb +nsx: ctp rzj +lqv: bxg dqc +jcg: ppt +fvd: scn lgk prb blr +zmt: xsd vxk +pdg: pxk mfv gkd xvc bsp +sdl: qdt tvg jlj ntz +kvm: trg +rgr: kfl mxn +tzb: qcl fcn pcc +thb: dpf dkb dms +vjj: vhj +zxc: hhd sjh fhr rcn +ldv: ntc hpk pmq zxc lgz rxv +lrn: vdz lhk pdq qqj +kmm: vhp lnx gpm smr xtg +bgc: sxd sgs +nfq: fmt ffv qcb +vrx: srj bgx +vzj: skv hsr mfv czn +dcm: srv xkl +lfb: vvl mgx jbm plz +mzn: qcd sqz +mds: dhk fpl +bbj: kfs tkr zjf thb +qmn: fqd bct mkq cdp ftn +kpm: pfc htz +vzx: brs +pfc: vpp dqb hjp +hvs: stk xlq zhh czl +mrq: rkv +vsx: fmc sjz +bjm: mxh bzz qkm vgh zbn nck +fth: rsd bjh csr dvp rqn +lfd: gcq +mxr: csb mzn vjs +hcj: lvp nds gzm +lrr: jlt lzn +xgh: dcm lbp +rmn: lxs xlq jtz kqs +rmk: tsf +dpm: jbh zhh +mtr: zbn csn +ntf: bgn lrn +thl: hjc gkd jxv sgx rfm +hnc: hgv +hjj: vnp sfq vhg xgh jrm +fhn: vrx vpf +skn: rzv +kss: vgq fpg ghn xtk +tdq: tmg +htz: fdx vfq lhx +ctp: vhg bll +fgq: sgx sgj +cbv: sjp ztt nds gcf +kvf: xml +pfr: hvd zpr +bsp: csn +szh: ttz +ccc: dvk cqm dpf gck +ltv: gfx +rph: scj ztk nck +skz: xzl jqj vnp +khd: npr +mpd: gkv pjd drp +kgm: crx hpt fsb kvf fsq +tbg: zrz +rgq: mcj nfp kpm lcx +lqf: vgx bjg +zlp: kvk kpx lss +nck: btx +gcp: rgt jrk +pbl: ftz qxd +klq: kbg sqk sjk vhj +gbr: prd bkn +lmd: kgr pnv trg +jgb: zkn jmb +rmb: mhc lgd jbh diff --git a/src/main.rs b/src/main.rs index f52f612..a320762 100644 --- a/src/main.rs +++ b/src/main.rs @@ -26,131 +26,164 @@ )] extern crate test; pub mod util; -use std::mem::MaybeUninit; - -use umath::{generic_float::Constructors, FF64}; pub use util::prelude::*; -pub unsafe fn intersect( - p0x: f32, - p0y: f32, - v0x: f32, - v0y: f32, - p1x: f32, - p1y: f32, - v1x: f32, - v1y: f32, -) -> Option<(f32, f32)> { - let x = ((p1y - p0y) + p0x * (v0y / v0x) - p1x * (v1y / v1x)) / ((v0y / v0x) - (v1y / v1x)); - let t0 = (x - p0x) / v0x; - let t1 = (x - p1x) / v1x; - (t0 > 0. && t1 > 0.).then_some((x, p0y + t0 * v0y)) +pub struct Graph { + pub v: usize, + pub edges: Vec<(usize, usize)>, +} + +pub struct UnionFind { + p: Vec<usize>, + s: Vec<usize>, } -#[no_mangle] -pub fn p2(i: &str) -> impl Display { - let mut v: [MaybeUninit::<_>; 3] = - // SAFETY: mu likes this - unsafe { MaybeUninit::uninit().assume_init() }; - let mut x = i.as_bytes(); - for i in 0..3 { - let α = unsafe { FF64::new(読む::迄::<i64>(&mut x, b',') as f64) }; - x.skip(1); - let β = unsafe { FF64::new(読む::迄::<i64>(&mut x, b',') as f64) }; - x.skip(1); - let γ = unsafe { FF64::new(読む::迄::<i64>(&mut x, b' ') as f64) }; - x.skip(2); - let δ = unsafe { FF64::new(読む::負迄(&mut x, b',') as f64) }; - x.skip(1); - let ε = unsafe { FF64::new(読む::負迄(&mut x, b',') as f64) }; - x.skip(1); - let ζ = unsafe { FF64::new(読む::負迄(&mut x, b'\n') as f64) }; - v[i].write(([α, β, γ], [δ, ε, ζ])); +impl UnionFind { + pub fn new(size: usize) -> Self { + Self { + s: vec![1; size], + p: (0..size).collect(), + } } - let [([x0, y0, z0], [v0x, v0y, v0z]), ([x1, y1, z1], [v1x, v1y, v1z]), ([x2, y2, z2], [v3x, v3y, v3z])] = - v.map(|elem| unsafe { elem.assume_init() }); - // credit: giooschi - let z = unsafe { FF64::zero() }; - #[rustfmt::skip] - let mut coeffs = [ - [z, -v0z + v1z, v0y - v1y, z, z0 - z1, -y0 + y1, v0y * z0 - v1y * z1 - v0z * y0 + v1z * y1], - [v0z - v1z, z, -v0x + v1x, -z0 + z1, z, x0 - x1, -v0x * z0 + v1x * z1 + v0z * x0 - v1z * x1], - [-v0y + v1y, v0x - v1x, z, y0 - y1, -x0 + x1, z, v0x * y0 - v1x * y1 - v0y * x0 + v1y * x1], - [z, -v1z + v3z, v1y - v3y, z, z1 - z2, -y1 + y2, v1y * z1 - v3y * z2 - v1z * y1 + v3z * y2], - [v1z - v3z, z, -v1x + v3x, -z1 + z2, z, x1 - x2, -v1x * z1 + v3x * z2 + v1z * x1 - v3z * x2], - [-v1y + v3y, v1x - v3x, z, y1 - y2, -x1 + x2, z, v1x * y1 - v3x * y2 - v1y * x1 + v3y * x2], - ]; + fn reset(&mut self) { + self.s.fill(1); + self.p + .iter_mut() + .enumerate() + .for_each(|(idx, val)| *val = idx); + } - for i in 0..6 { - let j = (i..6) - .max_by(|&j, &k| unsafe { - FF64::cmp( - &FF64::new(coeffs[j][i].abs()), - &FF64::new(coeffs[k][i].abs()), - ) - }) - .ψ(); - unsafe { coeffs.swap_unchecked(i, j) }; - (i..7).rev().for_each(|j| coeffs[i][j] /= coeffs[i][i]); - for j in i + 1..6 { - for k in (i..7).rev() { - coeffs[j][k] -= coeffs[i][k] * coeffs[j][i]; - } + pub fn find(&mut self, key: usize) -> usize { + if self.p[key] == key { + return key; } + let parent = self.find(self.p[key]); + self.p[key] = parent; + parent } - for i in (1..6).rev() { - for j in 0..i { - coeffs[j][6] -= coeffs[j][i] * coeffs[i][6]; - coeffs[j][i] = z; + pub fn union(&mut self, a: usize, b: usize) -> bool { + let α = self.find(a); + let β = self.find(b); + if α == β { + return false; + } + let a = self.s[α]; + let b = self.s[β]; + if a >= b { + self.s[α] += b; + self.p[β] = α; + } else { + self.s[β] += a; + self.p[α] = β; } + true } - *(coeffs[0][6] + coeffs[1][6] + coeffs[2][6]) as u64 + fn group_size(&self, group: usize) -> usize { + self.s[group] + } } -pub fn p1(i: &str) -> impl Display { - let mut v: [MaybeUninit::<_>; 300] = - // SAFETY: mu likes this - unsafe { MaybeUninit::uninit().assume_init() }; - let mut x = i.as_bytes(); - for i in 0..300 { - let α = 読む::迄::<i64>(&mut x, b',') as f32; - x.skip(1); - let β = 読む::迄::<i64>(&mut x, b',') as f32; - x.skip(14); - if x.by().ψ() != b' ' { - if x.by().ψ() != b' ' { - shucks!(if x.by().ψ() != b' '); - } +/// WYRAND +unsafe fn rng() -> u64 { + static mut STATE: u64 = 0; + STATE = STATE.wrapping_add(0x60bee2bee120fc15); + let tmp = (STATE as u128).wrapping_mul(0xa3b195354a39b70d); + let m1 = (tmp >> 64) ^ tmp; + let tmp = m1.wrapping_mul(0x1b03738712fad5c9); + let m2 = ((tmp >> 64) ^ tmp) as u64; + return m2; +} + +pub fn karg(graph: &Graph) -> Option<usize> { + let mut v = graph.v; + let mut s = UnionFind::new(v); + while v > 2 { + let i = ((unsafe { rng() as u128 }.wrapping_mul(graph.edges.len() as u128)) >> 64) as u64; + let α = s.find(graph.edges[i.nat()].0); + let β = s.find(graph.edges[i.nat()].1); + if α == β { + continue; } - x.skip(2); - let δ = 読む::負迄(&mut x, b',') as f32; - x.skip(1); - let ε = 読む::負迄(&mut x, b',') as f32; - x.skip(1); - x.skip(memchr::memchr(b'\n', x).map_or(0, |x| x + 1)); - v[i].write(([α, β], [δ, ε])); + v -= 1; + s.union(α, β); } - let v = v.map(|elem| unsafe { elem.assume_init() }); - let mut sum = 0; - for (i, &([x0, y0], [v0x, v0y])) in v.iter().enumerate() { - for &([x1, y1], [v1x, v1y]) in &v[i..] { - if let Some((x, y)) = unsafe { intersect(x0, y0, v0x, v0y, x1, y1, v1x, v1y) } { - let min = 200000000000000.; - let max = 400000000000000.; - if x > min && x < max && y > min && y < max { - sum += 1; - } - } - } + + let chop = graph + .edges + .iter() + .filter(|&&(src, dest)| s.find(src) != s.find(dest)) + .count(); + + if chop == 3 { + let root = s.find(0); + let size = s.group_size(root); + return Some((graph.v - size) * size); } - sum + None +} + +fn base26([a, b, c]: [u8; 3]) -> u32 { + a.widen().widen() + b.widen().widen() * 26 + c.widen().widen() * 26 * 26 } pub fn run(i: &str) -> impl Display { - p1(i) + let mut z = 0; + let mut n = HashMap::new(); + let mut e: HashMap<u32, HashSet<u32>> = HashMap::new(); + i.行() + .map(|x| { + let (k, v) = x + .μ(':') + .mr(|x| { + x.split(|&x| x == b' ') + .map(<[u8]>::trim_ascii) + .filter(|x| !x.is_empty()) + .map(|x| base26(x.try_into().unwrap())) + .collect_vec() + }) + .ml(<[u8]>::trim_ascii) + .ml(|x| base26(x.try_into().unwrap())); + match n.entry(k) { + Entry::Occupied(_) => {} + Entry::Vacant(x) => { + x.insert(z); + z += 1; + } + } + for j in v { + match e.entry(k) { + Entry::Occupied(x) => { + x.into_mut().insert(j); + } + Entry::Vacant(x) => { + x.insert(HashSet::from_iter([j])); + } + } + match n.entry(j) { + Entry::Occupied(_) => {} + Entry::Vacant(x) => { + x.insert(z); + z += 1; + } + } + } + }) + .Θ(); + let mut edges = vec![]; + for (from, to) in e { + for to in to { + edges.push((n[&from], n[&to])); + } + } + let g = Graph { edges, v: z }; + loop { + if let Some(x) = karg(&g) { + return x; + } + } } fn main() { |