+1188
inputs/day5.txt
+1188
inputs/day5.txt
···
1
+
74889598306375-79559523144736
2
+
23847884851515-26063777298581
3
+
459936449883679-460281935061196
4
+
545695811978609-550366304549745
5
+
269527990632522-269945028746335
6
+
52542145987470-52542145987470
7
+
273110633492620-277105721993791
8
+
99226245783045-99371738264141
9
+
374951583052617-374951583052617
10
+
262023579067176-262675254937082
11
+
305591362690390-308549833234186
12
+
82652823861018-82652823861018
13
+
251950657574956-259887392284062
14
+
426017258068316-427958298472665
15
+
523534648927338-529180981385641
16
+
264959008015820-265735367299044
17
+
222376773933674-227770708606301
18
+
400512092626953-401890632610026
19
+
352311770735207-359414238172700
20
+
333688717400456-340405613250299
21
+
437019240719486-439402833548026
22
+
527092562011228-532043253244526
23
+
342398377522670-351448558631916
24
+
459284442765997-459767549156618
25
+
555666591387764-559196995081551
26
+
445635129234863-449206434197795
27
+
104742632902288-108456151380882
28
+
486936683064659-489793719367934
29
+
483401294663066-486936683064657
30
+
111131504257196-119314223294276
31
+
192217707764058-194249462841255
32
+
152542412311937-152542412311937
33
+
410195735957768-410961237535462
34
+
510864614478233-510864614478233
35
+
1725086974408-4674947171141
36
+
407943251943297-408791248752573
37
+
514768728274514-518320134249968
38
+
352311770735207-356182489432407
39
+
284156674778218-286083629847963
40
+
395362879313767-396732118247651
41
+
199280146173698-200618657181350
42
+
46260352873068-47885164713225
43
+
194514670399242-196188590161744
44
+
31845543953525-39662866201277
45
+
420816803348804-420816803348804
46
+
243459050537558-243459050537558
47
+
82652823861018-89744399134578
48
+
52542145987471-56718886376170
49
+
143074066748262-150192256362507
50
+
455946037419527-456538631967209
51
+
48362683356905-49772221084664
52
+
193309947601086-195025888420591
53
+
464377344898138-467090913854896
54
+
404992714738795-405533934296894
55
+
391336934620721-391336934620721
56
+
42870359530997-44424663926534
57
+
69239353265214-69239353265214
58
+
323286609420012-327570020897503
59
+
457368110531325-457749348540685
60
+
366177675277860-370540231905174
61
+
262675254937082-263504034398902
62
+
61596205240302-69239353265214
63
+
295720296715724-300542046913690
64
+
457368110531325-457571749135632
65
+
98704650973413-99371738264141
66
+
405533934296894-405762624506803
67
+
167134472908052-167985611468492
68
+
346606822382773-351448558631916
69
+
382529058990430-391336934620721
70
+
399437817124168-400959205952113
71
+
456538631967209-456928005074042
72
+
478828408554373-480355349773345
73
+
263242024963092-263937259638725
74
+
492809360807210-494748592737162
75
+
553971031209233-562668469713404
76
+
96611015315272-97445956091146
77
+
496710379259649-498551037908974
78
+
545695811978609-545695811978609
79
+
313811091610224-320919547902610
80
+
173868070074554-176589728790805
81
+
494045046230461-496039303951751
82
+
500203266743658-502208036779916
83
+
124139424755624-129841188406766
84
+
452932791437922-453307337989294
85
+
119314223294277-119314223294277
86
+
262023579067176-262189648814675
87
+
407943251943297-408507566260104
88
+
40499454165843-42353951060015
89
+
409063418440061-409812352602173
90
+
99952814763659-100056213702826
91
+
97867489804299-98190930500181
92
+
267798658217408-268465485882652
93
+
98903776347733-99226245783045
94
+
392265619122335-393938447521681
95
+
31845543953525-35368129711400
96
+
498956072992090-500877971484824
97
+
261456991003298-261799419139686
98
+
150192256362507-150192256362507
99
+
541992002580805-541992002580805
100
+
98903776347733-99371738264141
101
+
408507566260104-409245214597176
102
+
265315310082828-265488184749660
103
+
262023579067176-262567907546600
104
+
393302087448366-394887747369031
105
+
460281935061196-460769747344763
106
+
374951583052617-379631331873305
107
+
13449776908338-17647218540771
108
+
95951220808570-96384239222742
109
+
198192283542096-199682437936682
110
+
269126435468584-269280617538565
111
+
131683853648211-140073228721597
112
+
435205877780561-437019240719485
113
+
173868070074554-178593201312903
114
+
266233250142694-266988040203737
115
+
402974843625693-403261146828303
116
+
44749609982898-46467592204076
117
+
136309772739012-140073228721597
118
+
152542412311938-158129794518855
119
+
464377344898138-471098541087893
120
+
454493733599256-454945412013225
121
+
406975766736538-407453438188871
122
+
217373831665498-218764099619920
123
+
410075582063499-410576372509974
124
+
305591362690390-308549833234186
125
+
460769747344763-460979652114697
126
+
456928005074042-457368110531325
127
+
495490712582377-497184240370882
128
+
203353257515922-206995711218753
129
+
452662947889223-453307337989294
130
+
409245214597176-410075582063499
131
+
21281719145212-29461042500436
132
+
473824309898264-480355349773345
133
+
459630581183475-459936449883679
134
+
410961237535462-411281888012925
135
+
235064187073078-239746783395880
136
+
46970106550375-48679186185299
137
+
504627639656299-510864614478233
138
+
206995711218754-210401847604210
139
+
453512846391372-453952362230473
140
+
254876062984423-257097125130819
141
+
396379947271805-397846727638156
142
+
122506952022586-126258255019363
143
+
286083629847964-290200989953183
144
+
514768728274513-514768728274513
145
+
397364121060177-398907008750174
146
+
191186839436490-192786667703686
147
+
213618967821287-217373831665496
148
+
404839885331583-405533934296894
149
+
410576372509974-410692115085683
150
+
93620627683853-93871840848933
151
+
97445956091146-98190930500181
152
+
195774648677933-197516289194107
153
+
197055281231222-198362088431227
154
+
182720818560544-187301677330220
155
+
4674947171142-8700720898079
156
+
533834274871010-541992002580804
157
+
313811091610223-313811091610223
158
+
410961237535462-411827536271406
159
+
456720730464466-457368110531325
160
+
239746783395881-239746783395881
161
+
497774899702742-500012881001943
162
+
275245086049008-281166045317238
163
+
264959008015820-265735367299044
164
+
73050487240215-74889598306373
165
+
243459050537558-248654988639021
166
+
426017258068316-427958298472665
167
+
394481105634933-395874104406883
168
+
93150966904813-93620627683853
169
+
455313396927797-455850586073077
170
+
162707238999678-167985611468492
171
+
13449776908338-17647218540771
172
+
182720818560544-187301677330220
173
+
398429972215735-399914592704971
174
+
407680028035540-408507566260104
175
+
335524852113386-337312412933214
176
+
264959008015820-265488184749660
177
+
95951220808570-96384239222742
178
+
261799419139686-262567907546600
179
+
92132565696665-92283993119003
180
+
327570020897505-331097913750044
181
+
415055259717418-420816803348803
182
+
41463756158179-43315740257493
183
+
456720730464466-457571749135632
184
+
455850586073077-456181678272920
185
+
43619628533047-45384139349382
186
+
362380049910825-367267049622454
187
+
458502597573756-459117229622451
188
+
189
+
267703200553763
190
+
314245513301228
191
+
476669940887631
192
+
68686981025899
193
+
288791850269680
194
+
281914876554026
195
+
486761581187065
196
+
333997925976156
197
+
537586117345062
198
+
112907923188286
199
+
166812428559392
200
+
284004949332581
201
+
562115670229032
202
+
549026638282552
203
+
437576476020553
204
+
14566907141898
205
+
46708181890450
206
+
62313440981967
207
+
127778677675833
208
+
330504750042287
209
+
510633366982448
210
+
541159770543027
211
+
132463454639608
212
+
408048385933909
213
+
19534901703219
214
+
167114919798553
215
+
278527915757402
216
+
102815478610376
217
+
150266176348267
218
+
530354406858497
219
+
453042756287736
220
+
48887154128461
221
+
365344811369461
222
+
12126751275995
223
+
123993004151835
224
+
344629680425481
225
+
550899643954680
226
+
146340981547307
227
+
454786973542684
228
+
501010736140301
229
+
289056969634721
230
+
397587872146276
231
+
2174113488242
232
+
208667122296511
233
+
182888350269357
234
+
470017389043963
235
+
174518916295537
236
+
214552545899840
237
+
262782697922098
238
+
134788867765933
239
+
367085974260636
240
+
554409438853802
241
+
420948933837777
242
+
455522571390322
243
+
124831505380245
244
+
155740997113385
245
+
274010224305989
246
+
83370536371642
247
+
543572315919977
248
+
329052723048827
249
+
518139367819196
250
+
462416272445712
251
+
332345131870882
252
+
393186021434820
253
+
419671803355776
254
+
115382824273406
255
+
470282020510768
256
+
185141420454036
257
+
42734359180863
258
+
167282907500231
259
+
73353898280494
260
+
6648095822369
261
+
32048561201262
262
+
288434047549766
263
+
480181909326150
264
+
146913110778668
265
+
515426427788552
266
+
284388591874454
267
+
447956707600792
268
+
89252787353972
269
+
96558814797775
270
+
62878896205573
271
+
326202594058535
272
+
426098559981298
273
+
219695052754663
274
+
390765585983920
275
+
549378613500346
276
+
70263847891740
277
+
517008251309114
278
+
328392291885067
279
+
562518908022957
280
+
420587076835439
281
+
275191197082879
282
+
325767490265087
283
+
392508621207176
284
+
85541093459
285
+
501070386333897
286
+
161353190070398
287
+
448958147870071
288
+
185720958343758
289
+
559038391297690
290
+
328146398661322
291
+
126854650446469
292
+
153427740939119
293
+
386359655344879
294
+
349262115858680
295
+
87721260957105
296
+
439177663744208
297
+
326923812493117
298
+
236648510210453
299
+
203584285187206
300
+
101624973720898
301
+
139686835596394
302
+
385642194351273
303
+
355771581327109
304
+
507031725620620
305
+
524495752783631
306
+
183099410056715
307
+
84666652432595
308
+
351111847252926
309
+
262147501693130
310
+
164427427374203
311
+
385281049138642
312
+
289597306490642
313
+
76340021958996
314
+
257435260207122
315
+
430582357248138
316
+
509982781152513
317
+
277279155207789
318
+
346236778269562
319
+
132684349312958
320
+
183934240303173
321
+
145081289643067
322
+
132132700045925
323
+
5627230448821
324
+
48473306319385
325
+
381141606675121
326
+
420214692698453
327
+
214698997495007
328
+
323592366982384
329
+
168732626366616
330
+
439425803820215
331
+
63544202540563
332
+
138242089047145
333
+
375811194676740
334
+
559140756424209
335
+
101185865779466
336
+
117258746004261
337
+
115284002169991
338
+
365179366412947
339
+
409031671045823
340
+
448091877001324
341
+
557347354586119
342
+
476950836524672
343
+
276154040742885
344
+
455402167884596
345
+
392634529426562
346
+
52549162117863
347
+
139303835304998
348
+
376761760358087
349
+
79314432493330
350
+
393942914626979
351
+
416955689060131
352
+
343218174705566
353
+
380739544437102
354
+
104891885244850
355
+
401670250654630
356
+
88458875946998
357
+
298440458431810
358
+
279287931153785
359
+
489659112268894
360
+
389525783453513
361
+
167889475738004
362
+
410476752564180
363
+
531188923681915
364
+
496070313575527
365
+
148844162663222
366
+
375565285223057
367
+
454869552496741
368
+
16079160074520
369
+
529141968466117
370
+
456309789996017
371
+
355982125422812
372
+
77665783303807
373
+
255415068574128
374
+
419645033859422
375
+
535899565802189
376
+
427026443808551
377
+
304886104235610
378
+
63813191429013
379
+
337592273757387
380
+
316191629977335
381
+
427932266762721
382
+
275051062030262
383
+
287389427660196
384
+
85342152945868
385
+
25120229452331
386
+
207959510733908
387
+
526251060504047
388
+
539965694955807
389
+
137117157822118
390
+
550219108879217
391
+
74742361465476
392
+
446933750202615
393
+
472645873461808
394
+
531905907514767
395
+
527634360277461
396
+
226525561218664
397
+
5513011599653
398
+
319497976104713
399
+
162104761227436
400
+
324339976537342
401
+
395254176289838
402
+
160885730404142
403
+
116775894531633
404
+
548355761034347
405
+
77883725691152
406
+
509378022740168
407
+
143110701934829
408
+
248400739956879
409
+
252816632851765
410
+
124248090164812
411
+
273043580096539
412
+
77248846910575
413
+
108095175460213
414
+
200419577876467
415
+
455439545179548
416
+
255143892965194
417
+
79337431949450
418
+
499486550932403
419
+
151920401525733
420
+
246347931210030
421
+
398264348868158
422
+
356921403632712
423
+
416976978713778
424
+
62550101642256
425
+
539162094904846
426
+
241300223504305
427
+
371234617293083
428
+
377480005378126
429
+
256728882359867
430
+
473817607951163
431
+
404805849509856
432
+
255589957262174
433
+
536003397737518
434
+
409504280780088
435
+
462604266879479
436
+
455610146686064
437
+
139022013893693
438
+
541640250917889
439
+
34135586860392
440
+
528884695574852
441
+
448466312091769
442
+
26127983295753
443
+
158632248635959
444
+
540362092137539
445
+
166361533681704
446
+
347986482489603
447
+
511380069678311
448
+
262607239672299
449
+
456154003553896
450
+
102886612270602
451
+
298852335978173
452
+
397987908749462
453
+
226618499080577
454
+
460049908642141
455
+
174148765268093
456
+
277248892168313
457
+
206195430127836
458
+
346220042130757
459
+
377427157138049
460
+
293683918180939
461
+
510607102677907
462
+
121887407146502
463
+
371302495035340
464
+
192159441360045
465
+
432710956811031
466
+
397908280539056
467
+
521437239297124
468
+
545963436163520
469
+
515805480403501
470
+
206647433890373
471
+
477935784578574
472
+
384122562791212
473
+
237504309474062
474
+
239387803646296
475
+
385616465642634
476
+
121347156729217
477
+
501205030915983
478
+
4164713007124
479
+
144278073591748
480
+
476803224950481
481
+
191571866883374
482
+
197642063769214
483
+
217708004782296
484
+
301280748245662
485
+
79073881133065
486
+
119107650596178
487
+
335138707204953
488
+
452784722707600
489
+
337506667457484
490
+
113724494802352
491
+
254858332488566
492
+
387683614033850
493
+
426292386956773
494
+
214463745624483
495
+
299540905586858
496
+
350550197742116
497
+
536405029293329
498
+
494775402599482
499
+
2582560119292
500
+
89877881326870
501
+
400097828536482
502
+
184830838090784
503
+
176336002630858
504
+
67461897507623
505
+
478995461021135
506
+
66212052730031
507
+
328039865962058
508
+
326092476168529
509
+
25274780856063
510
+
352789983272670
511
+
276431320475127
512
+
133999347173556
513
+
111279717488096
514
+
343266002684336
515
+
474028558955039
516
+
174619394455543
517
+
162732324430877
518
+
113448726562399
519
+
259456334175541
520
+
537017932790511
521
+
256853952618920
522
+
150111292636639
523
+
277526884477793
524
+
510559701678610
525
+
249878769050331
526
+
385842702926764
527
+
15186474043730
528
+
156884477804410
529
+
275247335709306
530
+
416740982448921
531
+
300462543096595
532
+
278531216467315
533
+
16332494626990
534
+
282875090733536
535
+
5872643715074
536
+
300042207849628
537
+
456104839840493
538
+
287174965481715
539
+
207117476286466
540
+
394987711786195
541
+
400207956239096
542
+
387260891911120
543
+
524592377138341
544
+
415784639512725
545
+
410596586356053
546
+
248405579939633
547
+
338855127817907
548
+
146033129177226
549
+
517742414815392
550
+
471230574297887
551
+
546712543433971
552
+
538391752986732
553
+
186906067746185
554
+
22509342552195
555
+
85625730211494
556
+
538910150773912
557
+
132420618246240
558
+
284414081405754
559
+
255891448972987
560
+
196857919027085
561
+
138738791817002
562
+
485493440771638
563
+
147747408894904
564
+
33245855503122
565
+
421102519976991
566
+
108184025390613
567
+
131789306489093
568
+
343148913656154
569
+
314062251052588
570
+
23891222108866
571
+
294396601766718
572
+
136961347844318
573
+
385797126658710
574
+
36852707675320
575
+
155408024053040
576
+
562391020571128
577
+
318250946457455
578
+
484794697907639
579
+
269127810495416
580
+
24673202576945
581
+
401486731731305
582
+
166990997418947
583
+
48645416709342
584
+
240560106665056
585
+
407276162339995
586
+
242965253828537
587
+
176797321556635
588
+
208847827219988
589
+
135565798765472
590
+
326859246103528
591
+
135198931577480
592
+
410885360168920
593
+
555348188358315
594
+
64233815465165
595
+
307676899028702
596
+
168160314639706
597
+
113660045194141
598
+
3128220114794
599
+
420257558459001
600
+
395295630150417
601
+
454636247945816
602
+
3912100568058
603
+
494987442103801
604
+
335326780570776
605
+
75802547174538
606
+
378193105275106
607
+
138945925852743
608
+
384233285798074
609
+
400365114660432
610
+
65737092191342
611
+
286757515297424
612
+
232114444758437
613
+
289104482288261
614
+
223453260053196
615
+
506228647097813
616
+
559481202416651
617
+
137336699186386
618
+
380487096861383
619
+
118245803037563
620
+
122415671398605
621
+
395932516015848
622
+
167790904763894
623
+
65069567652510
624
+
315128784107527
625
+
67125705937428
626
+
103603394318896
627
+
35385192134369
628
+
530173165429241
629
+
61725685300127
630
+
322602007668223
631
+
439387247925334
632
+
503418099642988
633
+
484067158942713
634
+
531849439905068
635
+
224459007739261
636
+
24378087402780
637
+
2090476358503
638
+
383461739326334
639
+
476060700905306
640
+
505276675340888
641
+
236031974956105
642
+
377951917531087
643
+
305903237010845
644
+
334278173181544
645
+
96194049575420
646
+
107191325459762
647
+
257553430116094
648
+
184960433166364
649
+
128404000675271
650
+
54087565604499
651
+
296324196697139
652
+
485118648856374
653
+
407718809040549
654
+
114039487816787
655
+
409597366793132
656
+
405161536291390
657
+
475151482301763
658
+
185757824602754
659
+
527831890043980
660
+
508515681994562
661
+
302259042109687
662
+
479888176285502
663
+
37430750914659
664
+
495167532286372
665
+
2245085885737
666
+
191980106108419
667
+
106185415623900
668
+
90785673324634
669
+
385723748232181
670
+
377401924893285
671
+
370806548023962
672
+
328904038345546
673
+
289101637320534
674
+
48387659479037
675
+
438413210453605
676
+
138031258795004
677
+
36848011421152
678
+
251975389894768
679
+
430485690000143
680
+
370022736362871
681
+
54325220063190
682
+
93315079111354
683
+
234792194674992
684
+
299181675379516
685
+
199867118084202
686
+
447200493402353
687
+
55093856317585
688
+
455429252586707
689
+
13982586844900
690
+
81913111360659
691
+
287572871184619
692
+
506866685578822
693
+
247684641487649
694
+
417035324377295
695
+
338068029231776
696
+
185739412688546
697
+
558172813082916
698
+
241288155016777
699
+
286910058459724
700
+
86362733475456
701
+
135487703859586
702
+
549534590875975
703
+
252344411558105
704
+
251457584553746
705
+
109015390838264
706
+
398033365679282
707
+
369972994863616
708
+
390451769918555
709
+
266647736384980
710
+
385957200620673
711
+
543364449059874
712
+
454726294169283
713
+
13913836326415
714
+
226211403507929
715
+
224941477401670
716
+
456832903203951
717
+
191797765138125
718
+
524061239673962
719
+
375982974685691
720
+
536150717345034
721
+
293616346522039
722
+
126501835719822
723
+
279884390123033
724
+
350827911840968
725
+
557928976098849
726
+
341417081837800
727
+
284436254344417
728
+
479366194607605
729
+
163235426756573
730
+
314272700526518
731
+
205048888497471
732
+
256187819498826
733
+
546762427419358
734
+
487593130608709
735
+
363195648042915
736
+
531786619046694
737
+
357724622349762
738
+
505159674786341
739
+
386031269423540
740
+
167135877727039
741
+
148805569159387
742
+
66651488174771
743
+
348938161012725
744
+
78798843584284
745
+
177370666445446
746
+
253022239408246
747
+
516459668991453
748
+
95954548928192
749
+
138731604119786
750
+
242916105575718
751
+
509267655662974
752
+
164008930892787
753
+
106317666384571
754
+
409990481363994
755
+
154290711081875
756
+
201821843876119
757
+
88332126514130
758
+
237295909029197
759
+
467793554347828
760
+
45462740864705
761
+
268342166705726
762
+
529361112647572
763
+
36811532703769
764
+
552473505016593
765
+
397401572712223
766
+
206517687660965
767
+
34739741517387
768
+
485853082904292
769
+
329515805678682
770
+
250068097201362
771
+
5811305089566
772
+
60724160854507
773
+
186356501715046
774
+
42837916522207
775
+
555239978784550
776
+
47823342086949
777
+
320101501978074
778
+
43822102671002
779
+
521057735127340
780
+
108850874680057
781
+
522590519745349
782
+
524831363124357
783
+
253262685355816
784
+
449003256981423
785
+
41701122847104
786
+
269402097973798
787
+
541460349412143
788
+
509958043383506
789
+
7492668588823
790
+
90419359720951
791
+
196346261986016
792
+
208655722081067
793
+
554810298887769
794
+
513936709731233
795
+
181884588463345
796
+
541323800446004
797
+
362502397813743
798
+
338532779807647
799
+
393781827440381
800
+
484231163934835
801
+
37368887642636
802
+
558795326921854
803
+
552195424786532
804
+
487686086722100
805
+
134352870412141
806
+
10548867200531
807
+
60122626473134
808
+
3489391142590
809
+
216173153241746
810
+
214521290960992
811
+
44663209553865
812
+
496592595794476
813
+
417402679166151
814
+
389296175879080
815
+
73443182146421
816
+
484184471167513
817
+
87648380690651
818
+
76411099990958
819
+
376672915838595
820
+
416662481674533
821
+
418842094034787
822
+
177174243842776
823
+
360917121735286
824
+
37441255895228
825
+
264108716674645
826
+
299362787720432
827
+
505099464111505
828
+
364159003514922
829
+
413516151514861
830
+
548892821365930
831
+
327323809169901
832
+
53168968429945
833
+
210203102429476
834
+
105658860188691
835
+
508939674970622
836
+
245680776161395
837
+
288072594863946
838
+
546066920142152
839
+
408984495717515
840
+
88204503487301
841
+
420219365055917
842
+
437310420649854
843
+
84872120349774
844
+
194751885779582
845
+
208701305452937
846
+
351563087499086
847
+
450129679644429
848
+
148666187688590
849
+
239236123519534
850
+
113251449388132
851
+
446206949516497
852
+
246000641386074
853
+
252689833153796
854
+
435334860574873
855
+
341717773220089
856
+
64549016645535
857
+
213699870249320
858
+
298451558239307
859
+
185278005691907
860
+
8134577132657
861
+
261966279442499
862
+
315840584607737
863
+
353094021415400
864
+
330463604552237
865
+
396511234431585
866
+
351811096797895
867
+
24116628523626
868
+
327266253863210
869
+
524772929314460
870
+
286262429143047
871
+
112044214186910
872
+
497421176479944
873
+
209963628211988
874
+
364921149568555
875
+
222616259826373
876
+
167494081960892
877
+
499698833223075
878
+
380451940256767
879
+
376298943098954
880
+
208462778895259
881
+
257822644313233
882
+
458960916901113
883
+
500268391272039
884
+
138998774243410
885
+
286056250666152
886
+
14226665041036
887
+
554490653927807
888
+
205493591904944
889
+
311093374336015
890
+
136566800754788
891
+
218133725663833
892
+
274814661165851
893
+
534750291151638
894
+
214709273517981
895
+
79281401204290
896
+
224764905953198
897
+
322817916117121
898
+
548877324865482
899
+
206660505085085
900
+
495570162464287
901
+
537221325061609
902
+
277228017007164
903
+
509785550628771
904
+
79038292162381
905
+
149362868524492
906
+
50267611008838
907
+
117076334817031
908
+
396942178239874
909
+
483805769198573
910
+
110075887030993
911
+
398662759960312
912
+
513825778885855
913
+
372385946611796
914
+
126762615156838
915
+
501602330801394
916
+
148063225053668
917
+
427379720548000
918
+
538338046892758
919
+
286349639477622
920
+
517525189535154
921
+
323949348355715
922
+
485239694769451
923
+
66347360844789
924
+
75709762798959
925
+
286275492542680
926
+
466563938524428
927
+
491060402282968
928
+
114180510960550
929
+
24220681424443
930
+
401529619714595
931
+
350999068436663
932
+
73666255044195
933
+
315283280221678
934
+
486567916582595
935
+
386988771968788
936
+
547091287233054
937
+
199251969596551
938
+
262367207773360
939
+
147700215775683
940
+
323559607834129
941
+
343865160780162
942
+
352839210417144
943
+
286789170597857
944
+
144046104082154
945
+
297615167536211
946
+
204569901882174
947
+
244464598977365
948
+
440172658100605
949
+
49393055561078
950
+
440441952930071
951
+
62529050272603
952
+
213465906163506
953
+
431116933276249
954
+
388099250625889
955
+
440313935879579
956
+
485454470084470
957
+
515122155140488
958
+
352527058113869
959
+
539626852470189
960
+
308549434850357
961
+
271630505884632
962
+
79091553688646
963
+
204467863152245
964
+
507389383841226
965
+
150081616230541
966
+
48614681735400
967
+
38494761645721
968
+
400962294931237
969
+
196541694588791
970
+
509404781754297
971
+
22613353976910
972
+
359141441034099
973
+
347125970907508
974
+
88112667765826
975
+
375234617586179
976
+
541561456822743
977
+
43487805824682
978
+
245580139924720
979
+
61925346936953
980
+
524104340406426
981
+
257313383539798
982
+
257467918677062
983
+
118564317819358
984
+
392750785087973
985
+
263279929238613
986
+
266743143547903
987
+
28887057819205
988
+
560448405152026
989
+
475670452878736
990
+
68976100885144
991
+
119371715353960
992
+
416764485629505
993
+
117454786396455
994
+
28107867060982
995
+
181617471419198
996
+
324286432815230
997
+
376470658175284
998
+
554862101454165
999
+
528158502920611
1000
+
281947519810737
1001
+
502628687780946
1002
+
554328274194757
1003
+
427533335712174
1004
+
15753321044802
1005
+
396204966666336
1006
+
165759879810321
1007
+
483836196305874
1008
+
236642041182378
1009
+
28707001290911
1010
+
453941000159908
1011
+
239378018801579
1012
+
295395596552203
1013
+
129744526281154
1014
+
509996132214665
1015
+
18817467919836
1016
+
69011914271435
1017
+
528770649907953
1018
+
464924927383704
1019
+
111167850070594
1020
+
499398260633297
1021
+
203338517303186
1022
+
271121505006292
1023
+
530430854732561
1024
+
253618104548448
1025
+
367185126207437
1026
+
275919660389158
1027
+
87873304408612
1028
+
543450629096424
1029
+
335477470153767
1030
+
531185565092995
1031
+
353467590596917
1032
+
539558595034365
1033
+
225598648475121
1034
+
4266598824125
1035
+
191304659850847
1036
+
453551208518017
1037
+
357295063001348
1038
+
263186304559599
1039
+
300999306013676
1040
+
77019074405259
1041
+
226263109115314
1042
+
248493294223107
1043
+
76051058021610
1044
+
281446420791413
1045
+
165573379200741
1046
+
208551587249223
1047
+
167271839095269
1048
+
383400878284206
1049
+
298337501656080
1050
+
124172939953146
1051
+
555516114071984
1052
+
495886062434862
1053
+
370105294988027
1054
+
117518571341234
1055
+
535396467789758
1056
+
462531694761674
1057
+
501182977540792
1058
+
204496381162149
1059
+
25969155651589
1060
+
467727993347850
1061
+
353565855652763
1062
+
107307789527891
1063
+
191835803404538
1064
+
436143175338541
1065
+
246324312888904
1066
+
27569427736847
1067
+
26574523143644
1068
+
139788807089135
1069
+
176401248007787
1070
+
224258345415143
1071
+
528751806467589
1072
+
452711776828434
1073
+
3422299653756
1074
+
155986186068180
1075
+
410378589362967
1076
+
415145311387608
1077
+
179958057198998
1078
+
267710841876153
1079
+
496649721067563
1080
+
6017796745068
1081
+
298191870572960
1082
+
393165757002946
1083
+
65769991202474
1084
+
253237962273185
1085
+
209146854330194
1086
+
107757689277939
1087
+
443902289475155
1088
+
327302234127556
1089
+
379337635400148
1090
+
122249492301373
1091
+
517281519310874
1092
+
408584526628391
1093
+
453273285660630
1094
+
115058082240098
1095
+
265469790821220
1096
+
198447908303968
1097
+
93868274574192
1098
+
503279938554547
1099
+
268867654076452
1100
+
453784106826062
1101
+
175503260355149
1102
+
84101857588793
1103
+
324115653720005
1104
+
467419147023362
1105
+
51418409329448
1106
+
72864581581592
1107
+
104393802122250
1108
+
160012575558600
1109
+
338831657068830
1110
+
357455127413667
1111
+
143756694868069
1112
+
215217688048563
1113
+
537027874668719
1114
+
73932131117673
1115
+
74181200853882
1116
+
554540963128042
1117
+
486317747175726
1118
+
127243450453974
1119
+
204813394215205
1120
+
507073368512394
1121
+
113200659469356
1122
+
166888784896861
1123
+
253884791723332
1124
+
313515157965308
1125
+
326221984355446
1126
+
436287539073725
1127
+
560950751003125
1128
+
416839043124797
1129
+
124348810428443
1130
+
274103286464266
1131
+
118685215448145
1132
+
548999961779691
1133
+
457117834790631
1134
+
167566351250786
1135
+
363140782790450
1136
+
291713213362971
1137
+
102909906319888
1138
+
507891379594132
1139
+
524090581833788
1140
+
431695964171760
1141
+
528260720020178
1142
+
215538497228820
1143
+
265015077579563
1144
+
339652161321033
1145
+
516261525562674
1146
+
437570091922631
1147
+
490514737665222
1148
+
39629294184591
1149
+
132080844454118
1150
+
87126816519167
1151
+
357542868502579
1152
+
83614098374336
1153
+
556110799346171
1154
+
547616707073349
1155
+
47428347578027
1156
+
339955543030250
1157
+
466654836920333
1158
+
540612031208814
1159
+
75068256263748
1160
+
253332988043717
1161
+
516559830977242
1162
+
103091334549787
1163
+
1857237753590
1164
+
48231689767618
1165
+
460056775695850
1166
+
505801010046218
1167
+
476826442637823
1168
+
506362177553486
1169
+
143364931880380
1170
+
276066489933080
1171
+
338528060828864
1172
+
464816954524112
1173
+
469791767111983
1174
+
455523496219358
1175
+
297177825168277
1176
+
546323555093840
1177
+
176252665665347
1178
+
185104463289193
1179
+
535349486532929
1180
+
393353469154641
1181
+
63080739338750
1182
+
297406102825472
1183
+
248597051099131
1184
+
441114193997943
1185
+
448757303674787
1186
+
78008363064472
1187
+
471216568470612
1188
+
506677522986754
+11
inputs/day5test.txt
+11
inputs/day5test.txt
+5
inputs/day6.txt
+5
inputs/day6.txt
···
1
+
49 9493 847 816 6 7131 86 51 323 87 9 71 1789 356 163 7 94 88 3751 314 916 1 42 57 1 234 6 734 762 92 74 18 1 17 417 16 53 733 691 735 141 2584 32 42 42 86 53 6657 812 64 261 583 39 44 325 36 413 77 6792 99 478 68 88 654 134 9 834 7516 2457 9 86 793 974 871 4 646 345 45 465 988 74 1 58 73 2 83 617 5144 66 71 37 85 53 44 2474 314 3 558 3 5636 32 93 86 68 3 3 79 8 1 49 3 22 171 76 56 45 12 9 858 27 494 816 98 71 289 98 244 9326 75 6 4 6 64 66 492 385 4 6219 6 19 6 25 4169 383 58 46 65 276 33 5839 569 79 74 6526 98 85 996 587 46 133 17 92 86 3737 473 455 552 5 953 11 93 84 873 342 72 693 69 5318 96 24 9173 4414 73 5 82 927 2 84 28 9 67 7 63 42 971 735 2 731 48 529 741 71 99 65 784 135 84 77 83 349 428 41 635 78 44 5 319 4 262 9 548 788 294 94 5966 6 366 1925 19 76 83 237 462 3275 2 35 1331 4 75 34 69 64 455 781 26 5439 68 65 379 14 56 87 79 32 55 353 813 9974 283 64 6 64 1876 47 9 17 14 17 86 9 927 6 53 534 277 7426 8534 2 176 57 52 41 39 66 465 7 56 55 9444 93 751 51 9931 253 792 698 49 98 35 17 129 45 2145 5 29 7 31 515 237 62 36 39 7 473 212 41 73 254 94 7151 64 93 29 5 868 3 5 62 8 913 16 8 13 9 86 49 5 78 57 98 7 35 9 45 34 5 41 49 18 64 347 439 9 72 99 83 922 37 945 6938 26 35 563 37 8 7243 819 2 181 77 51 7598 82 3 986 93 496 91 77 92 6757 32 21 868 6 21 9 15 2244 396 44 827 383 91 92 949 89 12 6 8765 624 4125 6995 85 5 59 76 211 29 25 96 85 8683 77 8 72 33 2789 368 265 8943 5394 7 8 136 19 9929 75 61 491 43 781 914 36 1284 32 3 18 235 589 386 4273 91 7 55 643 8 26 72 9 1 5 94 66 5 5 283 4 61 47 347 8 96 938 2926 2 47 8 64 648 215 28 5464 6 8 8 666 9 541 9315 47 5 45 782 61 141 124 571 99 33 26 8 625 5 8 57 5 844 14 93 5853 11 87 897 9367 82 17 143 5 84 2 24 93 929 21 18 3 379 78 2 464 3 871 815 46 297 91 9 1164 14 95 424 2 19 874 9695 11 715 512 281 58 598 3615 9 94 993 66 16 2 2 17 331 63 916 172 24 3 4423 78 8 48 252 835 21 4876 74 369 4 961 94 35 198 58 6 91 9498 13 4 748 89 448 192 548 589 85 38 8 45 85 612 65 21 55 626 45 251 347 2573 74 21 43 8 361 966 1391 81 18 29 61 1 2 46 59 898 3121 972 6257 484 15 926 37 7 697 7143 1 38 81 351 98 45 462 3193 822 49 82 6 331 52 84 674 51 1376 4 15 76 7 845 69 461 994 2568 643 7 916 691 3162 8 57 85 59 22 8 86 715 28 4 86 41 43 666 9 731 713 9452 27 98 858 434 3268 42 7 847 84 8 79 59 825 56 59 88 32 526 29 5 6749 9 945 82 9 95 7 61 66 2988 67 14 53 73 736 841 538 768 816 538 66 8 11 24 876 4 76 87 57 244 51 6 43 776 9 5 67 69 9 235 23 924 952 42 3273 1341 5 53 1599 46 53 64 86 73 459 146 363 466 4 9 777 1 17 958 885 123 93 8 84 64 46 8378 272 917 99 1 2355 1 978 11 16 9223 3 93 656 3234 26 89 3 1711 281 795 832 62 44 81 413 49 59 8 81 98 286 63 7 47 32 333 1 29 1543 81 465 18 582 7 2 33 398 7 632 6 75 8634 97 54 287 27 41 5 829 19 37 34 18 47 74 37 79 95 4 34 682 5357 48 818 166 41 1 122 58 982 2 75 25 776 446 1 97 91 57 294 79 49 49 14 35 28 58 57 1 15 96 268 5 8 16 97 24 62 84 6382 565 62 7 31 56 95 45 51 19 77 8 55 239 9 2 2 37 51 91 12 68 78 9437 78 3 33 22 3 9 92 2751 7462 6 5298 85 7495 796 8 76 36 921 2 45 195 44 288 42 784 17 24 8 894 619 2276 4 8849 572 19 33 4 165 27 67 519 3365 8 18 35 7 9342 4 74 25 15 6878 5 8 46 26 114 87 83 73 2 45 99 593 6 68 788 3464 815 5325 5 7279 98 47 24 97 92 7339 6 72 44 924 6 1 22 871 69 9 45 923 868 499 9 4 34 92 8 233 479 24 52
2
+
83 9643 262 113 91 3284 778 71 966 43 91 33 7759 156 265 25 54 79 4869 691 537 57 9341 35 25 242 2 269 956 118 27 23 1 82 698 15 15 652 1446 367 776 6562 54 19 98 89 25 8683 767 29 553 626 65 39 436 53 615 81 2956 44 546 547 55 4511 555 687 915 6713 6749 27 431 245 24 935 99 783 629 17 626 674 11 38 999 44 22 81 196 7938 51 55 54 46 84 83 7591 553 9 199 4 5294 75 68 93 15 61 28 582 78 95 81 5 46 91 67 71 87 96 67 383 88 731 471 33 59 766 38 927 5321 26 2 2 2 75 57 825 529 887 8711 66 73 8 85 1268 534 24 97 44 954 39 571 541 26 49 845 85 34 869 479 69 717 26 78 31 665 668 558 94 95 317 11 39 13 249 675 74 278 65 12 85 41 321 4787 91 2 34 611 42 71 24 892 38 5 36 69 579 872 19 288 88 874 113 79 87 78 831 568 27 21 58 621 435 39 534 55 16 91 112 5 984 346 182 642 877 155 7673 18 523 494 61 23 96 925 437 8675 655 7658 8946 57 77 934 21 26 882 331 98 3858 691 91 587 621 3591 445 69 45 77 871 882 6713 942 43 56 88 5784 21 82 5183 95 12 72 869 162 22 55 698 72 261 7696 38 155 1 74 34 88 53 63 5 99 937 1834 616 943 372 326 885 344 951 136 41 93 16 774 74 893 8 25 46 166 667 358 61 328 292 16 719 599 23 63 958 22 1136 652 28 36 6 941 88 1 87 52 785 51 14 76 2 324 46 21 98 12 312 75 28 2 696 47 4 53 77 62 56 569 354 6 81 11 62 276 5 125 7492 36 63 232 33 22 6868 446 41 19 74 3464 6226 723 9 2989 32 2561 98 96 835 5984 53 67 636 74 466 74 18 3835 997 65 122 74 66 8554 583 93 599 98 9284 871 4862 4159 43 44 25 31 796 98 35 191 21 9238 41 37 27 23 6245 132 933 7352 3527 5 727 89 15 2218 534 99 953 54 192 755 84 9455 34 55 68 744 984 473 285 26 7 83 664 44 71 1353 72 85 82 98 26 74 3 223 57 58 232 288 9 99 72 773 928 65 3 98 432 1121 24 6275 57 779 44 818 65 99 9413 66 9 47 568 19 386 654 796 86 57 58 27 364 642 2 59 416 496 47 61 1419 76 64 284 5426 27 23 547 25 488 72 97 2183 221 59 14 7 788 76 45 854 283 58 252 33 446 884 85 7287 18 85 886 3 93 79 9117 73 692 794 977 67 739 6671 784 657 899 4 32 63 757 47 911 48 329 634 77 12 6878 5868 58 483 719 17 31 2296 68 84 54 673 41 385 883 33 6 54 82 994 63 876 569 481 753 896 985 11 76 29 84 93 991 234 94 88 915 59 8889 298 5969 49 837 89 72 739 235 568 227 91 89 36 82 45 23 93 296 6225 143 885 446 946 238 81 6 215 8857 1 76 12 21 58 77 19 4193 782 81 74 48 342 6 46 661 85 3698 5 71 33 44 93 264 132 258 7798 451 5 757 881 2545 1 97 94 497 427 35 24 667 723 57 33 19 26 319 24 651 39 5255 9689 56 5239 789 5533 78 41 573 82 46 176 46 746 862 56 82 51 143 44 15 8641 9 635 66 68 235 4 47 19 5863 98 37 29 92 6863 953 293 481 312 639 97 8 95 75 881 35 82 52 842 582 42 52 94 231 32 7 47 12 99 12 79 256 614 2 5231 4367 8 225 5843 79 18 98 47 38 786 322 452 139 6 8 521 6 22 637 364 196 21 5 523 84 635 7486 316 197 72 865 8186 89 344 92 98 7982 87 96 622 7772 74 48 55 226 177 433 823 8679 16 774 328 29 354 7 67 261 899 5478 88 665 96 236 431 2 8555 139 629 31 787 7 44 54 775 4474 739 78 96 455 83 68 343 99 7 58 388 65 18 9 52 76 12 77 691 41 5 42 278 1391 85 343 233 29 22 531 134 779 19 4 18 161 259 676 64 271 42 544 741 52 61 632 28 154 65 325 18 41 75 414 31 8 519 79 42 957 27 5192 917 77 94 86 61 53 97 81 78 42 36 55 82 89 34 7542 57 34 62 65 44 47 1455 14 79 2 82 22 1 97 1432 515 2 8486 46 5644 556 67 71 962 674 67 58 231 13 794 27 439 69 25 4 456 415 297 69 4251 83 25 88 3 973 959 16 943 1289 39 66 39 93 777 768 511 847 6 3859 1 23 85 411 326 56 43 78 95 31 215 881 69 76 468 1663 424 642 14 177 64 46 78 42 29 9132 3 81 2 629 19 4 95 676 87 8 46 679 18 767 17 74 52 666 9 851 516 26 36
3
+
16 959 5389 422 48 7167 663 8 722 14 26 85 8579 924 6241 48 31 94 1794 54 693 67 5158 5 14 428 5 56 924 251 31 99 4 13 925 769 7 693 4785 993 73 279 25 28 189 962 56 7533 748 48 299 752 44 89 272 32 41 56 5597 48 89 753 67 7348 28 664 927 918 1 7578 1553 316 89 973 762 24 61 31 361 198 77 92 525 4 48 41 729 8579 72 95 2974 83 9 622 8773 62 54 925 28 4544 128 62 74 5 976 79 785 932 36 41 8 54 3 64 6 57 46 58 868 49 91 457 7 22 122 21 429 782 4796 55 87 37 79 779 673 331 841 2286 39 32 95 18 5696 46 5781 68 39 865 59 26 975 29 11 85 94 81 381 71 63 722 37 295 36 969 62 321 27 48 33 55 94 1 335 695 21 8 98 38 34 28 21 9987 86 748 38 825 27 22 86 166 9 39 36 14 531 596 71 23 23 21 894 91 77 83 398 172 8 21 435 87 481 46 25 85 5545 57 489 43 535 582 883 447 95 548 2325 43 763 129 67 36 2 132 369 175 267 7141 69 166 1 9526 85 55 536 94 19 9144 377 7 838 788 1552 818 67 52 23 52 12 3535 43 78 725 84 7563 2 276 8861 17 777 198 2817 545 79 19 9965 37 9 3746 36 975 2 4 2 28 61 96 6 17 915 98 392 88 314 647 289 65 41 232 7 18 81 112 69 81 49 88 545 842 657 11 76 612 321 17 29 249 18 468 912 96 4656 971 63 29 92 646 24 8 236 98 875 72 44 9 55 683 6 353 54 85 891 235 7938 3 542 68 67 18 98 85 92 432 54 137 41 48 29 24 1 122 7866 41 47 35 7 54 163 96 83 35 117 2365 8961 791 53 6847 68 2271 6 45 4872 9232 49 27 273 81 927 44 6448 541 561 369 441 18 4 1164 393 6 871 344 56 427 7185 8111 1 16 91 36 546 73 93 179 69 3567 84 66 96 93 1218 637 613 9426 796 97 2132 99 42 9764 786 21 65 52 764 9274 23 882 65 614 664 454 35 83 337 25 47 25 245 667 21 6687 48 615 349 83 99 6873 32 155 84 3 1191 44 2 66 71 866 849 67 67 53 692 9933 17 4371 47 482 94 77 68 12 421 41 27 16 93 5 79 772 16 46 618 14 37 728 342 6145 83 438 278 34 44 293 58 72 95 15 96 314 97 87 1542 82 36 9554 863 41 36 14 447 279 962 958 356 3 636 2 48 7865 558 55 77 87 452 13 66 75 825 37 797 644 9359 65 942 8986 783 298 666 2 17 24 194 986 994 5 588 24 13 95 619 8933 27 957 65 85 64 8746 58 14 16 726 81 541 597 69 9 6 64 8475 831 267 5191 94 866 69 32 52 97 789 92 86 351 697 54 71 124 46 3485 298 964 42 949 84 38 161 19 484 185 47 23 97 84 355 1 34 5773 62 49 393 77 728 38 11 42 648 471 6 99 52 86 76 883 64 446 751 82 77 947 379 8 68 235 36 1913 88 28 28 69 67 851 9527 21 4313 34 23 952 153 14 21 52 71 574 2343 19 51 88 631 97 97 45 74 139 9686 564 1 768 8916 24 3665 382 4416 82 136 382 17 899 928 38 437 5262 96 48 47 335 791 693 2182 2 331 23 91 353 97 1 97 1328 65 96 55 8 4687 983 354 621 14 813 35 17 41 897 949 74 25 56 687 213 6179 67 94 269 92 7 56 118 77 54 49 787 98 4 242 8479 19 122 319 39 41 78 87 231 592 568 363 615 62 17 25 6 74 885 594 148 9 13 313 76 191 277 892 96 89 196 176 494 618 278 67 66 226 1 174 271 18 8 42 89 53 33 446 3623 91 4656 873 33 826 12 39 254 622 5238 441 891 2 814 845 4 6697 256 469 92 53 25 87 86 569 9549 312 792 2 515 356 87 666 285 8 64 927 7 32 6 39 12 497 52 367 72 84 53 228 692 84 18 838 48 73 268 125 69 869 3 3 916 564 439 5 959 23 281 283 37 555 144 51 499 93 431 271 34 73 426 123 37 4365 26 14 167 58 9727 856 34 91 54 62 97 692 11 42 32 169 66 44 29 43 9583 486 15 88 6 38 938 537 1 83 2 69 943 4 55 948 646 72 324 769 2444 166 45 976 757 998 96 77 3 76 18 33 731 86 38 51 58 133 473 98 466 86 91 46 87 575 548 278 583 532 195 279 55 82 159 355 354 459 4 866 14 562 35 456 633 87 19 94 85 95 2836 686 21 32 886 693 714 655 68 855 6 66 593 95 61 654 4 84 2 96 82 91 94 531 26 4 327 79 96 741 33 581 14 279 68 543 632 79 57
4
+
83 5 2222 2 47 518 117 3 9 96 87 28 1732 92 4877 81 71 65 4 8 528 66 5889 8 57 793 56 4 5 821 183 25 35 34 996 451 7 3 8336 326 37 13 6 27 719 863 7 817 86 56 77 92 86 7 65 41 2 67 711 1 76 635 6 6363 4 469 847 83 7 4168 4219 485 9 736 919 93 12 5 517 773 34 72 533 6 34 52 85 76 7 73 9559 4 7 694 35 78 28 9213 38 23 554 44 6 4 376 68 372 118 35 98 13 638 8 51 8 54 34 86 915 15 25 373 4 8 359 91 8583 14 4463 16 79 54 36 314 29 842 8229 1 233 64 12 56 9494 9 8724 24 1 698 8 76 836 83 4 97 46 1 758 2 1 148 6 652 7 915 15 2 74 17 7 5 78 5 4 31 29 6 11 8 54 21 75 35 11 773 9 164 94 14 59 947 1 96 9 89 258 863 87 9 47 11 275 57 63 14 379 52 8 96 273 1 9 882 8 35 9624 26 485 68 889 486 464 823 5 687 87 41 374 88 67 467 7 892 87 76 298 6368 3 399 7 2815 65 42 8 42 71 989 266 1 34 125 3961 788 576 593 12 3 74 2684 7 34 642 97 94 3 686 8742 23 922 532 9954 6 751 68 8887 77 4 995 31 41 5 7 9 3 92 58 71 2 255 5 564 3 523 57 765 3 9 763 4 5 77 976 59 33 68 73 741 921 746 41 53 726 522 61 85 24 39 159 78 24 9871 533 38 51 76 9 36 68 651 82 78 99 84 2 99 137 3 769 88 4 988 668 6663 96 552 61 77 83 69 52 93 625 7 549 3 11 66 63 8 175 9 72 6 1 8 18 5 5 79 47 649 8416 661 622 53 1225 72 6986 3 24 8259 8585 6 4 19 82 827 36 4449 94 811 262 818 13 9 9759 57 7 444 947 32 94 146 192 3 776 54 85 7 91 43 729 26 81 68 25 389 52 2 66 331 944 34 47 3695 6 5 756 591 95 1 91 294 5551 47 46 18 277 891 334 4 28 332 53 18 83 4 353 78 1259 59 897 118 745 2 5824 48 9654 38 2 7523 13 91 17 47 89 198 31 27 38 123 4573 29 9331 276 8546 12 2 91 79 48 1 64 73 74 4 4 78 83 2112 458 76 32 847 285 1154 13 522 96 21 85 46 5 726 4 45 89 141 18 82 6148 63 2 1367 967 31 84 55 493 127 472 669 626 7 17 5 75 9283 577 7 42 52 1 22 75 1 727 66 62 353 4621 34 337 713 431 251 95 1 78 66 511 555 169 2 467 78 19 31 53 1664 28 447 66 43 6 33 2 54 19 983 66 7969 96 8 33 7 93 8465 831 912 4218 2 854 48 32 53 746 358 27 22 9842 563 11 42 86 1 1358 424 8 4 858 73 44 45 91 25 836 28 99 7 93 284 5 5 3725 87 15 63 55 474 1 29 91 69 4 56 35 79 92 79 233 5 49 36 81 27 129 19 2 15 944 78 782 19 4 3 38 8 4192 3997 7 927 8 13 539 19 78 19 88 65 218 6271 32 2 54 777 51 14 37 14 25 6275 23 1 9 7836 24 6159 91 5729 3 474 88 4 419 646 22 4 9738 3 1 28 628 858 5226 36 38 46 25 97 7529 42 4 5994 7767 9 84 71 8 1679 71 893 31 55 158 27 18 7 689 57 45 45 6 259 14 3141 19 5 9 83 49 98 346 79 27 55 84 8 7 41 6332 91 338 726 38 8 5 42 821 249 6 415 363 52 46 14 76 4 1 99 7435 4 63 3487 23 859 45 3376 8 92 781 541 993 571 492 4 89 279 9 9 715 3 3 94 2 98 23 383 4173 71 6897 622 8 511 31 55 781 113 7761 965 664 5 22 538 4 274 285 635 31 67 53 32 78 59 4319 936 258 9 45 676 99 641 258 7 97 949 8 52 1 41 2 751 1 866 5 96 857 22 12 15 3 845 46 43 698 862 9 869 9 3 141 49 975 6 422 56 557 834 94 9728 644 85 955 9 755 297 72 8 729 871 52 1861 58 17 639 61 284 22 83 52 71 3 14 136 65 26 4 568 8 8 92 52 7419 183 47 2 8 52 736 15 2 88 6 88 493 12 61 31 41 97 8 651 86 4 88 658 367 262 59 64 5 4 2 84 999 52 89 48 19 83 324 38 3 1 47 9 98 8 275 9763 914 662 915 5395 51 93 36 298 284 625 1 943 562 521 22 845 411 6 13 9 58 63 4555 35 644 99 225 12 113 18 94 88 1 7 251 52 98 448 55 59 6 48 53 456 52 493 79 75 857 33 75 68 61 358 17 8381 34 782 91 37 43
5
+
* + + * * + * * * * * * + * + + * * + * + * + * * + * + * * * * * * + * * * + + * + * + + * + + * * * * * * * * * * + + * + * + + * * + + + + * * + * + + + + + + + + + + + + + + * + * * * + * * + * + * + * + * * * + * * * + + * * + * + * * + * + + * * + + + + * * * * * * + + * * + * + + + + * * + + + + * + + * * * * * + * * + + * * * + * + * * * * * * + + * + + * + * + * + * * * * + + * * * * * * * * * * + * * + + + + * + + + + * * * + + + * + + + * + + * + + * + * + + + + + * * + * * + * + * * + + * + * * * + * + + * + + * + + + + + + * + + * + + + * + + * + * + * * + + + + * + + + * + + * + + + + * + * + * * * + + * + + + * * * + + + + * * * + * + * + + + * * * + * * * * + + + * + + * + + * + + * * * + * * + * * * + * + + + * * + + * * + * + + * + + + * * * * * + + + * * * * + + * * * + * + + + + * + * + + * * + + + * * + * + + + * + + * + * * * * * + + + * * + + * * + + + + + * * + + * * * * + * + + * + + * + * + * + * * * + + + * + + * + * + * * * + * * + * + + * * * + + + * * * * + * * + + * + + + + * * + + * + + * + + + * * + * * + * + * + * * + + + * + * + * * + * + + * + + + + * * * * * * + + + * * + + + * * * + + + * + * + + + + * + + * * + + + * * * + * * * + * + + + * + * + * + + + + * + + + * * + + * + * * + * + + + + + * * + * * + + + * * * + + + * + + + * * * + + + + * * * * + * + * * + + * + + + * * * * + + * + + * + + + + * * * * * + * + * + * * * + + * * * * + * * + + * * * * + * * + * * * * + * + + * + * * + + * + * + + + * * * * + * + + * * + * * * + + * + * + + * * * * + * + + + + * * + + * * * + * * * * + + * + + * * * + * + + + * + + * + + * + * + * * * + * + + * + + * * + * * + * * + + + * + + * * * + + * + * * + * * + + * + + * * * + * * * * * * + * * * * * + * * + * * * * * * + * * * * + * + * * + + * + * + + * * + * * + * * + + * * + * * + + + * * * * + * + + + + + + + + * * + * * + * + * + * + * * * + * + + * + * + * + * + * + * * + * + * + + * + * * + * + + * * + + + + * + + + + + * * + * + + * * * * + * + + * * * * + * * + + + * * * * +
+7
-7
src/day1.zig
+7
-7
src/day1.zig
···
1
1
const std = @import("std");
2
+
const Allocator = std.mem.Allocator;
2
3
3
-
pub fn run(input: []u8) !void {
4
+
pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } {
4
5
var lines = std.mem.tokenizeScalar(u8, input, '\n');
5
6
6
7
var dial: u8 = 50;
7
-
var zeroes_p1: u64 = 0;
8
-
var zeroes_p2: u64 = 0;
8
+
var answer1: u64 = 0;
9
+
var answer2: u64 = 0;
9
10
while (lines.next()) |line| {
10
11
const direction: i2 = switch (line[0]) {
11
12
'L' => -1,
···
24
25
dial = @intCast(@mod(new_rotation, 100));
25
26
26
27
if (dial == 0) {
27
-
zeroes_p1 += 1;
28
+
answer1 += 1;
28
29
}
29
30
30
-
zeroes_p2 += zeroes_clicked;
31
+
answer2 += zeroes_clicked;
31
32
}
32
33
33
-
std.debug.print("Answer P1: {d}\n", .{zeroes_p1});
34
-
std.debug.print("Answer P2: {d}\n", .{zeroes_p2});
34
+
return .{ answer1, answer2 };
35
35
}
+3
-3
src/day2.zig
+3
-3
src/day2.zig
···
1
1
const std = @import("std");
2
+
const Allocator = std.mem.Allocator;
2
3
3
-
pub fn run(input: []u8) !void {
4
+
pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } {
4
5
var ranges = std.mem.tokenizeScalar(u8, std.mem.trimEnd(u8, input, "\n"), ',');
5
6
6
7
var answer1: u64 = 0;
···
48
49
}
49
50
}
50
51
51
-
std.debug.print("Answer P1: {d}\n", .{answer1});
52
-
std.debug.print("Answer P2: {d}\n", .{answer2});
52
+
return .{ answer1, answer2 };
53
53
}
+3
-3
src/day3.zig
+3
-3
src/day3.zig
···
1
1
const std = @import("std");
2
+
const Allocator = std.mem.Allocator;
2
3
3
-
pub fn run(input: []u8) !void {
4
+
pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } {
4
5
var lines = std.mem.tokenizeScalar(u8, input, '\n');
5
6
6
7
var answer1: u64 = 0;
···
10
11
answer2 += try calculateJoltage(line, 12);
11
12
}
12
13
13
-
std.debug.print("Answer P1: {d}\n", .{answer1});
14
-
std.debug.print("Answer P2: {d}\n", .{answer2});
14
+
return .{ answer1, answer2 };
15
15
}
16
16
17
17
fn calculateJoltage(line: []const u8, num_digits: usize) !u64 {
+3
-3
src/day4.zig
+3
-3
src/day4.zig
···
1
1
const std = @import("std");
2
+
const Allocator = std.mem.Allocator;
2
3
const StringTokenIterator = std.mem.TokenIterator(u8, .scalar);
3
4
4
5
const MAX_WIDTH = 137;
···
32
33
return .{ .data = grid, .maxX = line_len, .maxY = i };
33
34
}
34
35
35
-
pub fn run(input: []u8) !void {
36
+
pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } {
36
37
var lines = std.mem.tokenizeScalar(u8, input, '\n');
37
38
38
39
const grid = try newGrid(&lines);
···
95
96
}
96
97
}
97
98
98
-
std.debug.print("Answer P1: {d}\n", .{answer1});
99
-
std.debug.print("Answer P2: {d}\n", .{answer2});
99
+
return .{ answer1, answer2 };
100
100
}
+75
src/day5.zig
+75
src/day5.zig
···
1
+
const std = @import("std");
2
+
const Allocator = std.mem.Allocator;
3
+
const ArrayList = std.ArrayList;
4
+
5
+
const Range = struct {
6
+
low: usize,
7
+
high: usize,
8
+
9
+
pub fn compareByLow(_: void, a: Range, b: Range) bool {
10
+
return a.low < b.low;
11
+
}
12
+
};
13
+
14
+
pub fn run(allocator: Allocator, input: []u8) !struct { u64, u64 } {
15
+
var sections = std.mem.tokenizeSequence(u8, input, "\n\n");
16
+
17
+
var answer1: u64 = 0;
18
+
var answer2: u64 = 0;
19
+
20
+
var ranges = std.mem.tokenizeScalar(u8, sections.next().?, '\n');
21
+
var items = std.mem.tokenizeScalar(u8, sections.next().?, '\n');
22
+
23
+
var valid_ranges = try ArrayList(Range).initCapacity(allocator, 100);
24
+
defer valid_ranges.deinit(allocator);
25
+
26
+
var max: u64 = 0;
27
+
28
+
while (ranges.next()) |line| {
29
+
var range = std.mem.tokenizeScalar(u8, line, '-');
30
+
31
+
const low = try std.fmt.parseInt(u64, range.next().?, 10);
32
+
const high = try std.fmt.parseInt(u64, range.next().?, 10);
33
+
34
+
if (high > max) {
35
+
max = high;
36
+
}
37
+
38
+
try valid_ranges.append(allocator, .{ .low = low, .high = high });
39
+
}
40
+
41
+
while (items.next()) |line| {
42
+
const id = try std.fmt.parseInt(usize, line, 10);
43
+
44
+
for (valid_ranges.items) |range| {
45
+
if (range.low <= id and id <= range.high) {
46
+
answer1 += 1;
47
+
break;
48
+
}
49
+
}
50
+
}
51
+
52
+
std.mem.sort(Range, valid_ranges.items, {}, Range.compareByLow);
53
+
54
+
var merged_ranges = try ArrayList(Range).initCapacity(allocator, valid_ranges.items.len);
55
+
defer merged_ranges.deinit(allocator);
56
+
for (valid_ranges.items[0 .. valid_ranges.items.len - 1], 0..) |item, i| {
57
+
var other = &valid_ranges.items[i + 1];
58
+
if (item.high < other.low) {
59
+
try merged_ranges.append(allocator, item);
60
+
continue;
61
+
}
62
+
63
+
other.low = item.low;
64
+
if (other.high < item.high) {
65
+
other.high = item.high;
66
+
}
67
+
}
68
+
try merged_ranges.append(allocator, valid_ranges.getLast());
69
+
70
+
for (merged_ranges.items) |item| {
71
+
answer2 += item.high - item.low + 1;
72
+
}
73
+
74
+
return .{ answer1, answer2 };
75
+
}
+91
src/day6.zig
+91
src/day6.zig
···
1
+
const std = @import("std");
2
+
const Allocator = std.mem.Allocator;
3
+
const TokenIterator = std.mem.TokenIterator;
4
+
5
+
const NUM_LINES = 5;
6
+
7
+
pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } {
8
+
return .{ try part1(input), try part2(input) };
9
+
}
10
+
11
+
fn part1(input: []u8) !u64 {
12
+
const NUM_OPERANDS = NUM_LINES - 1;
13
+
14
+
var lines = std.mem.tokenizeScalar(u8, input, '\n');
15
+
16
+
var operand_strings: [NUM_OPERANDS]TokenIterator(u8, .any) = undefined;
17
+
18
+
for (0..NUM_OPERANDS) |i| {
19
+
operand_strings[i] = std.mem.tokenizeAny(u8, lines.next().?, " ");
20
+
}
21
+
var operator: TokenIterator(u8, .any) = std.mem.tokenizeAny(u8, lines.next().?, " ");
22
+
23
+
var answer1: u64 = 0;
24
+
while (operator.next()) |op| {
25
+
var operands: [NUM_OPERANDS]u64 = undefined;
26
+
for (0..NUM_OPERANDS) |i| {
27
+
operands[i] = try std.fmt.parseInt(u64, operand_strings[i].next().?, 10);
28
+
}
29
+
30
+
answer1 += switch (op[0]) {
31
+
'+' => blk: {
32
+
var result: u64 = 0;
33
+
for (operands) |o| result += o;
34
+
break :blk result;
35
+
},
36
+
'*' => blk: {
37
+
var result: u64 = 1;
38
+
for (operands) |o| result *= o;
39
+
break :blk result;
40
+
},
41
+
else => unreachable,
42
+
};
43
+
}
44
+
45
+
return answer1;
46
+
}
47
+
48
+
fn part2(input: []u8) !u64 {
49
+
const NUM_OPERAND_LINES = NUM_LINES - 1;
50
+
51
+
var lines = std.mem.tokenizeScalar(u8, input, '\n');
52
+
53
+
var operand_lines: [NUM_OPERAND_LINES][]const u8 = undefined;
54
+
for (0..NUM_OPERAND_LINES) |i| {
55
+
operand_lines[i] = lines.next().?;
56
+
}
57
+
const operator = lines.next().?;
58
+
59
+
var answer2: u64 = 0;
60
+
61
+
var current_operator: u8 = undefined;
62
+
var result: u64 = 0;
63
+
for (0..operator.len) |i| {
64
+
if (operator[i] != ' ') {
65
+
answer2 += result;
66
+
current_operator = operator[i];
67
+
result = switch (current_operator) {
68
+
'+' => 0,
69
+
'*' => 1,
70
+
else => unreachable,
71
+
};
72
+
}
73
+
74
+
var operand_str: [NUM_OPERAND_LINES]u8 = undefined;
75
+
for (0..NUM_OPERAND_LINES) |j| {
76
+
operand_str[j] = operand_lines[j][i];
77
+
}
78
+
79
+
const operand = std.fmt.parseUnsigned(u64, std.mem.trim(u8, operand_str[0..], " "), 10) catch continue;
80
+
81
+
switch (current_operator) {
82
+
'+' => result += operand,
83
+
'*' => result *= operand,
84
+
else => unreachable,
85
+
}
86
+
}
87
+
88
+
answer2 += result;
89
+
90
+
return answer2;
91
+
}
+20
-12
src/main.zig
+20
-12
src/main.zig
···
1
1
const std = @import("std");
2
-
const day1 = @import("./day1.zig");
3
-
const day2 = @import("./day2.zig");
4
-
const day3 = @import("./day3.zig");
5
-
const day4 = @import("./day4.zig");
2
+
const days = .{
3
+
@import("./day1.zig"),
4
+
@import("./day2.zig"),
5
+
@import("./day3.zig"),
6
+
@import("./day4.zig"),
7
+
@import("./day5.zig"),
8
+
@import("./day6.zig"),
9
+
};
6
10
7
11
pub fn main() !void {
8
12
var args = std.process.args();
···
18
22
var gpa: std.heap.GeneralPurposeAllocator(.{}) = .init;
19
23
const allocator = gpa.allocator();
20
24
21
-
const day = try std.fmt.parseInt(u4, day_str, 10);
25
+
const day_num = try std.fmt.parseInt(u4, day_str, 10);
22
26
23
-
const input_path = try std.fmt.allocPrint(allocator, "inputs/day{d}{s}.txt", .{ day, test_str });
27
+
const input_path = try std.fmt.allocPrint(allocator, "inputs/day{d}{s}.txt", .{ day_num, test_str });
24
28
defer allocator.free(input_path);
25
29
26
30
const input_file = try std.fs.cwd().openFile(input_path, .{});
···
32
36
const input_content = try reader.interface.allocRemaining(allocator, .unlimited);
33
37
defer allocator.free(input_content);
34
38
35
-
switch (day) {
36
-
1 => try day1.run(input_content),
37
-
2 => try day2.run(input_content),
38
-
3 => try day3.run(input_content),
39
-
4 => try day4.run(input_content),
40
-
else => {},
39
+
inline for (days, 1..) |day, i| {
40
+
if (i == day_num) {
41
+
std.debug.print("Day {d}\n\n", .{i});
42
+
43
+
const answer1, const answer2 = try day.run(allocator, input_content);
44
+
45
+
std.debug.print("Answer P1: {d}\n", .{answer1});
46
+
std.debug.print("Answer P2: {d}\n", .{answer2});
47
+
break;
48
+
}
41
49
}
42
50
}