summaryrefslogtreecommitdiffstats
path: root/input
diff options
context:
space:
mode:
Diffstat (limited to 'input')
-rw-r--r--input/day_1.txt2249
-rw-r--r--input/day_10.txt139
-rw-r--r--input/day_10_example.txt147
-rw-r--r--input/day_11.txt55
-rw-r--r--input/day_11_example.txt27
-rw-r--r--input/day_12.txt41
-rw-r--r--input/day_2.txt2500
-rw-r--r--input/day_3.txt300
-rw-r--r--input/day_4.txt1000
-rw-r--r--input/day_5.txt512
-rw-r--r--input/day_6.txt1
-rw-r--r--input/day_7.txt1082
-rw-r--r--input/day_8.txt99
-rw-r--r--input/day_9.txt2000
14 files changed, 10152 insertions, 0 deletions
diff --git a/input/day_1.txt b/input/day_1.txt
new file mode 100644
index 0000000..e329ff7
--- /dev/null
+++ b/input/day_1.txt
@@ -0,0 +1,2249 @@
+6110
+2550
+6915
+5699
+4954
+5093
+3141
+5939
+4177
+3544
+5438
+5391
+3019
+
+4691
+6961
+7515
+4545
+11145
+8346
+9225
+
+9005
+2121
+4267
+1808
+3305
+9701
+1419
+
+7178
+4921
+6687
+1918
+4856
+4538
+2786
+5071
+2689
+1803
+5763
+
+12515
+15649
+17846
+14135
+
+3290
+2875
+1184
+3166
+3473
+1683
+2706
+6297
+2900
+1684
+4688
+3074
+
+3729
+6105
+7107
+7027
+5390
+11429
+8245
+
+13381
+12304
+20944
+
+18485
+
+2108
+5008
+5779
+3539
+1633
+3957
+5475
+1345
+1526
+1809
+4355
+3237
+5006
+2573
+4353
+
+1212
+5163
+3415
+3937
+2300
+3454
+4499
+3970
+5106
+3476
+5231
+5849
+5685
+3991
+
+4916
+3093
+4965
+1996
+3298
+3331
+3564
+4052
+2850
+6755
+5818
+5390
+1179
+
+4494
+1573
+5304
+5702
+2908
+3673
+1518
+2821
+3399
+3680
+1994
+1781
+3453
+5262
+2024
+
+2817
+4683
+3484
+4726
+5292
+5647
+1371
+3251
+4694
+2239
+5457
+3252
+2558
+3081
+4813
+
+6143
+6010
+4636
+1540
+2351
+1114
+1075
+1411
+2683
+2107
+1695
+1554
+6147
+1861
+
+10945
+8590
+
+17590
+15122
+2075
+
+66239
+
+4958
+6507
+9535
+5538
+2204
+8401
+6005
+
+12195
+22957
+21872
+
+6147
+5264
+6686
+2662
+9266
+10561
+9894
+1225
+
+4431
+13046
+1127
+18157
+
+3535
+5094
+7349
+7820
+6967
+3345
+7631
+6795
+5954
+2901
+
+6202
+4413
+6345
+1171
+4765
+3423
+4403
+2940
+6516
+5968
+1697
+1868
+5429
+
+17229
+10458
+1601
+
+4637
+1385
+3460
+1955
+4774
+2037
+6428
+1620
+4279
+3459
+6101
+1027
+
+5038
+5499
+5468
+3265
+4014
+4694
+3766
+3548
+5761
+5042
+4874
+5590
+1852
+2250
+5945
+
+9655
+2813
+13235
+4421
+5676
+4059
+
+4273
+11798
+11018
+12068
+1284
+10417
+2918
+
+1358
+6723
+3461
+1450
+3975
+4723
+1166
+6732
+6140
+8746
+
+1489
+1442
+13133
+12668
+12772
+
+4116
+5431
+4612
+7136
+7684
+10312
+1377
+
+4022
+5063
+3069
+4147
+3274
+2114
+2369
+5722
+4159
+4074
+4971
+1046
+5899
+5525
+2131
+
+2422
+3086
+7519
+3820
+5993
+6375
+8142
+2993
+7202
+
+9855
+36690
+
+20852
+24060
+8384
+
+6991
+21756
+4202
+
+4029
+13074
+8711
+9491
+3020
+
+10546
+4261
+6345
+1451
+3556
+7848
+1083
+7119
+
+6059
+1982
+2101
+5916
+6447
+4244
+6947
+4484
+4184
+3602
+3309
+5663
+1453
+
+5997
+3063
+4466
+1905
+4055
+3405
+5462
+2120
+5155
+4597
+2516
+
+5803
+2603
+8894
+4316
+3949
+
+4439
+4652
+3348
+2196
+4186
+2850
+2218
+1721
+6827
+4768
+7358
+
+3004
+3210
+1281
+4206
+3540
+6025
+4411
+4765
+1782
+7126
+5710
+
+3985
+7018
+1713
+7565
+2192
+6903
+4399
+6537
+1072
+6393
+2184
+
+3443
+1385
+1670
+5400
+6885
+5391
+7668
+1248
+6523
+
+20403
+21090
+1281
+
+2435
+4119
+3181
+1687
+5239
+3980
+1274
+4202
+4218
+4174
+3090
+1417
+4875
+4176
+
+1224
+10021
+2363
+7798
+8380
+10136
+5749
+
+13994
+6701
+8270
+2278
+
+3164
+4130
+1407
+3510
+2551
+5144
+3011
+3557
+5410
+5019
+1912
+5889
+5356
+1139
+
+7704
+5596
+11858
+6497
+10778
+8479
+4638
+
+2717
+8274
+14760
+2591
+1135
+
+3752
+6482
+5847
+2548
+5054
+6225
+4262
+6461
+4939
+4170
+5185
+1956
+3863
+
+4014
+5392
+6117
+8551
+5182
+6040
+7659
+3460
+6445
+3731
+
+5137
+8809
+9393
+10116
+7912
+8936
+2821
+5535
+
+4838
+2062
+3104
+4446
+5603
+1617
+1578
+3740
+5059
+2471
+1718
+4530
+2747
+1932
+2029
+
+56887
+
+8805
+8089
+3794
+8073
+3530
+3522
+2420
+5049
+5619
+
+1200
+2268
+5872
+8108
+1220
+8411
+5234
+4288
+1117
+
+2379
+4275
+3508
+4889
+4640
+3905
+7002
+2263
+7093
+2288
+3270
+
+6171
+19996
+
+4067
+4754
+6380
+2843
+8385
+4201
+7631
+4387
+2599
+7088
+
+1522
+2360
+2515
+3834
+3958
+6926
+8060
+5358
+4355
+
+19530
+
+7501
+21086
+2310
+
+3561
+1159
+5630
+6114
+4612
+1408
+3502
+4956
+5184
+5842
+2132
+1483
+
+5056
+9746
+4504
+9019
+9021
+10289
+7094
+
+4750
+11314
+
+8676
+6672
+11494
+11044
+5380
+8643
+4934
+
+1521
+1632
+2978
+5738
+5740
+4229
+5228
+1590
+4375
+3152
+2841
+6278
+5895
+
+2120
+13307
+11773
+5906
+7961
+
+20546
+
+32304
+
+6126
+9197
+1407
+4821
+11686
+2911
+1809
+
+11052
+9610
+13895
+10903
+2730
+9753
+
+25478
+4681
+
+4588
+7758
+7746
+4496
+1521
+5217
+4325
+2242
+5547
+6018
+2099
+
+5440
+4951
+4044
+3481
+4718
+1442
+4919
+5198
+1032
+5857
+4014
+1844
+3141
+6081
+3480
+
+1311
+7390
+5777
+8124
+7703
+2441
+1849
+6597
+6202
+7848
+
+8348
+10633
+15815
+1855
+8177
+
+8951
+2899
+11227
+8207
+6741
+2921
+7614
+
+3537
+1838
+2686
+5037
+1760
+3175
+3339
+3698
+1591
+3917
+5608
+3296
+5990
+
+11248
+12466
+8712
+17366
+
+6204
+3307
+6487
+1816
+2964
+4185
+5876
+1960
+3272
+7154
+
+4264
+12009
+10916
+2329
+15852
+
+2918
+3111
+1397
+6901
+3637
+8521
+1613
+4646
+1275
+
+2378
+3601
+2856
+7283
+6269
+4980
+5453
+6274
+6481
+6402
+
+9498
+
+5368
+5215
+4931
+2638
+4925
+8673
+9606
+9301
+3330
+
+19237
+
+3272
+3631
+10887
+8302
+5286
+3006
+
+5278
+10984
+9411
+1960
+9757
+4346
+
+3852
+6281
+5839
+4446
+4445
+5711
+4111
+3201
+3258
+1236
+6237
+5595
+1089
+3002
+
+3075
+9388
+3756
+6115
+4759
+2877
+4662
+2003
+
+4686
+4103
+4316
+6771
+1945
+1138
+2938
+5802
+8579
+2573
+
+8798
+2461
+6245
+5287
+11798
+10103
+3027
+
+10348
+18709
+13427
+6693
+
+8050
+5154
+3149
+7498
+7688
+6110
+3508
+8476
+
+5567
+4365
+2847
+6503
+5903
+3712
+5377
+6888
+5713
+3586
+1586
+
+6705
+3204
+7685
+4453
+8534
+5651
+5065
+8081
+6133
+1149
+
+4483
+4954
+4851
+3999
+4945
+1362
+4185
+3725
+2950
+5058
+2254
+1800
+1842
+4694
+3281
+
+6208
+5547
+3600
+4001
+2231
+4922
+5790
+1948
+4573
+3413
+4322
+4293
+4824
+1527
+
+29021
+
+2898
+3348
+3531
+5600
+2971
+3338
+5408
+4321
+3717
+4008
+2507
+1941
+2752
+5526
+3739
+
+2697
+5679
+1433
+6811
+3980
+4167
+6041
+4697
+2502
+6879
+2025
+4208
+1228
+
+4445
+2147
+7149
+5364
+5550
+2898
+1065
+3657
+6576
+6055
+3931
+5395
+
+1303
+3297
+4116
+4097
+3206
+4908
+3991
+3820
+5987
+2689
+1026
+4494
+5668
+2364
+
+3759
+7034
+12531
+6043
+5183
+2198
+
+4924
+2362
+2522
+4904
+6009
+1737
+6787
+6494
+5298
+2737
+3593
+4537
+1031
+
+4021
+3441
+2569
+1275
+6548
+8416
+5307
+3190
+3818
+2723
+
+8685
+7967
+7708
+11926
+
+12403
+9683
+13631
+10653
+7314
+
+7316
+3547
+1915
+3356
+1414
+1492
+4886
+5530
+4692
+3502
+6184
+3557
+
+5851
+4399
+2012
+2190
+2617
+2159
+2862
+1893
+2469
+2989
+5449
+2108
+1048
+2542
+1284
+
+3705
+3689
+3695
+3966
+1879
+2717
+4394
+2586
+7253
+2340
+7181
+
+18748
+3187
+11786
+
+4576
+3311
+6355
+9688
+1070
+9779
+10843
+
+6286
+2030
+1457
+3321
+2340
+5372
+2472
+2688
+3481
+3520
+2017
+4052
+3613
+
+8703
+3801
+5806
+1194
+9099
+8051
+6266
+4389
+2806
+
+8497
+6721
+4559
+5379
+8359
+2283
+3251
+8600
+3045
+3892
+
+5771
+4622
+6452
+2910
+1336
+2028
+4483
+2200
+1261
+7928
+4897
+
+4063
+5564
+4386
+4480
+7427
+7328
+4097
+4660
+2058
+2435
+1404
+
+1765
+4959
+3595
+5417
+2459
+3727
+1003
+3933
+2074
+3492
+5181
+2748
+2691
+4250
+2233
+
+6427
+2023
+5347
+4376
+3351
+5329
+7656
+3114
+2242
+6535
+5010
+
+6335
+1288
+1509
+5055
+6435
+4259
+3766
+5446
+2275
+5759
+1658
+5648
+6337
+3140
+
+19523
+9958
+7466
+10185
+
+5056
+3745
+6112
+3496
+2919
+3307
+10013
+
+5709
+1141
+6752
+14817
+1570
+
+5994
+19335
+17039
+
+8057
+7193
+6660
+10996
+4355
+7284
+9163
+
+7243
+13354
+3937
+12804
+8327
+8024
+
+1665
+11179
+17488
+
+6093
+6097
+1884
+5083
+9616
+5268
+5129
+6153
+1145
+
+7401
+2094
+4488
+5499
+6029
+7359
+1952
+3834
+4051
+3015
+2400
+5203
+
+1037
+5318
+2600
+1438
+1882
+1667
+2577
+4671
+4614
+5335
+4666
+
+3209
+4139
+1011
+6467
+3874
+2866
+2997
+1588
+1474
+4173
+1393
+4486
+
+6091
+3128
+6230
+3830
+3837
+6176
+2659
+3036
+5598
+3045
+5889
+1270
+5451
+
+2284
+5647
+5472
+2536
+2632
+1354
+2409
+5948
+3176
+5061
+1342
+1929
+3111
+2807
+2756
+
+4056
+6430
+16073
+15446
+
+8687
+
+2610
+15342
+3943
+14628
+3545
+
+4230
+4793
+2361
+4513
+5144
+6035
+3039
+5388
+5081
+3138
+4288
+2933
+1584
+2471
+
+9066
+2772
+8183
+12049
+3585
+8452
+6792
+
+3243
+1533
+5460
+5187
+1851
+3515
+4662
+3355
+5089
+3764
+1723
+4719
+5292
+5615
+1794
+
+8661
+16368
+6930
+11440
+
+35648
+
+5079
+13796
+11334
+4677
+
+8876
+24018
+16839
+
+5092
+3404
+5504
+1093
+2884
+3871
+1341
+1652
+6410
+2617
+5703
+5414
+3033
+4846
+
+29773
+
+9474
+7432
+8272
+2002
+2667
+2456
+8304
+6334
+7922
+
+4886
+5478
+3204
+3276
+2449
+3768
+1075
+6172
+1986
+6177
+3934
+3968
+4794
+4506
+
+13497
+14301
+13442
+
+61887
+
+5216
+2359
+5537
+12769
+12794
+6740
+
+5664
+2729
+5686
+3513
+2411
+3689
+2650
+3459
+2400
+3676
+4652
+4985
+3850
+1949
+1900
+
+2841
+5334
+1280
+5989
+6006
+3916
+1715
+5624
+1476
+1209
+3713
+1376
+2545
+5123
+3985
+
+2390
+1661
+4703
+6098
+4512
+3216
+2999
+6252
+1394
+1895
+1913
+1801
+3159
+
+3322
+11142
+10847
+3906
+1419
+2000
+7233
+
+2702
+1048
+5466
+6814
+3528
+3644
+4044
+2019
+4490
+1737
+6813
+5015
+
+7855
+9990
+8750
+8581
+2368
+9358
+1568
+7690
+
+2953
+1038
+6875
+4560
+6581
+6293
+2047
+1900
+6416
+5569
+4654
+5415
+4408
+
+3720
+2562
+2393
+4639
+3641
+2911
+1312
+2697
+6195
+6576
+3644
+3128
+
+28955
+5123
+
+8445
+
+4703
+12165
+7074
+
+11707
+13879
+7866
+
+4800
+5449
+2036
+5941
+4559
+2548
+4644
+4543
+2322
+2036
+3908
+5780
+5345
+2549
+1751
+
+7859
+10697
+10414
+8986
+1373
+3111
+7807
+
+2938
+4802
+5235
+3940
+2567
+2461
+7133
+4883
+2447
+1032
+3587
+5788
+
+3080
+13380
+7178
+6656
+10753
+11646
+
+1948
+3803
+1627
+1426
+6886
+1633
+1545
+3274
+6768
+3241
+4031
+
+15127
+1778
+14074
+11149
+
+4026
+3948
+5822
+2855
+2093
+6113
+5983
+1709
+6000
+4552
+2594
+1152
+2799
+1401
+
+3226
+9386
+6030
+7930
+6490
+5736
+1574
+2360
+3167
+
+8084
+7950
+10634
+2320
+3186
+4598
+9171
+7892
+
+4968
+10880
+13264
+11047
+12412
+3450
+
+28780
+26728
+
+7945
+1296
+1773
+5426
+7765
+1785
+2377
+2434
+7809
+4140
+3727
+
+1308
+6148
+21591
+
+23972
+19371
+
+5256
+12843
+23975
+
+5911
+1161
+4312
+2088
+7105
+3023
+3772
+1650
+5065
+2713
+4336
+5514
+
+5847
+11518
+11799
+11015
+3026
+10915
+1483
+
+21170
+
+2317
+5499
+4732
+5102
+2989
+3648
+1868
+1910
+5775
+3761
+2119
+3636
+1272
+1199
+2256
+
+7780
+
+9298
+16719
+25032
+
+22138
+34813
+
+4414
+2839
+1057
+5746
+5992
+3241
+6411
+4296
+3151
+6393
+3580
+6848
+2757
+
+2137
+2976
+13805
+10178
+
+1209
+5133
+6097
+3798
+1191
+5846
+1664
+6348
+3490
+6995
+
+5102
+1531
+2487
+5914
+9420
+7252
+5464
+5663
+
+7279
+1823
+1050
+4389
+7430
+5169
+7345
+1029
+7268
+7171
+1084
+5147
+
+7352
+4540
+2007
+10929
+11713
+10909
+1151
+
+10392
+5900
+10100
+11267
+11785
+11833
+8224
+
+52397
+
+4210
+2185
+7522
+2334
+1478
+3920
+2883
+6788
+4548
+6152
+3280
+
+3410
+5271
+2300
+1970
+3784
+3548
+1977
+3077
+3306
+1020
+2594
+6537
+
+5309
+9473
+16702
+
+7650
+13750
+
+17582
+4937
+12672
+
+29349
+20611
+
+6546
+7623
+1911
+2747
+7617
+3987
+7752
+5852
+1233
+1540
+4073
+
+5695
+3845
+4041
+8076
+9015
+4289
+4259
+9920
+
+5573
+2607
+4056
+2369
+3969
+1080
+2130
+6473
+2130
+3372
+4051
+3963
+2606
+5906
+
+26141
+19389
+
+12853
+12859
+3938
+9501
+1818
+5496
+
+6529
+5972
+9280
+
+9836
+3884
+4956
+10149
+5736
+5586
+2755
+
+17543
+8648
+17976
+13773
+
+1694
+3739
+2053
+1096
+2150
+1489
+4221
+3229
+2995
+4264
+1196
+3597
+3499
+4516
+2236
+
+5612
+6240
+4378
+1014
+2163
+1935
+3429
+2831
+4749
+4245
+2239
+4559
+1693
+5657
+
+11226
+1962
+9824
+10528
+6845
+6882
+3890
+
+1975
+2792
+8087
+1459
+3226
+2909
+1094
+7529
+8035
+3212
+3353
+
+13079
+18234
+
+5218
+4074
+1663
+7056
+1783
+1857
+5490
+3184
+6300
+6151
+3879
+
+2316
+1182
+2366
+4076
+1226
+3753
+6822
+4650
+2065
+6703
+3732
+1622
+
+4283
+6886
+1713
+7954
+1408
+8538
+8336
+7599
+2739
+4374
+
+4884
+4508
+4068
+2780
+1107
+2157
+3272
+5580
+1487
+4923
+1167
+5056
+2323
+2094
+4311
+
+3709
+1743
+3607
+4700
+5983
+6508
+7310
+4932
+2986
+7994
+4138
+
+2564
+5468
+7511
+3466
+7763
+4015
+6306
+2291
+7884
+1256
+3286
+
+26272
+18770
+
+10655
+4092
+13958
+19758
+
+4937
+2529
+6704
+11459
+9749
+5660
+
+5757
+2813
+2548
+5686
+1350
+2079
+5652
+3366
+2101
+4620
+6250
+2971
+3762
+6068
+
+22115
+
+15523
+15141
+12498
+2271
+
+2307
+5729
+1509
+3105
+3410
+3816
+4078
+5564
+4357
+2989
+6192
+1974
+5607
+6183
+
+4548
+1955
+1227
+9884
+6622
+6663
+2549
+
+34829
+10698
+
+1891
+3378
+1535
+5895
+8254
+3232
+6831
+5472
+7545
+6751
+
+2971
+2462
+8484
+3898
+1911
+7516
+1435
+7853
+6027
+6130
+
+59206
+
+7822
+1506
+13885
+1017
+5150
+
+6677
+3808
+14470
+1962
+
+2816
+8043
+1593
+4462
+7112
+8563
+9026
+1660
+5553
+
+5282
+4451
+1256
+7336
+3724
+2212
+5895
+2488
+8009
+1457
+7634
+
+9604
+
+3927
+10103
+5636
+11401
+12234
+
+11006
+17248
+
+10936
+8651
+10252
+7868
+7295
+3070
+1520
+
+12324
+5230
+3847
+9922
+5525
+6929
+
+13863
+1248
+13247
+11387
+6677
+9255
+
+23703
+8659
+10869
+
+7358
+2431
+3112
+4743
+6684
+6343
+4335
+1058
+8303
+1262
+
+9600
+1977
+4524
+12701
+7686
+1120
+
+27377
+9632
+
+10910
+14343
+
+6305
+5171
+3950
+4167
+2806
+5576
+5066
+4874
+3260
+7138
+5510
+3732
+
+20922
+8396
+4707
+
+1965
+3603
+1494
+4544
+4911
+1179
+2335
+1333
+2831
+4394
+5038
+6068
+3449
+5419
+
+4597
+3641
+5977
+3109
+5448
+5290
+3587
+3195
+4096
+4134
+6191
+6420
+3329
+5404
diff --git a/input/day_10.txt b/input/day_10.txt
new file mode 100644
index 0000000..c26a664
--- /dev/null
+++ b/input/day_10.txt
@@ -0,0 +1,139 @@
+noop
+addx 12
+addx -5
+addx -1
+noop
+addx 4
+noop
+addx 1
+addx 4
+noop
+addx 13
+addx -8
+noop
+addx -19
+addx 24
+addx 1
+noop
+addx 4
+noop
+addx 1
+addx 5
+addx -1
+addx -37
+addx 16
+addx -13
+addx 18
+addx -11
+addx 2
+addx 23
+noop
+addx -18
+addx 9
+addx -8
+addx 2
+addx 5
+addx 2
+addx -21
+addx 26
+noop
+addx -15
+addx 20
+noop
+addx 3
+noop
+addx -38
+addx 3
+noop
+addx 26
+addx -4
+addx -19
+addx 3
+addx 1
+addx 5
+addx 3
+noop
+addx 2
+addx 3
+noop
+addx 2
+noop
+noop
+noop
+noop
+addx 5
+noop
+noop
+noop
+addx 3
+noop
+addx -30
+addx -4
+addx 1
+addx 18
+addx -8
+addx -4
+addx 2
+noop
+addx 7
+noop
+noop
+noop
+noop
+addx 5
+noop
+noop
+addx 5
+addx -2
+addx -20
+addx 27
+addx -20
+addx 25
+addx -2
+addx -35
+noop
+noop
+addx 4
+addx 3
+addx -2
+addx 5
+addx 2
+addx -11
+addx 1
+addx 13
+addx 2
+addx 5
+addx 6
+addx -1
+addx -2
+noop
+addx 7
+addx -2
+addx 6
+addx 1
+addx -21
+addx 22
+addx -38
+addx 5
+addx 3
+addx -1
+noop
+noop
+addx 5
+addx 1
+addx 4
+addx 3
+addx -2
+addx 2
+noop
+addx 7
+addx -1
+addx 2
+addx 4
+addx -10
+addx -19
+addx 35
+addx -1
+noop
+noop
+noop
diff --git a/input/day_10_example.txt b/input/day_10_example.txt
new file mode 100644
index 0000000..2bb94df
--- /dev/null
+++ b/input/day_10_example.txt
@@ -0,0 +1,147 @@
+addx 15
+addx -11
+addx 6
+addx -3
+addx 5
+addx -1
+addx -8
+addx 13
+addx 4
+noop
+addx -1
+addx 5
+addx -1
+addx 5
+addx -1
+addx 5
+addx -1
+addx 5
+addx -1
+addx -35
+addx 1
+addx 24
+addx -19
+addx 1
+addx 16
+addx -11
+noop
+noop
+addx 21
+addx -15
+noop
+noop
+addx -3
+addx 9
+addx 1
+addx -3
+addx 8
+addx 1
+addx 5
+noop
+noop
+noop
+noop
+noop
+addx -36
+noop
+addx 1
+addx 7
+noop
+noop
+noop
+addx 2
+addx 6
+noop
+noop
+noop
+noop
+noop
+addx 1
+noop
+noop
+addx 7
+addx 1
+noop
+addx -13
+addx 13
+addx 7
+noop
+addx 1
+addx -33
+noop
+noop
+noop
+addx 2
+noop
+noop
+noop
+addx 8
+noop
+addx -1
+addx 2
+addx 1
+noop
+addx 17
+addx -9
+addx 1
+addx 1
+addx -3
+addx 11
+noop
+noop
+addx 1
+noop
+addx 1
+noop
+noop
+addx -13
+addx -19
+addx 1
+addx 3
+addx 26
+addx -30
+addx 12
+addx -1
+addx 3
+addx 1
+noop
+noop
+noop
+addx -9
+addx 18
+addx 1
+addx 2
+noop
+noop
+addx 9
+noop
+noop
+noop
+addx -1
+addx 2
+addx -37
+addx 1
+addx 3
+noop
+addx 15
+addx -21
+addx 22
+addx -6
+addx 1
+noop
+addx 2
+addx 1
+noop
+addx -10
+noop
+noop
+addx 20
+addx 1
+addx 2
+addx 2
+addx -6
+addx -11
+noop
+noop
+noop
+
diff --git a/input/day_11.txt b/input/day_11.txt
new file mode 100644
index 0000000..c567cb6
--- /dev/null
+++ b/input/day_11.txt
@@ -0,0 +1,55 @@
+Monkey 0:
+ Starting items: 62, 92, 50, 63, 62, 93, 73, 50
+ Operation: new = old * 7
+ Test: divisible by 2
+ If true: throw to monkey 7
+ If false: throw to monkey 1
+
+Monkey 1:
+ Starting items: 51, 97, 74, 84, 99
+ Operation: new = old + 3
+ Test: divisible by 7
+ If true: throw to monkey 2
+ If false: throw to monkey 4
+
+Monkey 2:
+ Starting items: 98, 86, 62, 76, 51, 81, 95
+ Operation: new = old + 4
+ Test: divisible by 13
+ If true: throw to monkey 5
+ If false: throw to monkey 4
+
+Monkey 3:
+ Starting items: 53, 95, 50, 85, 83, 72
+ Operation: new = old + 5
+ Test: divisible by 19
+ If true: throw to monkey 6
+ If false: throw to monkey 0
+
+Monkey 4:
+ Starting items: 59, 60, 63, 71
+ Operation: new = old * 5
+ Test: divisible by 11
+ If true: throw to monkey 5
+ If false: throw to monkey 3
+
+Monkey 5:
+ Starting items: 92, 65
+ Operation: new = old * old
+ Test: divisible by 5
+ If true: throw to monkey 6
+ If false: throw to monkey 3
+
+Monkey 6:
+ Starting items: 78
+ Operation: new = old + 8
+ Test: divisible by 3
+ If true: throw to monkey 0
+ If false: throw to monkey 7
+
+Monkey 7:
+ Starting items: 84, 93, 54
+ Operation: new = old + 1
+ Test: divisible by 17
+ If true: throw to monkey 2
+ If false: throw to monkey 1
diff --git a/input/day_11_example.txt b/input/day_11_example.txt
new file mode 100644
index 0000000..30e09e5
--- /dev/null
+++ b/input/day_11_example.txt
@@ -0,0 +1,27 @@
+Monkey 0:
+ Starting items: 79, 98
+ Operation: new = old * 19
+ Test: divisible by 23
+ If true: throw to monkey 2
+ If false: throw to monkey 3
+
+Monkey 1:
+ Starting items: 54, 65, 75, 74
+ Operation: new = old + 6
+ Test: divisible by 19
+ If true: throw to monkey 2
+ If false: throw to monkey 0
+
+Monkey 2:
+ Starting items: 79, 60, 97
+ Operation: new = old * old
+ Test: divisible by 13
+ If true: throw to monkey 1
+ If false: throw to monkey 3
+
+Monkey 3:
+ Starting items: 74
+ Operation: new = old + 3
+ Test: divisible by 17
+ If true: throw to monkey 0
+ If false: throw to monkey 1
diff --git a/input/day_12.txt b/input/day_12.txt
new file mode 100644
index 0000000..2e8d203
--- /dev/null
+++ b/input/day_12.txt
@@ -0,0 +1,41 @@
+abaaaaacccccccccccccccccccccccccccccccccccccccaaaaaaaccccaaaaaaaaaaaaaaaaacccccaaaaaacccccccccccccccccccccccaaaaaaaaccccccccccccccccccccccccccccccccaaaaaa
+abaaaaaacccaaaacccccccccccccccccccccccaccccccccaaaaaaaaccaaaaaaaaaaaaaaaaccccccaaaaaacccccccccccccccccccccccccaaaaccccccccccccccccccccccccccccccccccaaaaaa
+abaaaaaacccaaaacccccccccccccccccaaaaaaaacccccccaaaaaaaaacaaaaaaaaaaaaacccccccccaaaaacccccccccccccccccccccccccaaaaacccccccccccccccccccaaaccccccccccccaaaaaa
+abaaacaccccaaaaccccccccccccccccccaaaaaacccccccccaaaaaaaccccaaaaaaaaaaacccccccccaaaaacccccccccccccccccccccccccaacaaaccccccccccccccccccaaacccccccccccccccaaa
+abaaacccccccaaacccccccccccaacccccaaaaaaccccccccaaaaaaccccccaacaaaaaaaacccccccccccccccccccccccaaccccccccccccccacccaaaaacccccccccaaccccaaacccccccccccccccaaa
+abccccccccccccccccccccccccaaaaccaaaaaaaacccccccaaaaaaaccccccccaaaaaaaaaccccccccccaacccccccccaaaccccccccccccccccccacaaacccccccccaaaaccaaacccccccccccccccaac
+abccccccccccccccccccccccaaaaaacaaaaaaaaaaccccccaaccaaaaacccccaaaaccaaaaccccccccccaaacaacccccaaacaaacccaaccccccccaaaaaaaacccccccaaaaakkkkkkcccccccccccccccc
+abccccccccccccccccccccccaaaaaccaaaaaaaaaacccccccccccaaaaaaccccacccaaaaaccccccccccaaaaaaccaaaaaaaaaaaaaaaccccccccaaaaaaaaccccccccaaajkkkkkkkaccccccaacccccc
+abcccccccccccccccccccccccaaaaacacacaaaccccccccccccccaaaaaaccccccccaaaacccccccccaaaaaaacccaaaaaaaaaaaaaaaaaccccccccaaaaaccccccccccjjjkkkkkkkkccaaaaaacccccc
+abcccccccccccccccccccccccaacaacccccaaacccaccccccccccaaaaaaccccccccaaaacccccccccaaaaaaacccccaaaaaacaaaaaaaacccccccaaaaacccccccjjjjjjjooopppkkkcaaaaaaaccccc
+abcccccccccccccccccaacaacccccccccccaaaaaaacccccccccccaaaaacccccccccccccccccccccccaaaaaaccccaaaaaaccaaaaaaacccccccaaaaaacciijjjjjjjjoooopppkkkcaaaaaaaacccc
+abccccccccccaaaccccaaaaacccccccccccccaaaaacccccccccccaaaaccccccccccccccccccccccccaacaaaccccaaaaaaacaaaaacccccccccaccaaaciiiijjjjjjoooopppppkllcaaaaaaacccc
+abccaaccccccaaaaacaaaaacccccccccccccaaaaaacccccccccccccccccccccccccccccccccccccccaacccccccaaaacaaaaaaaaacccaaccccaaaaaciiiiinoooooooouuuupplllaaaaaacccccc
+abcaaacccccaaaaaacaaaaaacccccccccccaaaaaaaaccccccccaacaccccccccccccccccccccccccccccccccccccaccccccccccaaccaaaccccaaaaaciiinnnooooooouuuuuppplllaaacacccccc
+abaaaaaacccaaaaaacccaaaacccccccccccaaaaaaaaccccccccaaaaccccccccccccccccccccccccccccccccccccccccccccccccaaaaacaacaaaaaaiiinnnnntttoouuuuuupppllllcccccccccc
+abaaaaaaccccaaaaacccaaccccccccccacccccaaccccccccccaaaaaccccccccccccccccccccccccccccccccccccccccccccccccaaaaaaaacaaaaaaiiinnnnttttuuuuxxuuupppllllccccccccc
+abaaaaacccccaacaaccccccccccccccaaaccccaacccccaacccaaaaaacccccccccccccccccccccccccccccccccccccccccccccccccaaaaaccaaaaaaiiinnnttttxxuuxxyyuuppppllllcccccccc
+abaaaacccccccccccccccccccccaaacaaaccccccaaacaaaaccacaaaacccccccccccccccccccccccccccccccccccaacccccccccccaaaaaccccaaaccciinnntttxxxxxxxyyvvvqqqqqlllccccccc
+abaaaaaccccccccccccccccccccaaaaaaaaaacccaaaaaaacccccaaccccccccccccccccccccccccccccccccccccaaacccccccccccaacaaaccccccccciiinntttxxxxxxxyyvvvvvqqqqljjcccccc
+abccaaaccaccccccccaaacccccccaaaaaaaaaccccaaaaaacccccccccccccccccccccccccccccccaacccccccaaaaacaaccccccccccccaacccccccccchhinnnttxxxxxxyyyyyvvvvqqqjjjcccccc
+SbccccaaaacccccccaaaaaacccccccaaaaaccccccaaaaaaaaccccccccccccccccccccaaccccccaaaaccccccaaaaaaaacccccccccccccccccccccccchhhnnntttxxxxEzyyyyyvvvqqqjjjcccccc
+abccccaaaacccccccaaaaaaccccccaaaaaacccccaaaaaaaaaacccccccccccccccccccaaccccccaaaaccccccccaaaaacccccccccccccccccccccccccchhhnntttxxxyyyyyyyvvvvqqqjjjcccccc
+abcccaaaaaaccccccaaaaaacccccaaaaaaaccccaaaaaaaaaacccccccccccccccccaaaaaaaacccaaaacccccccaaaaaccccccccccccccccccccccccccchhmmmttxxxyyyyyyvvvvvqqqjjjdcccccc
+abcccaaaaaacccccccaaaaacccccaaacaaacaaaaaaaaaaccccccccccccaaacccccaaaaaaaaccccccccccccccaacaaacccccccaacaaacccccccccccchhhmmmtswwwyyyyyyvvvqqqqjjjjdddcccc
+abcccccaacccccccccaacaacccccccccccacaaaaaccaaaccccccccccaaaaacccccccaaaacccccccccccccccccccaaccccccccaaaaaacccccccccccchhhmmssswwwwwwyyywvrqqqjjjjdddccccc
+abcccccccccccccccccccccccccccccccccaaaaaccccaaccccccccacaaaaaacccccaaaaacccccccccccccccccccccccccccccaaaaaacccccccccccchhhmmssswwwwwwywywwrrqjjjjddddccccc
+abcccccccccccccccccccccccccccccccccaaaaaccccccccaaacaaacaaaaaacccccaaaaaaccccccccccccccccccccccccccccaaaaaaaccccccccccchhmmmsssswwsswwwwwwrrkkjjddddcccccc
+abccccccccccccccccccccccccccccccccccaaaaacccccccaaaaaaacaaaaaccccccaaccaacccccccccccaaccccccccccccccaaaaaaaacaacaaccccchhhmmmsssssssswwwwrrrkkjddddaaccccc
+abcccccccccccccccccccccccccaaaaaccccaacccccccccccaaaaaacaaaaacccccccccccccaacccccccaaaaaacccccccccccaaaaaaaacaaaaaccccchhgmmmmssssssrrwwwrrrkkddddaaaccccc
+abcccccccccccccccccccccccccaaaaacccccccccccccccccaaaaaaaacccccccccccccccaaaaaaccccccaaaaaccccaaccccccccaaacccaaaaaaccccgggmmmmmmllllrrrrrrrkkkeedaaaaccccc
+abcccccccccccaaccccccccccccaaaaaacccccccccccccccaaaaaaaaacccccccccccccccaaaaaaccccaaaaaaacccaaaacccccccaaccccaaaaaaccccggggmmmmllllllrrrrrkkkkeedaaaaacccc
+abcccccccccccaaacaacaaaccccaaaaaaccccccccccccccaaaaaaaaaacccccccccccccccaaaaaaccccaaaaaaaaccaaaacccccccccccccaaaaaccccccgggggglllllllllrrkkkkeeeaaaaaacccc
+abcccccccccccaaaaaacaaaacccaaaaaaccccccccccccccaaacaaaaaaccccccccccccccccaaaaaccccaaaaaaaaccaaaacccccccccccaaccaaaccccccgggggggggffflllkkkkkkeeeaaaaaacccc
+abaccccccccaaaaaaaccaaaacccccaaacccccccccccccccccccaaaaaacaccccccccaaccccaaaacccccccaaacacccccccccccccccaaaaaccccccccccccccgggggffffflllkkkkeeeccaaacccccc
+abaccccccccaaaaaaaccaaacccccccccccccccccaaaccccccccaaacaaaaaccccccaaacccccccccccccaaaacccccccccccccccccccaaaaaccccccccccccccccccaffffffkkkeeeeeccaaccccccc
+abaaaccccccccaaaaaaccccccccccccccccccccaaaaaacccccccaaaaaaaacaaaacaaacccccccccaaaaaacccccccccccccccccccccaaaaaccccccccccccccccccccaffffffeeeeecccccccccccc
+abaacccccccccaacaaaccccccccccccccccccccaaaaaaccccccccaaaaaccaaaaaaaaacccccccccaaaaaaaaccccccccccaaccccccaaaaacccccccccccccccccccccaaaffffeeeecccccccccccaa
+abaacccccccccaaccccccccccccccccaaccccccaaaaacaaccaacccaaaaacaaaaaaaaacccccccccaaaaaaaaccccccaaacaacccccccccaacccccccccccccccccccccaaaccceaecccccccccccccaa
+abaacccccccccccccccccccccccccccaaaaaacccaaaaaaaaaaaccaaacaaccaaaaaaaaaaaaacccccaaaaaaacccccccaaaaaccccccccccccccccccccccccccccccccaaacccccccccccccccaaacaa
+abcccccccccccccccccccccccccccccaaaaaccccaacaacaaaaacccaaccccccaaaaaaaaaaaacccccaaaaacccccccccaaaaaaaccccccccccccccccccccccccccccccaaacccccccccccccccaaaaaa
+abcccccccccccccccccccccccccccaaaaaaaccccccccaaaaaaaaccccccccccaaaaaaaaaaccccccaaaaaaccccccccaaaaaaaaccccccccccccccccccccccccccccccccccccccccccccccccaaaaaa
diff --git a/input/day_2.txt b/input/day_2.txt
new file mode 100644
index 0000000..787ae71
--- /dev/null
+++ b/input/day_2.txt
@@ -0,0 +1,2500 @@
+B Y
+A Z
+A Z
+C Z
+B Y
+B Y
+B X
+B Z
+C Z
+B X
+B Y
+A Z
+B Y
+B Z
+B Y
+C Z
+B Z
+B Y
+B Z
+C Y
+B Y
+A Z
+B Y
+B Y
+B Y
+C Y
+A Z
+B Y
+B X
+A Z
+B X
+A Z
+A Z
+B Y
+B Y
+B X
+A Z
+B Y
+B Z
+C X
+C X
+B Y
+B Y
+B X
+B X
+C X
+B X
+A Z
+B Y
+B Y
+C X
+A Z
+B Y
+B Z
+B X
+B X
+A Z
+A X
+B Y
+B Y
+B Z
+C Z
+B Z
+B Z
+B Z
+A Z
+A Z
+B X
+B X
+B Y
+B X
+B X
+C Z
+C Z
+A Z
+A Y
+A Z
+B Z
+A Z
+B Y
+C X
+B X
+C X
+B Z
+B Z
+C Z
+B Z
+B X
+C X
+A Z
+C X
+B Z
+A Y
+C Z
+B Y
+C Y
+B X
+A X
+B Y
+B X
+B X
+B Z
+B Y
+A Z
+B Z
+B Y
+B Y
+A X
+A Z
+B X
+B X
+B X
+B X
+B Z
+B Z
+B Y
+C X
+A Z
+A Z
+B Y
+B Z
+B Y
+A Z
+B Z
+A Z
+A Z
+C X
+B Z
+A Z
+A Z
+B Y
+B Z
+A Z
+B Y
+B Y
+A Z
+B Y
+C X
+B Z
+B Y
+B X
+C X
+B X
+B X
+B X
+A Z
+A Z
+C Y
+A Z
+B Y
+A Z
+C X
+B Z
+B Z
+C X
+B Y
+C X
+B X
+B X
+C X
+A Z
+B Y
+C X
+B X
+B Y
+A Z
+B Y
+B Y
+C X
+B Y
+C X
+A Z
+A Z
+A Z
+B Y
+B Y
+A X
+A Z
+A Z
+B Y
+C X
+C Y
+B Y
+C X
+A Z
+B X
+A Z
+A Z
+C X
+B Y
+A Z
+B Y
+C X
+A Z
+B X
+B Y
+A Z
+B Y
+B X
+B X
+C X
+B Y
+C Y
+A Z
+B Y
+B Y
+C Y
+B Y
+C Y
+C X
+A Y
+A Y
+B Z
+B Y
+A Z
+B Z
+B X
+B X
+B Y
+A Z
+B Y
+B X
+B Y
+B Y
+C Z
+B Y
+B Y
+A Z
+A Z
+B Z
+A Y
+C X
+B Y
+B Y
+B Z
+B Z
+B Y
+C X
+B Y
+B X
+B Z
+B Y
+B X
+B Y
+C Z
+B Y
+B X
+A Z
+B Z
+B Z
+A Z
+C X
+B Y
+C Z
+A Z
+B Y
+C Z
+B Y
+B X
+B Y
+B X
+C Z
+B Z
+A Z
+A Z
+A Z
+A X
+B Z
+B Y
+B X
+B Y
+A Z
+B Z
+C Z
+B X
+B Z
+B Z
+A Z
+B Y
+B X
+A Z
+A Z
+B Y
+B X
+A Z
+A Z
+C Z
+A Z
+C Z
+B Y
+B Y
+B Z
+C X
+A Z
+B X
+B Y
+B X
+B Y
+B Y
+B X
+B Z
+B X
+C Z
+C X
+C X
+A Z
+A Z
+B X
+B X
+A Y
+C X
+B Y
+A Y
+B Z
+B X
+A Z
+B X
+B Y
+B Y
+B Y
+B Y
+A Z
+A Z
+B Y
+B X
+C Z
+B Z
+C X
+B Z
+B Y
+C X
+A Z
+B Y
+A Z
+A Z
+B Z
+B Y
+B X
+A Z
+B X
+B Y
+A Z
+B Z
+B X
+B X
+A Z
+C Y
+B X
+A Z
+B X
+B Y
+C X
+B Y
+C Z
+C X
+B Y
+B Y
+B Y
+B X
+B Y
+B X
+A Y
+A Z
+B Z
+B Y
+B X
+B Z
+B Y
+C Z
+B Y
+A Z
+B X
+A Z
+C X
+A X
+B Z
+B Z
+C X
+A Z
+B X
+A Z
+A Z
+B Z
+A Z
+B Y
+B Z
+C Z
+A Y
+A Z
+A Z
+A Z
+C X
+B Z
+B Z
+B Y
+B X
+B Y
+B Y
+B Y
+B Z
+B Y
+B Y
+A Z
+B Z
+A Z
+C X
+B Y
+B X
+B Y
+B X
+B Y
+B Y
+C X
+B Y
+B Y
+B Z
+B Y
+C X
+B Y
+B X
+B Y
+C X
+A X
+A Z
+C Z
+B Y
+C Z
+B X
+C Z
+C X
+C Z
+B Y
+B Y
+C X
+C X
+B Y
+C X
+A Y
+B Y
+B X
+B X
+B Z
+B Y
+C Y
+C X
+B X
+B Y
+B Z
+B X
+B Z
+B Z
+C X
+B X
+B Y
+B Z
+B X
+C Z
+A Y
+B Y
+B Y
+B Y
+A Y
+C Y
+B Y
+B Z
+B Z
+B Y
+B Y
+B Z
+B X
+B X
+B Y
+A Z
+C Y
+C Z
+B Y
+B X
+B Y
+B Y
+C X
+B Y
+C X
+A Z
+B X
+C X
+C Z
+A Z
+A Z
+B Y
+C X
+A Z
+A Z
+B Y
+A Y
+B Y
+A Z
+A Z
+B X
+C X
+A Z
+B X
+B Z
+A Z
+A Z
+B X
+B Y
+B X
+B Z
+B Y
+B Y
+B Z
+C X
+C X
+B Y
+A Z
+B X
+B X
+B Y
+B Z
+B Y
+B X
+B Z
+B X
+B Y
+C X
+B Y
+B Y
+C Y
+A Z
+B Y
+B X
+B Y
+A Z
+C X
+A Z
+A X
+B Z
+B X
+A Z
+B Y
+B X
+B X
+A Z
+B Y
+A Z
+B Z
+B Y
+A Z
+B Y
+B Y
+A Z
+B Z
+C Z
+B Y
+B Y
+C Y
+A Z
+B Y
+B Y
+B Y
+B Y
+B Z
+B Y
+B Y
+B Y
+C X
+B Z
+B X
+A Z
+B Z
+C X
+B Y
+B Y
+A Z
+B Y
+B X
+A Z
+A Z
+C Z
+B X
+B X
+B Y
+B Z
+B Z
+B Z
+B Y
+B Y
+B Y
+B Y
+B Z
+B Y
+A Z
+A Y
+A Z
+B Y
+B Y
+A Z
+B X
+B Y
+A Z
+C Z
+B Z
+B Z
+B Y
+A Z
+A Z
+B Y
+B X
+B Z
+B X
+B Y
+B Y
+B X
+C X
+B Z
+B X
+A Z
+B Y
+C Z
+B X
+A Z
+C Z
+C Z
+A Z
+B Y
+B Y
+A Y
+B Y
+C Z
+B X
+C X
+B Y
+B X
+B Z
+B Y
+B Z
+B Y
+B Y
+A Z
+B X
+B X
+A Y
+B Z
+B X
+B Z
+A Y
+B Z
+C X
+B X
+B X
+B Z
+B X
+C Y
+B Y
+C X
+C X
+B Z
+B X
+C Z
+B Z
+A Z
+C Y
+B Y
+B Y
+B X
+B Z
+B Y
+B Y
+B X
+C X
+B Y
+B Y
+C Y
+B Z
+C X
+A Z
+B X
+B X
+B Z
+B X
+B Y
+A Z
+B Z
+B X
+A Z
+B Y
+C X
+A Y
+A Z
+C X
+B X
+B Z
+B X
+C X
+A Z
+B X
+B Y
+B Y
+A Z
+B Z
+C X
+A Z
+B Z
+C X
+B X
+A Z
+C X
+C Z
+B Y
+B Z
+B Y
+B X
+C Z
+B Z
+B Z
+B Y
+A Z
+C Z
+A Y
+B Y
+C X
+B Y
+B Z
+A Z
+B Z
+A Z
+B X
+C X
+B Y
+A Z
+B Y
+B X
+C Z
+B Z
+C X
+B Y
+B X
+C Y
+B Y
+C X
+B Y
+B Y
+B Y
+B Z
+B Y
+B X
+B Y
+B Y
+A Z
+A Z
+C X
+B Z
+B Y
+A Z
+B X
+C X
+B Y
+B X
+A Z
+C Z
+A Z
+B Z
+B Y
+B X
+B Z
+B Y
+A Z
+C X
+C Z
+A Y
+A Z
+C X
+C Y
+C Z
+B Y
+B X
+B Z
+B Y
+B X
+B Y
+A Z
+B Y
+C X
+B X
+B Y
+C Z
+B Y
+B Y
+B Y
+B X
+B Y
+C Z
+B X
+B Y
+B Y
+B Z
+B X
+B X
+B Z
+B Z
+A Z
+A Z
+C X
+B Y
+B Y
+C X
+B Y
+B X
+A Y
+C Z
+B Y
+B Z
+B Y
+B Y
+A Z
+B Y
+B Z
+B Y
+B Z
+B X
+B Z
+B Y
+A Z
+B X
+B Z
+B Y
+B Y
+B Z
+B Y
+A Z
+B X
+B Y
+B Z
+B X
+B Y
+B X
+B X
+B Y
+B X
+C Y
+B Z
+B Y
+B Z
+C Y
+A Z
+B Y
+A Z
+B X
+A Z
+A Z
+C Z
+B X
+C Y
+A Z
+B Z
+B Z
+B X
+B Z
+B Y
+A Z
+B Z
+C Z
+A Z
+C Y
+A Z
+B Y
+A Z
+B Y
+A Z
+B X
+A Z
+B Z
+C X
+B Y
+B Y
+B Y
+C X
+B Z
+C X
+A Z
+A Z
+C X
+B Y
+B Z
+B X
+B Y
+B X
+A Z
+B Y
+B Y
+A Z
+B Y
+B Z
+B Z
+B X
+B Z
+B Y
+B X
+B Y
+B Y
+C X
+C Z
+B Y
+B Y
+B Y
+B Z
+B Y
+B Y
+B Y
+A Z
+B Y
+B X
+B Y
+B X
+B Z
+B Y
+B X
+B X
+A Y
+B Y
+B X
+B Y
+B Y
+B Y
+B Z
+B X
+A Z
+B Y
+B Y
+B Y
+A Z
+B X
+B X
+C Z
+B Y
+B Y
+A Z
+B Y
+B Z
+B X
+C X
+B Y
+B Y
+C X
+C Z
+B X
+A Z
+B Y
+B Y
+B X
+B X
+B X
+B Y
+B Y
+A Z
+A Z
+B Y
+B Y
+A Z
+B Z
+A Z
+C X
+C X
+B Y
+B Y
+A Z
+A Z
+C Z
+B Z
+B X
+A Z
+B X
+B Y
+B Y
+B X
+B Y
+B Y
+C Z
+B Y
+B X
+C Z
+C Z
+B X
+B Y
+B Y
+B Z
+A Z
+B Y
+B Y
+B Y
+B X
+B X
+A Z
+A Z
+B X
+B Y
+B Z
+B Y
+B Z
+B Y
+B Z
+C X
+B Y
+C X
+B Y
+B Y
+C Y
+A Z
+B X
+C Z
+B Y
+B Z
+B Y
+B Y
+B Y
+C X
+B X
+B Y
+A Z
+C Y
+B Y
+A Z
+B Y
+B Z
+B Z
+B Y
+B Y
+B Y
+C X
+B Y
+A Y
+C Y
+B X
+B X
+B X
+B X
+B Z
+B X
+B Z
+B Y
+B Y
+A Z
+B X
+B X
+A Z
+A Y
+B Y
+B Z
+B Y
+C X
+B Y
+B X
+B Z
+C X
+B Z
+B Y
+B X
+B X
+A Z
+B Y
+B Y
+B Y
+C X
+A X
+B X
+C X
+B X
+C X
+B X
+A X
+B Y
+B Y
+B Y
+B Y
+B Z
+C Y
+C X
+A Z
+B Z
+B Z
+B Y
+B Z
+B Y
+B Y
+B X
+B Z
+A Z
+A Z
+B Z
+B X
+B Z
+A Z
+B Y
+B Y
+B Y
+B Z
+A Y
+B X
+B Z
+B Y
+B Y
+B Y
+B Y
+C X
+B Z
+C X
+A Z
+A Z
+B Z
+A Y
+C X
+B X
+B X
+C X
+A Z
+A Z
+A Z
+B Y
+B Z
+A X
+A X
+B Y
+C X
+A Z
+B Z
+A Z
+B Y
+B Y
+B X
+B X
+B Y
+C X
+B Z
+B Y
+B X
+B X
+B Y
+B Z
+B Y
+B Y
+B X
+B X
+B X
+B Y
+C X
+B Y
+B Y
+B X
+B Y
+B Y
+B X
+B X
+A Z
+C X
+B X
+A Z
+B Y
+B Y
+B Z
+B Y
+B X
+A Z
+C Y
+B X
+B Z
+B Y
+C X
+A Z
+B X
+A Z
+A Z
+B Y
+B Z
+B Y
+A Z
+B Y
+B Z
+A Z
+C Z
+B Y
+B Y
+B X
+B Z
+B Y
+B X
+B X
+B Y
+B Z
+B X
+B Y
+C Z
+A X
+B Y
+C X
+A X
+B X
+B X
+B Z
+A X
+B X
+B Y
+B X
+A Z
+B Z
+C Z
+B X
+B X
+A Z
+B X
+B X
+B Z
+B Y
+B Y
+A Z
+B Y
+B Y
+B X
+B X
+B X
+B Y
+A Y
+C X
+B X
+A Z
+B X
+B Y
+C Z
+B Y
+B Y
+A Z
+B Y
+A Z
+B Y
+A Z
+B Y
+B Y
+A Z
+B X
+B X
+B Y
+B Y
+B Y
+A Z
+B Y
+B Y
+A Z
+B X
+A X
+A Z
+B Y
+B X
+B Z
+B Z
+B Y
+B Y
+C Y
+B Y
+B Y
+B X
+B Y
+A Z
+C X
+B Z
+B X
+B Z
+A Z
+B Y
+B Z
+B X
+A Z
+A Z
+C X
+B X
+A Y
+C X
+B Z
+B Z
+C Z
+B Z
+B Z
+C Y
+A Z
+C Z
+A Z
+C Z
+B Z
+B Y
+C X
+B Y
+B X
+A Z
+C Y
+B X
+B Y
+B Y
+B X
+B Y
+A Z
+A Z
+B Y
+B Z
+B Y
+C X
+B X
+B Y
+B X
+A Z
+C X
+B Y
+B Y
+B Y
+B Y
+C Z
+B Y
+C Z
+A X
+C Z
+B X
+B Y
+B Y
+B X
+B Y
+C X
+C X
+A Z
+B Y
+B Y
+C X
+B Z
+C Y
+B Z
+B Z
+B Z
+B X
+B X
+B X
+B Z
+B X
+C X
+B Y
+C X
+B X
+C Z
+B Y
+B X
+B Z
+B Y
+B Y
+B Y
+B Y
+B Y
+B X
+B X
+A Z
+B Y
+B X
+B Y
+B Y
+A Y
+B Y
+B Y
+A Z
+A Z
+C Z
+B X
+B Y
+B Y
+B Z
+C Z
+C X
+A Z
+C X
+A X
+B X
+B Z
+B Y
+A Z
+C Z
+B Y
+C Z
+B X
+A Z
+B X
+A Z
+B Y
+A Y
+B Y
+B Y
+A Z
+C X
+B X
+B Y
+A Z
+B Z
+B Y
+B X
+B X
+C Y
+B X
+A Z
+B Z
+A Z
+C X
+C Y
+B Z
+B Z
+A Z
+B X
+B Y
+B X
+C X
+B Y
+B Y
+B X
+C X
+B X
+B Y
+B X
+B Y
+B Z
+B Y
+B X
+B X
+A Z
+B Y
+B Y
+C X
+C Y
+C X
+A Z
+A Z
+B X
+B X
+B Z
+A Z
+A Z
+C Z
+B Z
+A X
+B X
+B Y
+B Y
+A Z
+B Y
+B X
+B X
+B X
+B Y
+B X
+B Y
+B Y
+B Y
+B Y
+B Y
+B Y
+B Z
+A Z
+B Y
+B X
+C X
+A Y
+B Y
+B Y
+B Z
+C Z
+B X
+C X
+B Z
+B Y
+B Y
+B X
+B X
+B X
+A Z
+B X
+A Y
+B Y
+B Y
+C X
+A Z
+B Y
+C X
+B Y
+B X
+B X
+B X
+C Z
+B X
+A Z
+B Y
+B Y
+B Y
+A Z
+A Z
+B X
+A Y
+B Y
+B Y
+B Y
+B X
+B X
+B Z
+B X
+B Z
+B X
+B Y
+A Y
+A Z
+C Y
+B Z
+C X
+B Z
+B Y
+B X
+A Y
+B Y
+B X
+B Y
+B X
+C Z
+B X
+C Z
+B Y
+B X
+B Z
+A Y
+A Y
+C Z
+B X
+B X
+B Y
+A Z
+B Y
+B Z
+A Z
+B X
+B X
+B X
+B X
+B X
+B Z
+A Z
+A Z
+C Y
+C X
+A Z
+A Z
+C X
+B X
+B X
+B Z
+B X
+A Z
+B Y
+B X
+B Y
+C X
+A Z
+B Z
+C X
+B Y
+B Y
+A Z
+B Y
+B Y
+B X
+B Y
+C Y
+B X
+B Z
+B Y
+A Z
+B Z
+A Y
+B Y
+A Z
+B X
+B Y
+A Z
+B Y
+C Z
+B Z
+B Y
+C X
+C X
+B X
+B Z
+B Y
+B Z
+B Z
+B Z
+B Z
+A Z
+B Y
+B X
+B Z
+B Y
+B X
+A Z
+A Z
+A Z
+B Y
+C Y
+C Z
+B Z
+B X
+B Y
+B Z
+B Y
+A Z
+A Z
+C Z
+B X
+B Y
+B Z
+B X
+A Y
+A Y
+B Y
+A Y
+B Z
+B Y
+A Z
+B Y
+B Y
+B Y
+C Z
+B X
+B Z
+B X
+B Y
+B Y
+B Y
+C X
+B X
+B Y
+B Z
+B X
+B Y
+B Y
+B Y
+B X
+B X
+B X
+A Z
+B Y
+B Y
+C X
+C X
+C X
+C X
+B Z
+A Z
+A Z
+B Z
+B Y
+B X
+A Z
+C Z
+B Y
+B X
+C Z
+C X
+B X
+B Y
+B Y
+B X
+B X
+B Y
+A Z
+B X
+B X
+B X
+B Y
+A Y
+B X
+A Z
+B Y
+B Y
+B Y
+C Y
+B Z
+B X
+B Z
+C X
+B Y
+B Z
+C X
+B X
+B X
+B Y
+B Y
+B Y
+A Z
+A Z
+A Z
+B Y
+B X
+C Z
+B Z
+B Y
+B Y
+B Y
+B Y
+B Z
+C X
+A Z
+C Z
+B Z
+B X
+B X
+A Z
+B X
+B Z
+A Z
+B Y
+B Y
+A Z
+B Y
+B Y
+C Y
+C Z
+B X
+A Z
+B Z
+B Y
+C Z
+C X
+B X
+A Z
+B Y
+B Z
+B X
+A Z
+A Z
+A Z
+B Y
+B X
+C X
+B Z
+B Z
+B X
+B X
+B Y
+A Z
+B X
+B X
+B Z
+A Z
+C X
+B X
+B Y
+B Z
+A Z
+B Y
+B Y
+B Y
+C X
+B Z
+A Y
+A Z
+B Z
+C X
+A Z
+A Z
+B Y
+C X
+B Y
+B Z
+C X
+B Y
+B Y
+A Z
+B Z
+A Z
+C Z
+A Z
+B X
+B Z
+A Z
+B X
+B Y
+C Z
+A Y
+B Y
+B Y
+B Y
+A Z
+B Z
+A Y
+A Z
+B Z
+B Y
+B Y
+A Y
+B Y
+C X
+B Z
+B Z
+A Z
+B X
+B X
+A Z
+B Z
+C Y
+A Z
+A Z
+B Y
+B Z
+B X
+C Y
+B Y
+B Y
+B Z
+B Y
+B Z
+B X
+B X
+B Y
+B Y
+C X
+C X
+B X
+B X
+C X
+A Z
+B Y
+C Z
+A Z
+B X
+B Y
+B Z
+A Z
+C Y
+A Z
+B Z
+A Z
+C X
+C X
+B X
+B X
+B Y
+B Y
+B Y
+B Y
+B Z
+B X
+B Z
+C Y
+B Y
+A Z
+B Y
+B X
+A Y
+B Y
+B Z
+C X
+B X
+A Z
+A Z
+B Y
+B Y
+A Z
+C X
+B X
+B Y
+B Y
+B Z
+A Z
+A Z
+C Z
+A Z
+B Y
+B Y
+B Y
+A Z
+B Z
+B Y
+A Z
+A Y
+B Y
+B Y
+B Z
+A X
+A Z
+B Z
+B X
+A Z
+B Z
+B Y
+B Y
+B X
+A Y
+C Y
+B Y
+B Y
+B X
+B Z
+A Z
+B X
+B X
+B Y
+B Y
+A Z
+B X
+C X
+B X
+B X
+A Z
+B Y
+C X
+A Z
+B X
+C Z
+A Z
+B Y
+B Y
+B X
+B X
+A Z
+C Z
+B X
+B X
+B Y
+A Z
+B Y
+B Y
+B X
+B Y
+B X
+A Z
+B Y
+B Z
+B X
+A Z
+B Y
+C Z
+C X
+A Z
+A Y
+B X
+B Z
+B Y
+B Y
+B Y
+B Z
+B Z
+A Y
+C X
+B X
+C X
+B Y
+B Y
+B Z
+B Y
+C Y
+C X
+B Z
+C X
+B Y
+B X
+B Y
+B Y
+A Z
+B Y
+A Z
+A Z
+A Z
+A Z
+B Y
+A Z
+B X
+B X
+B X
+C Z
+B Z
+C Y
+B Y
+A Z
+B Z
+B Y
+B Y
+B Y
+A Z
+B Z
+C Y
+C X
+B Y
+B Y
+B Y
+B X
+B Y
+B Z
+A Z
+B Y
+B Y
+C Y
+B Z
+B X
+B Y
+B X
+B Z
+B Y
+C Y
+C Y
+A Z
+B X
+B X
+A Y
+B Z
+A Z
+B Y
+B X
+B X
+B Z
+B X
+A Z
+B Y
+C X
+C X
+B Z
+A Z
+B Y
+B Y
+B Y
+B Y
+B Y
+B X
+B Y
+B Y
+B Z
+B Z
+A X
+A Z
+A Z
+A Z
+A Y
+C X
+B Y
+B Z
+B X
+A Z
+B Y
+B Y
+B X
+B Y
+B Y
+C Y
+C Y
+B X
+A Z
+B Y
+C X
+B Y
+A Y
+B X
+B X
+B Y
+C X
+A Z
+B Y
+B X
+C X
+C Z
+B Y
+B Y
+B Y
+A Z
+B X
+A Z
+C Z
+B Z
+B Y
+B Y
+B X
+B Y
+B Y
+B X
+A Z
+C X
+C Z
+B X
+B Y
+C Y
+B X
+A Z
+B Y
+A Z
+B Y
+A Y
+A Z
+A Z
+B Y
+B Y
+B Z
+C Z
+C X
+B Y
+B Z
+B Y
+A Z
+B Y
+B Z
+B Y
+B X
+B Y
+B Z
+B Y
+B Z
+C X
+B Y
+B Y
+C Z
+A Z
+B Y
+C X
+B X
+A Y
+B Y
+A Z
+B Y
+B X
+B Y
+B Y
+B X
+B X
+B X
+B Y
+B Y
+C Z
+B Z
+C X
+C Z
+B Y
+C X
+B X
+A Z
+B Y
+C Z
+A Y
+B Y
+B Y
+B Y
+C X
+B X
+B Y
+B Y
+B Z
+C X
+B X
+B Z
+A Z
+B X
+B Z
+B X
+A Z
+B Y
+B Z
+C X
+B X
+C X
+B X
+B Y
+B Z
+B Z
+B Z
+A Z
+B Y
+B X
+B Y
+B Y
+B X
+B Z
+B Y
+C X
+A Z
+B Z
+B X
+A Z
+B Y
+B Y
+B Y
+A Z
+A Z
+C X
+B X
+A Y
+B Y
+B Y
+B Y
+A Z
+A Z
+A Z
+C Y
+B Z
+A Y
+B Y
+B X
+B X
+B Y
+C X
+B Y
+C Z
+B Y
+A X
+B Y
+B X
+B Y
+B X
+C Z
+B Y
+B Z
+B X
+B Z
+A Z
+B Y
+B X
+B Y
+A Z
+B X
+C Y
+B X
+B Y
+B Y
+B Y
+C X
+B Y
+B Y
+B Y
+A Z
+B Z
+C X
+A Z
+B Y
+C Y
+B X
+A Z
+C Z
+B X
+B Y
+B X
+C Z
+B X
+B Z
+C Y
+B X
+B Y
+B X
+B Z
+B X
+B Z
+B Y
+B Z
+B X
+A Z
+B X
+A X
+B X
+B Y
+B Y
+B Y
+A Z
+B Y
+B Y
+B Z
+C X
+B Y
+B Y
+B Y
+B X
+B X
+B X
+C Z
+B Z
+B X
+A Z
+B Y
+B Z
+B Y
+B Y
+B Y
+B Y
+C X
+A Z
+B Z
+B Y
+B Y
+B Z
+A Z
+B Y
+B Z
+B Y
+B Y
+C Y
+A Z
+B Z
+C X
+B X
+C Z
+B X
+B X
+B Y
+B Y
+A X
+B Y
+C Z
+A Z
+B X
+C Z
+C Z
+B X
+A Z
+B X
+C Z
+B Z
+B Y
+B Y
+C X
+A Z
+B X
+B Y
+B X
+B X
+B X
+B Y
+C X
+B Z
+B Y
+B Y
+B Y
+B X
+A Z
+A Z
+B Y
+B Z
+B Y
+A Z
+B Y
+B X
+A Z
+B Z
+B Y
+B X
+B Y
+A Y
+B Y
+B Y
+B Y
+B Z
+B X
+B Y
+C Z
+C X
+B Y
+C Y
+B Z
+A Z
+A Z
+B Y
+B Y
+A Z
+B Z
+B Y
+B X
+A Z
+A Z
+C X
+A Z
+C X
+A Z
+B Y
+C X
+B X
+B X
+B Y
+A Y
+B Y
+B Z
+B X
+B Y
+B Y
+A Z
+B X
+B Y
+A Z
+A Y
+A Z
+C X
+A Z
+C X
+A X
+B Y
+B Y
+A Z
+B X
+B Z
+B Y
+B Y
+B Z
+B Y
+B Y
+B X
+B Y
+C X
+C X
+B Y
+B Y
+B X
+C Z
+C Z
+C Z
+C X
+B Y
+C Z
+A Z
+C Z
+B Y
+A Z
+B Z
+B X
+A Y
+B Y
+B Y
+B X
+B Y
+B Y
+C X
+B Y
+A Z
+B Y
+A Z
+C Z
+A Z
+B Y
+B Z
+A Z
+B X
+B X
+B Z
+B X
+B Y
+A Z
+B Y
+C X
+A Z
+C Z
+B X
+A Z
+B Y
+B Y
+C Z
+B Z
+A Z
+B Y
+B X
+B Y
+B Z
+C Z
+A Y
+A Z
+B X
+B X
+A Z
+C Y
+B Y
+A X
+A Z
+B X
+B Y
+B X
+A Z
+C X
+B Y
+B Y
+C X
+A X
+B Y
+A Z
+A Z
+B Y
+B Z
+B Y
+B Y
+B Y
+B X
+B Y
+B X
+B X
+B X
+B Y
+A Z
+C X
+A Z
+A Z
+A X
+A Z
+B X
+B Z
+B Y
+A Z
diff --git a/input/day_3.txt b/input/day_3.txt
new file mode 100644
index 0000000..5533a94
--- /dev/null
+++ b/input/day_3.txt
@@ -0,0 +1,300 @@
+zBBtHnnHtwwHplmlRlzPLCpp
+vvhJccJFGFcNsdNNJbhJsJQplQMRLQMlfdfTPCLfQQCT
+GPhjcjhZDjWtnSVH
+BNhHVhrGNVTbDHdDJdJRPJdSQQSJwPjR
+lvtsfbsqzwSnJcvjSm
+MftttFLftZMLgtgMbltMqZzbDNrTpVGhNWrDTrpTGNpZGZhD
+VSSHcTgTtTdtllZlzmmbljTn
+RqMqsFfQLLFLQFMMfRLPZLvPpCfWrbpmCbjCnfjlWmnrmmnm
+hqRDqPDRsqNHwtHSNBZtJd
+tNFDpDFrtdjfmjjjFmFFdScpZhZScTJgpHccHhMJgS
+lLzSlSCQqbsVhBghggBZgCcJ
+zRLVVLQnvQqVVzRldfWrwffjjdwSdfjv
+bpWqqqWvHBpwGBCCRl
+hJdjdJFQqdBBDMMC
+tFFzJZFtJSqtZJQsWLbNSTnffHfvTH
+lFhRZhFjPlqMlJqZJlJcRLwrLrwStRwtsVVtVSrgRV
+WcpDvDfBmpDHzWBDbpbmWmNVSSTzLTtrVswgttVVzwwr
+pbWfmGBpHfDmWnvvGbmWnjjMqPJMlMFPdGcjqPqPhP
+NjFNRlpVLFCSSlbBWWfw
+pssPZQQsMnzmtnQPttzDBbBJBcrrJWbrZSBJSbfC
+QTHPHspMNGHdhvRR
+QfPdSJfFJmthSthtwbsNLbPLlLTLpbvP
+nHnMBnZqqgBMnWrZMqnZVcbCqRwNsvblRwppbllTsRNp
+nZHBHznMnWgcrnVBtjFdfmzQNtNddjNF
+hFhfPghppPhpRNhzsjsvHVzjpsGnWz
+tTjlCCwMqtdMjMctGJWHwWnVwWnwvWGs
+rZdrjBBtqdCtlcdgFZQLfhRLFSgRNP
+RDHSWrJWffJFlJCgCMCDjCvzjPMP
+QtGTndBwBtNzBVjBCMgB
+LdwwMpTdwsRHsqSHqHJl
+RfsfzvLLFvFzCSvSbDsTpTGMPMZPPTMt
+jqWBjwBBNwWqwPGZbTwVwVtD
+BnhgglhhNNngqjBjHNWrZLlFLSCJSFFCCQzQvQFCFF
+HLvLDQbvnDQDvbHTLhntSnGBSlfGldddcmfMMf
+NgFjZjrZZJrlfJfSVcBJGc
+scWCNFZpsjzrDLwLhbQzhQwD
+SlqJlThDPqpwSTwhcbDdbWDbZGcZNcDb
+MsnWWjHjvLvfscjjgdzNdbgbcc
+vQQvWVQFLLHfHVBWfsfmFFpJRhhSplqlRJqpBwlqTCPC
+DZbDzzZDjQbPGZFFSSgSlFCzTgzm
+qLnvwvhddrqMrwrCTLLFJjmtSlFlSH
+VdhvsWqdVWvvRhsvqbpbPcZfPpjZGBQNRj
+mJNtNFmzDZtzdzrLtwwRqJSchgfGcRfwRB
+pWpjQjCTQnHMWCCpjQpHvTqcwTwScfRcBcSGBRThwS
+MQHjvjVCCqsvljWnVQzLtNPZzmzLVNLddtPN
+QVRPRVDgsRjLssnL
+TTGDJDJfbfLHSnsMWWbs
+qGqqTFFDqgQgQQQq
+nlMnRRjbMjCdJVQJCZ
+nGqfLwfNLFNLnPPGFVVCdVGZJtCtCCVzJz
+LHHfPNHnPqqLwqPqDPWfNFvMglbhhbMgmclgcllDmgmrcl
+cLLWWSThtdLpRcddcgPRZFDMCVPPMCCPCPCZ
+NfGbGNzrBNffGNJjbPPZsZmZZPmDHpMH
+zlJBfzlQzNjNjfJcpwSdvWhcvLwQWt
+cVVQfVCJVrVcTJnfNvlDFmDrmlvrFWlL
+snZHpMhZtMbtPNvzHWWvNFNvNW
+gppnbbbRgMnZbswRqRwbqTcCCSTCJJdGjgfVGTdcCG
+jplgNdrHrrNZgdHmlHNJHddlDSPPSTlzTSlTSDSzCQLfzf
+vscvWWWvGWGGscbFMpRWFwQTPzfLQwQwPfLbzSzzDL
+GvGBWpqcMVRNNZHgdHdtBJ
+LchbZhjjZFjwSmPRqRffqbdtggdR
+vWHMWlHJdGqtRqHV
+MvzCJlnMnlTNnNNLLdhjjCdjjhDjjL
+FNCllHFvCGvwQcPQJfgfmwgh
+zjtRpbDLjtsrzbLLQmfBTgTBQQfhbfQB
+WLgqRzqsrWvFGFZFZC
+qjLlNcLjcNWpQLlQMmvmhCvCgsMZZghj
+tGSDJtRGJzHMMGDVZCfvmfhzmZZgZsmv
+BSSRDRHBGHtSSSbGJSwHbNcLQddqMNlrqcMQMldBWc
+JSfctrtctDpszHvzVQHr
+glCWjhWmFjlmlhmdWPhVVznvcHjszbvvpHvznv
+FgBmFhCBCGFqglgmhCFmSTSRLJLLZfSRJcDSGMtM
+vZGlFFtLMLdShSSShRVtVf
+rQNvmznWPNCPNsrCsbWbsPCvjShhhfHBBHJjSJRhjSRnHhSj
+mCNsQCmqszNcQzrzrrzWvGgGMgpdFpMLlFZGwcLDdg
+QJRJQDlcqLlWbNGL
+HCnwwsCrnstLWqtWNgZNgg
+rsnTrTCHTnnVwnsVPqqDQcRjcczMPvPRzM
+qCzjqnzVdzrdhnhddDbDBMPttcGBDBDPnc
+sZgRQWHgWHHLsgsRRZsJbpJlDcDGNcTDFtGNFFcJNFPBPBTc
+WggbRQSRRgRSsWWmbHqvVffVwhzvCdmfhmdV
+lhqWcNpQGcNmmHmNPWCsQzQsgrQrBMCMbMVM
+wDLFFDJvSFFZRDZSzCrzTzsRgVWbCrMW
+dFwDtZfdjFZWFFfmHGPnPPmqfmPNcN
+lcMRNJRGGLJnNVFbVrwrwZrD
+tjCzQjQhQwgWFShVFS
+ffHQsQssQTzBsPnLpMPRwsJP
+MQSMSBSRFMQLJChLChjTBh
+WmVlPrwnpwDlflNpDrNnDlDwThJCCdLJhhdhCfJTccGjvscd
+gnDVnNnwgglwDwptSZFzgQHqbjZgZZ
+nwBcFgwTDcNrpZMD
+WQWCLZmvhMRvNjsNSD
+CGGWmZGHHhtVzHbTqgTdbgzz
+RmcTCwvssRbsThTcVRJJfSPqfJwJFqfjfMFq
+zQNZDWtQlDZGBQPfFQqjJLjL
+rrglggZGWnrnrrHlDhsbsPTVCsCVsTRpHv
+wFGfzSvCPGttSzqwmtqmvvPRDDRCWgWWDTBTMcBcBWbCRM
+hVJJHQHnpWnDTNnnDb
+LJsVVdhQqvmdbbSf
+srlJztzsVVsSsVtRlNllTWzzmqGhqWLPCDCgmChPLDdqCmCP
+bZQMZpbvMBMgmDGmZLSPZd
+MpScMSMpvfjMBcBcfMfSBnzlTjssNszrNrtlTVzlzFVN
+rCtgrgClprGGClnJCZmwtMjZRjbjjcjZQv
+PWVfBHWPdbNfbbRmRj
+sPsVqFPsHWLhBVVqHFqPVddWSDLJgpTCnnrRRLGpJSSTRrgT
+zjqpGjrQjGqSHCVvCrRZDN
+cTdshMhdmcMNmddRHBhvCCBCCvHZDC
+JTmTmJnLTdwzNQpPWJWgpP
+BmpZmrzZnznHbpprSbQSQbqdSVqbPQcV
+fRGTGJZRTTDwJTJRGDfgJgNFlSSFcldfdccFVlPlFFQPSQ
+GvTTTZZLmsntzmCL
+VhMcrmbhvzMSnhvftbRbllLtglBBtf
+HqqqJqDqPjJPNjjDVFDZCdqBtRtGBGlGRfQQgttQfHlTQl
+pCZJPqqZpmhvhpVh
+dWLBJHJhGJGMBJRcDLDSQsSQpvcR
+ZlnnPqglblfRRpSvSsnz
+sPTgZVjjmwVTljrwTTlbwVGdJhBNNdFdMGNHHJMjBNFN
+FhFrfbfgbLRdfqfrmvDgLdjrcQtSNStHHHQlSjJJPllt
+CnspzZWTpCnMVzzZZGZRCzttHNjNlQlSNtNlNjVcjlQS
+GCZsZBRwnvwfbqwFwb
+bZnJFJgLFRnqQZqJQJFQGpCLNcGlLllClNtccjGc
+rVfvwPDhPHGtlcbClr
+mBhshsfMvBvqsQJdTbgnqQ
+jgWHqMSWMGqWjWjqbWGJQDfVqLfrfDfJhVLfTr
+pPplwsRZPFZFtLhfwgfwrhJL
+zlRsdgFcRgmjdBCMHdjHWB
+qJSGJSPQWzcprtQZtt
+mBMVfsNBnZzcNtcc
+LMLBsmMlvBgFsghVVvfgLBvbJJSqgGHqPGPtCWwbJHqCPG
+ZvZLcdMGVMlHDvDpvqhH
+NNSrQNbJbrTnnWZDDZqqhqpW
+wbgNJrsrCwwJQZbsrJBFzjCCdzGdjcGzMdzj
+JbVmdVLJJJdQMnzmmMgHjPqqjNgvqwngHNNP
+ZfffDZZsRpcpRDcCRrlpplcWSSgwgSwjvvsjPSwhNSWggh
+cCtfppZrpjtMMmdQQTLz
+TtbnmbdmTmgTlPNhqvqj
+wrwrLsVZRsJJJsfHjvPPWfhjHqRN
+sDZwDvsCCQLJZQJQsMCMzZBtSMpndcSFnnSBFtSBmdBc
+mWFTZdmQdZFrFQbCRsrspjSjnvCLRS
+GwlDqcNHDzwGfHSRqCgJsSpnvpSL
+NGlcNwHLLGfDDHDhDwDcwVczbPddZtMFWttWWtdPPdQdhPWd
+mnfcZgcdZqnqdfFqPmHfhqsbgVMCJNMtvCJtMvtblTJtvb
+rRLDDjPSjjPDGBQSBNbtLVtbMNNJlTMtbl
+SzjDDzRRpGQDDDPHzdsmnnhsqcqdFq
+ZDGNRDGjSdwnnmnsVNsHJJ
+tMBWWrddLPLhvWTTPLccvmmbVpgsJHmccppJ
+ClPrtBWWrhrFLBPlCRzjzGqdRzjRdRGZjF
+csTRNQNJcNBDLfhfMf
+qGmWpGHqrqPLChPRhVFPDD
+tgHrtnrrJnZRTZcv
+FLqrfmLDrqCmqjTqcbGqRTGVvb
+FMtWMSWzzFStJzPzhWzhQvTvHVjjTjHTTHvbHc
+PgtWWstWtSpZWPzWwnrBsdBDdFLfllLlfC
+mThbMDMQDCDbwLqWpqPpdhwR
+zgrcffgHNZltZSgHLsRsLLWRWgLqppsW
+SVlSrfSHlSSVlrJfVctlNDMCmMFbnbRDbDBFJFbBRM
+PrBrWqtRPdBLLrBwqpswgpwhgpnZhhzsgw
+FTFRSVJQVJflFfQQgggGMZngGQZszZ
+TbmfFJFSDFblSTDSFFbmVSDrPLLWtcmBqqRmBtmcLtcrjP
+DjPsMwDjLVVTsvNNRTNTRT
+ztdQQHqHlFNtfRNNNMgg
+FzhMhHQlDcCrhCCc
+zSHGzzmHgnnMDLTNTG
+lPVBtvhQjpNSMWTLBD
+VCftbjvbVCfPbZwsJsrSgSSZwC
+CbwgmvMnmnCwMmwRQqJBGBgHZHpJHdtdZpJt
+zVSlNSDlrzNhqlNTScDzVWfBBZZZZGBstGsdsWFpdHdJsW
+NDlLzhrVcqRPCMRwLLLw
+TjTHHLwnLjVlTwLjgVfvsFvDsdWfvDvFMd
+qbRRRpmpcmDcczppztSqSvWFssFGfWdMvfQWdfsG
+RZpqDBmtrzhzphjTgjHlnwjgJhgJ
+dLmMgdgzwDLzDWFhBWvzFzzBZJ
+tTVcppbSTfstTMMHfTbhBchhJFCWcjWBZhjGGB
+SSSSNbsNRpRRsRrfVHfRpNtlPgQDLPdMmlDLlrPnqPdPLl
+qqbTCSqdqqFZdRLZhwhZ
+HWWlHtlrBfGtVssnsLnHfJVPPMMFzhPRwMPwFhzPZzPMGM
+nfmtsrlsnrfVnHJrVBWlsVfgbbNTNSvmvvpcTjLjLbqvvS
+GGhFvGPFcThqffPdnfNLqZZCSwtQSwZpwQQBsL
+RglMRrJJgHBCBZSQQpdr
+WmbRHHbzDgJMDzRDMdWmWHzHNFFvvGGhnvVvvfcvnFfcbvnT
+QsfQmsLfZZZcshnJ
+dSgdWgSVVFvzSpqFdqTgWRHbJNcbZNCTJCNNZRRCCh
+FcpVjgDvVVFdVWFvzjwwQtBMLtBBGDwftPrB
+rqsRrHsvsPqswNcJcNJrnnBrNn
+bFjgGFdbVRNNnpRQpV
+GSthhggGDSvMRqtHvMfM
+ZwVPgMsgVsGzVsRZpgpzzgpFMrNbbLFrDLFFrrSDLfrNBN
+qvnjBhQhntbfDLrF
+CJlHHcHcTWqvpBdsWRpdPdgs
+BjmTDjJBCBWrgQRPFlWWlW
+dHphshtdtVHVhpJqspdvRrqFPgrLPPFPrrRPvQ
+sdMsMtStVszpwMzHjJGjCcZjmScNfCDf
+DmGdDffgDSDDdJstqdJldlRt
+MhnvMCZCbbZHMvsCHtrcVrPjJcRqVtlt
+LsQbsFZvZhQzZwhQWTNgBWpNwSGpTmfS
+RRJQnCzbZZLTZJCBtWvFtsfqBqtfWb
+prjlChGNldGNdlSVMhWfqWtfsvwvqsFtdtsq
+GGjNDNhpMGMGVhrnZZTzcTHCCJcDHc
+RmbMmjgpPjMBsBMfchhVsc
+HwFWFTztSrtFpcQvBsSqVscBBC
+zWwnJFHtWWHDgbGgdpGpnl
+mnbWbRRLRFnmmWcCDTBVwCDBlwNW
+ggJPtpdHGfdZtMHgtZgVPPBCVsPNBcsBTTDDCC
+hpvJJTpGhdhtJdMHqvmmnLvSbmnFnRFm
+WWtrWrNgVbRjMrQCNzqJFwQJFNTJ
+LdHPhcdchQQssLzJrz
+pBccnHpnrrcGHnnSlWjnRMSlbt
+NMMfNFnZgMVThhTMcgTDJDJjsVvvJJqJmHsqHG
+LQpwwprCQzBNBdGjGjHswswdvm
+CBCzzCrbWbSlNQnTRgPPfFRWnfgc
+RFwHVQRwFgTQSFVhdsdHsBdDBnnqnq
+LGftLtPGGMzlNrhlPqPsrJ
+fvGpWpMtccpTwwpRRQhh
+TTJCGdTGtZRQQCnzcnCv
+FWWHPSFNFbDbDDqSWnVmLRRjRRQLhcmLjS
+qPwPWwFppbwggGZGfdJZgdnGdd
+zSTWzrzWTLWpCtCGpqqGgplc
+nZWwsJVZZBnJHJCclHllgtChgCgc
+DFnVBJsFssVVFBFnBdfvjDSmTMWzrmMfRmTv
+MJmgMssrsggqqMVstbwTcTbPbTTwThmw
+NRBBGRjHVRRcRbCp
+QnSfzLWzNHzNVQQVjrglJMsMFvgJdFWrgZ
+ggLLGnhgnPvJHZnN
+VBtmVSldbSBVlcNPHvjmNcwNZZ
+tdWqSVSSBztVWGrThLhfrfvG
+TDqrjdSwLqDppdTCdzPBFmmjQmhHFPFQhPFR
+zlGbMcVcVtsPHFRhWRRsPF
+btgvlVVcDZZZqgrz
+DgwlgbbFDDjjPTHDrmddPhPV
+WqtMBBtQsttMNWQBqsbJpGGzdPdTHLVmTzJhmTPhHHPTmH
+qQsqGZNQtZGMNsNtZpFnjnCRbZffwwSRljFf
+gMdFLCdnMZCTFFCqnTgWLCHfSgPgPHStcQQmfSBBSfHg
+vrwwrwzbGjjswjvhGGsjPQmqRmHPbBtcBQtqfmcH
+qzJllVsGVGljjsrzwDzhwzDGTddNLFnZWNdpCVWTNTZTLZCF
+LtwMhDtctwbwwppdWBJQJBWPvPfDfqvG
+FTzrNrgSRFrgzFRHNVFQJvlqHjBvQWlQWqPBfq
+sFgNzmVmNzgTvVTMwhMhstMwZtsbsc
+MrBDQVzzlrvhQzQrDMVQrzrzgRJnRRwwRbwSwwVRRNSgwwwJ
+qFTPTvfTHcqqncpcwR
+LmtdGGPmTPGCTLHLWsZMhvZMMMzrzzdlMQ
+ZVNpjfpZNpfNgNjzNVfWtnbbWmBHtsZWBSZBGS
+MrDrQvvDrPLDMvFvdmBGGsBBCtsHrnrGCm
+ltRMwLLDDRlvQwvlQcwhqfcJNpgzjJpjhJ
+sRRRlRbcFbBBdnFBwCGppNvGrTCDDGVNlr
+PPSLQzHjzZZPLZPjgTNTgpCbVJvGrNCTGr
+ZLHHPQjhQmWWSRRnssdtbnmfwF
+GRwrMrHJGwJPGWsgfqQgsc
+VbTvLQCZLSWWsgWf
+TVDvVCvppvTDmzZVTbZpTzBBNQQQJlJBBJBNNJmRBwRH
+shJRWJsjZGNjSTrjFS
+dMLCddggldQzMCCVgzVVLmLvTwNFFSqpNSqSbFGSqTTpMTFN
+VGQvVglCLcVzgdddCDVvlsPZRRBDJPHZWZZnBsWJRR
+CrwlwhRCMrswnsHBFccHHWFc
+QJTmtfQgLtzQfLQfdPcWSFHHDDSpcFpFBg
+jTQTqbfQfmLbLQJbJrRCWjljZGjNrZlZlC
+JmthDmLShtJmHphphJQCwjdjdFDzFgzFdgdNlC
+sbMTVBrWMbNvVMnsWMnVzjsjwCfjFgfZzfdgdzlj
+NvqbbBcMMPPSqLSpGGthmp
+RfGWFHlPFFNWGFZRZBjvwCvzBwhhrvvjzmrr
+sLJSLMSTSJTbStJtMSqSqbpMrvmrzWdvhmjDCzzwrrpjdDDv
+SbQqsqsWcZPcQGFG
+BjqbMqMVBsfqGqFqGLmF
+ZZQbQPddPcwbPnRQltdtQZdnmFNrvfhGrhrWWFNWWtmNFNNW
+dJJQccnRPpcbQcMHsSgSMsDMTJSg
+WWGBBvPflnWbBWhvhbPvNfnnVCFZmVRVZmVGMVwRLCCCGwVC
+gjszgTMrgzgqCRRdmJRjJLVw
+grzQHzqczMSzqSHcgQsqPvPlbNblpPhhPPbHvnhp
+sJDDNWdnRLTTvqwSFPCmLCCrCq
+thzplgfjglflFcbMclpppMfcwPqCZQCmqCwrzCqmQmHSqPqq
+MhcpFBMBlhjbBTdnNJWvNvsvBd
+czwwghnWWfcfgwfWthfrvVvrjdrdvDDVrbzrLF
+RHPPMRpQPRMPPJRjJQsZsrrvvJBDDVDVdFqrBrFdBv
+smjMsGZHRsHSmRQNGHPpSTwwttCflwngnChcCtWW
+bprrrwrtLDtrWwrQjRDQDbPPVHVmmmmHNWlPlVNPZZlv
+hqqhfnBCTfnnhzJwzsqzfPZZMCCVZVHHFvZMFvZmlC
+TzhhdJTqJzcBdJJnzjtQrLdjwgLtpbgrLQ
+qzQvzzgWSCqtqqGpddGc
+jLrZNZhZrNRLHNffhrjNjNdtdZtGcPFwFwpbGwbVpdwC
+nHnhrLNCCMHmhHBMhrzvgJvsWSWMWzzWzSlv
+RzcbzdRFzbbzbzbFdZFTHMZPhVhVQMLrlrQPhLZlMM
+BNGfBvsNttVmMhlMLm
+BwGjpllswfjwpcFDWcWcbpdb
+SjzpswrLSDjVSpwlmZJBTBdNJLvBNvHQZT
+rCcCtbqgCfthggtbGGMqqghqZQvvQTBNJQHQZQTcZTJFZFFd
+CggGMtqMfWbbGghPhhbCMtmsSppSspjpmWzjVSWlVrrm
+PmWTPThTQWnLWQFl
+VNcSVfMbtsddBQNnNpdl
+sSjctwjVSzzccjgnTnDTHRDhqjRR
+WfMWfCNCjWWHNTccMjRjfRcMbqSwfVwqwsfGGbssrJSrswVw
+llLFQLlvlPFnhQBPBZQBqvBwzSzGGhShJVwShmsJbbmzSG
+lnPqvQZBFFBnnpgplFvtvHDjTdcTjTMMjCRNCMWgRC
+rprFNFFNjNLmMdgcqL
+BvzCQQbBQgffsDbvVHMdbcVqmLVqlmqq
+JvJCzBDJwnsRnQDszCBnnnQBrjZPjFpgZFTFZRpTrpZFGFtT
+wBHQQZHVCcpwDgdZdMsZjvMZFn
+GPSzlNlJLfzzzvsWdWLMmFWLMM
+NfqGSfrTNzRTqJfRbptQHFQFrwrFHBHw
+sNjVMVNVMzPzQgghcMsNzJtjSJtTFDTJtJnnDLjDnL
+CHwrdCpvCrwrWdpZqcpFttJSFJTLLHLJfbnbfD
+qrlZCwlqZrqqpWdlRqCRqdqcVNsVMzQzmNgNPBsRhVQVVzMs
diff --git a/input/day_4.txt b/input/day_4.txt
new file mode 100644
index 0000000..c2c3af1
--- /dev/null
+++ b/input/day_4.txt
@@ -0,0 +1,1000 @@
+24-91,80-92
+28-93,5-94
+30-81,33-82
+28-97,59-72
+65-66,54-70
+35-35,5-36
+3-5,4-91
+73-97,20-72
+53-77,2-54
+47-96,48-95
+7-75,8-75
+66-89,67-86
+23-25,24-95
+97-98,5-98
+58-61,13-57
+53-62,52-52
+5-93,92-93
+52-61,34-61
+83-85,82-92
+90-90,46-91
+35-95,94-98
+89-91,72-90
+3-98,81-97
+26-26,27-96
+41-54,53-55
+9-43,8-54
+14-14,14-86
+36-50,50-50
+79-84,78-78
+44-69,70-73
+6-51,5-5
+40-40,39-73
+10-65,9-11
+1-2,4-99
+8-36,5-5
+72-72,25-71
+66-66,67-96
+69-79,62-68
+46-57,5-56
+97-98,39-98
+98-99,4-97
+9-94,10-84
+3-15,6-14
+9-10,11-80
+9-9,9-69
+60-79,78-82
+50-70,70-90
+12-12,13-64
+8-92,3-8
+29-79,30-78
+96-97,5-97
+13-75,59-63
+45-78,45-79
+38-70,38-69
+13-33,19-25
+79-87,47-88
+9-67,8-67
+51-59,58-60
+28-61,28-62
+7-90,33-87
+5-5,5-33
+78-85,43-84
+18-94,18-95
+42-42,42-81
+12-93,11-92
+16-64,17-64
+2-99,1-98
+32-68,31-69
+14-73,15-15
+43-55,43-81
+13-65,66-66
+79-85,79-91
+81-84,52-80
+21-68,22-67
+32-80,33-80
+17-76,83-83
+11-65,39-65
+32-85,33-84
+25-58,26-57
+14-28,8-15
+64-87,20-86
+62-99,29-61
+26-40,27-47
+9-76,9-83
+42-90,43-89
+5-97,5-93
+6-16,15-87
+45-91,9-91
+34-34,35-85
+21-56,21-21
+38-79,47-80
+79-98,36-96
+25-99,73-99
+4-51,12-50
+9-10,14-50
+65-89,26-48
+17-19,18-18
+39-60,34-75
+61-76,61-61
+38-90,37-37
+36-67,68-68
+6-19,10-20
+3-91,3-97
+35-93,35-94
+63-89,59-62
+46-76,66-76
+31-63,31-64
+17-44,33-37
+35-43,35-68
+11-13,12-90
+39-83,40-63
+41-99,24-86
+41-76,41-56
+9-62,10-62
+3-92,92-92
+36-41,36-46
+6-21,5-26
+7-98,5-97
+24-95,9-35
+4-82,3-81
+45-74,7-35
+7-74,59-75
+62-68,32-61
+45-66,44-83
+36-94,36-37
+57-76,57-77
+34-71,71-72
+95-95,95-95
+58-75,57-79
+48-75,40-53
+21-94,21-31
+55-55,3-56
+48-80,3-80
+10-81,9-81
+13-66,6-7
+1-91,90-92
+4-5,4-83
+22-76,20-45
+4-13,3-3
+10-22,6-6
+18-91,18-90
+50-53,51-52
+23-33,21-24
+1-49,1-48
+8-40,8-39
+11-97,2-96
+79-81,55-75
+82-95,81-81
+9-10,10-68
+59-59,58-58
+2-99,2-2
+22-36,21-22
+49-77,49-50
+7-21,7-7
+65-98,66-72
+1-43,39-40
+25-60,25-25
+12-79,38-80
+89-90,26-90
+52-72,53-53
+15-96,97-99
+4-8,4-72
+2-73,72-72
+11-35,15-35
+99-99,1-98
+72-83,8-88
+29-35,1-3
+32-72,15-33
+50-86,51-51
+27-65,59-87
+11-11,11-52
+16-87,17-87
+60-62,61-61
+50-90,81-92
+86-86,43-86
+42-82,11-82
+93-94,3-94
+22-91,90-92
+14-91,13-75
+11-28,14-19
+76-85,75-77
+7-98,6-98
+25-40,2-41
+4-96,12-90
+61-75,1-62
+17-97,16-17
+38-93,38-52
+16-34,17-39
+61-78,29-79
+7-91,90-90
+30-59,20-60
+5-98,4-98
+55-55,55-99
+1-95,1-94
+15-87,14-14
+56-92,23-55
+9-97,46-58
+9-93,8-94
+4-10,16-96
+52-53,24-53
+11-59,10-59
+61-76,53-65
+26-45,45-46
+4-38,38-92
+46-46,46-87
+41-61,40-95
+7-17,2-17
+26-27,27-33
+58-92,58-90
+13-96,13-98
+76-76,1-77
+12-97,12-96
+30-30,29-79
+38-86,38-86
+6-94,93-93
+5-9,11-55
+52-52,51-51
+29-88,29-29
+22-65,2-22
+51-60,57-77
+16-78,4-77
+99-99,40-98
+90-90,71-91
+16-86,16-87
+37-92,37-86
+42-79,48-56
+25-47,24-49
+32-35,33-36
+64-75,5-53
+18-53,32-54
+59-74,64-75
+22-76,21-76
+3-90,3-90
+98-98,15-99
+4-17,17-77
+97-97,7-97
+94-95,13-95
+19-56,4-56
+8-12,12-95
+9-75,9-21
+1-45,25-43
+65-82,65-66
+27-63,27-27
+97-99,5-96
+15-85,14-15
+24-75,24-74
+34-81,34-82
+29-97,18-96
+13-80,13-17
+7-93,8-93
+81-82,16-82
+16-59,60-98
+88-93,22-88
+91-93,41-92
+16-57,16-85
+19-46,15-20
+16-52,16-72
+7-7,8-61
+80-86,80-82
+65-75,1-88
+7-78,1-77
+5-94,4-94
+59-88,60-87
+69-73,69-70
+16-16,17-52
+50-91,51-91
+39-57,38-40
+12-73,72-74
+2-4,10-66
+36-38,36-71
+23-80,63-98
+85-91,40-84
+47-48,6-48
+1-3,3-97
+33-33,33-34
+16-18,17-61
+81-83,1-82
+53-82,15-54
+54-84,63-84
+1-98,97-97
+3-77,4-61
+34-79,35-54
+24-24,25-82
+6-99,4-6
+29-49,30-49
+1-2,1-90
+1-37,1-1
+3-4,8-62
+10-85,11-86
+57-59,54-63
+3-93,1-93
+58-59,9-59
+37-38,25-38
+32-96,31-96
+2-91,23-90
+31-70,37-47
+18-77,67-76
+58-91,66-97
+21-44,45-45
+60-61,61-78
+12-12,11-55
+43-65,15-66
+21-70,20-21
+10-10,10-88
+11-71,12-72
+75-75,50-76
+29-29,11-28
+4-81,1-98
+36-54,37-53
+8-92,91-93
+37-76,37-77
+74-99,75-99
+3-98,12-97
+19-83,20-83
+97-99,2-96
+45-45,45-95
+3-87,2-86
+66-74,50-65
+12-12,12-77
+1-93,5-85
+40-52,43-82
+5-69,9-70
+2-11,10-31
+31-74,31-99
+40-96,41-64
+12-38,11-13
+18-55,18-88
+54-84,53-54
+10-95,5-94
+32-70,63-71
+20-84,8-47
+61-87,86-87
+16-31,4-16
+1-97,1-96
+1-5,6-28
+73-73,38-72
+23-50,22-22
+27-93,27-36
+99-99,6-99
+99-99,1-99
+99-99,34-75
+7-24,18-24
+5-43,9-18
+3-6,5-62
+35-67,17-66
+16-45,8-44
+2-90,2-91
+48-97,96-97
+35-74,7-73
+25-86,85-85
+13-78,13-89
+2-79,79-79
+5-98,1-98
+66-66,64-68
+15-85,20-86
+25-41,42-73
+18-30,29-29
+16-20,16-75
+4-6,5-89
+7-56,8-57
+11-64,11-65
+7-7,9-86
+6-68,6-72
+4-92,4-91
+26-28,25-65
+2-57,1-58
+96-98,22-95
+2-82,82-82
+96-98,95-97
+11-91,90-90
+8-87,7-8
+64-92,76-93
+2-4,4-30
+53-92,49-61
+17-50,18-51
+8-64,7-64
+35-60,5-36
+1-6,6-85
+7-62,62-62
+38-42,50-54
+3-3,3-60
+39-48,50-86
+1-97,16-89
+44-72,73-84
+14-68,16-68
+7-55,8-8
+13-79,19-79
+31-94,95-97
+30-63,19-31
+15-83,52-83
+27-27,27-83
+72-72,3-71
+35-99,1-98
+29-80,29-88
+40-71,20-70
+61-93,60-94
+3-93,1-93
+4-4,5-99
+22-69,10-26
+42-74,42-75
+18-39,19-38
+37-43,43-92
+29-31,16-30
+7-95,7-7
+72-73,72-72
+9-90,91-98
+7-51,8-47
+28-88,89-94
+3-94,4-94
+20-41,37-51
+19-34,4-34
+13-63,64-68
+5-98,5-90
+24-93,24-73
+26-56,11-56
+2-75,33-76
+1-99,2-96
+44-55,54-56
+64-99,64-80
+41-64,41-64
+15-80,17-75
+57-59,58-90
+5-12,7-58
+16-50,17-17
+41-48,40-47
+31-32,31-92
+1-91,1-37
+53-67,49-77
+3-75,2-79
+55-76,47-60
+42-42,42-58
+20-42,20-41
+94-98,51-97
+1-44,1-45
+19-50,2-51
+28-82,29-94
+18-97,18-18
+41-89,14-41
+3-36,5-35
+64-85,31-86
+72-96,95-96
+11-18,18-87
+19-63,62-62
+16-17,16-94
+97-97,1-98
+22-95,23-96
+16-16,17-35
+25-96,43-96
+50-87,50-50
+3-92,3-89
+20-78,20-20
+53-53,54-89
+5-43,8-44
+39-85,38-38
+47-76,46-77
+35-78,77-79
+28-47,27-29
+39-39,36-40
+87-98,76-78
+30-35,30-63
+39-53,21-30
+30-30,30-93
+65-97,19-96
+74-77,73-98
+21-95,6-22
+36-89,47-88
+99-99,8-98
+22-68,25-69
+38-90,38-42
+39-88,17-39
+79-85,78-84
+11-74,7-7
+38-45,38-45
+57-90,56-58
+1-2,3-83
+2-48,7-49
+30-95,30-96
+71-96,71-79
+4-89,96-99
+44-93,44-99
+16-16,15-98
+7-95,10-91
+12-15,23-41
+39-62,38-92
+5-10,7-12
+51-91,14-52
+12-12,12-76
+54-58,56-59
+9-9,10-56
+11-42,49-70
+14-76,19-77
+24-33,27-33
+23-98,23-88
+35-78,51-85
+1-1,3-86
+1-2,2-94
+30-36,22-58
+48-48,47-51
+7-82,83-99
+31-77,31-31
+4-6,9-97
+63-85,10-86
+30-80,28-81
+1-1,1-98
+7-97,18-89
+52-89,21-88
+9-69,14-70
+71-72,34-72
+55-61,10-97
+59-88,55-55
+31-54,31-53
+26-35,45-98
+36-79,6-99
+2-3,2-41
+6-85,6-84
+9-97,1-95
+16-45,43-46
+5-81,4-80
+4-91,90-92
+44-86,30-87
+72-74,53-73
+20-20,15-15
+40-62,40-40
+28-99,34-62
+4-89,4-94
+42-58,46-59
+43-72,42-81
+81-83,22-82
+29-43,10-53
+47-55,46-70
+10-84,4-5
+10-93,11-94
+38-74,74-74
+14-48,13-14
+11-91,10-10
+9-11,10-10
+7-60,6-42
+3-93,92-92
+14-69,14-68
+32-45,41-46
+2-99,3-99
+16-83,15-83
+39-44,39-40
+2-76,75-77
+91-92,20-82
+19-50,24-51
+31-77,9-78
+3-99,70-99
+35-36,36-65
+6-24,7-68
+64-91,64-92
+95-96,95-96
+44-58,2-57
+61-61,44-62
+11-98,11-55
+38-47,20-46
+8-15,8-97
+29-53,27-29
+84-95,59-89
+61-62,61-85
+19-77,20-46
+88-92,92-92
+2-99,98-99
+10-79,10-10
+6-91,20-88
+14-74,10-10
+13-34,12-35
+27-87,86-86
+1-1,1-86
+28-31,27-79
+38-80,21-73
+23-64,22-24
+38-94,93-95
+96-98,10-95
+50-51,49-50
+74-88,81-89
+27-62,24-28
+49-49,48-92
+3-5,5-8
+47-87,47-76
+66-86,50-67
+78-96,77-77
+3-91,2-92
+88-91,5-87
+47-88,49-88
+56-80,55-79
+96-96,2-96
+19-38,30-39
+6-93,93-93
+36-98,36-36
+37-37,14-37
+17-17,18-67
+10-83,66-88
+25-89,28-88
+47-99,1-97
+87-87,18-86
+55-60,55-55
+15-15,23-61
+33-67,32-77
+37-42,38-42
+41-41,23-40
+54-66,53-68
+57-98,53-76
+14-92,14-93
+12-96,12-13
+43-43,14-42
+23-91,45-54
+36-59,58-58
+6-6,7-90
+31-38,37-39
+8-94,7-94
+94-94,87-94
+35-78,36-91
+37-90,68-75
+93-93,9-92
+39-80,35-84
+16-89,16-82
+1-86,2-37
+22-75,31-97
+1-97,96-98
+70-82,66-81
+8-94,93-94
+5-94,5-5
+4-75,5-74
+65-65,44-80
+33-97,96-97
+4-58,48-59
+5-99,5-5
+62-70,49-69
+37-42,36-41
+1-98,1-99
+91-92,5-92
+80-89,1-80
+15-92,74-93
+26-93,25-25
+43-46,41-45
+14-14,15-75
+29-29,30-99
+64-98,64-97
+14-86,87-99
+5-6,5-27
+50-75,34-75
+9-24,23-94
+77-78,76-77
+11-27,2-43
+98-99,58-99
+8-87,8-9
+35-35,35-38
+22-85,2-23
+39-84,49-70
+7-15,15-77
+98-98,7-97
+42-47,15-41
+27-34,27-27
+37-37,38-91
+33-81,33-80
+30-51,11-52
+79-80,76-80
+59-98,13-77
+52-55,33-53
+3-67,68-68
+3-72,72-83
+20-43,24-51
+75-89,29-76
+31-56,55-56
+25-50,24-49
+93-99,98-98
+2-76,2-75
+8-80,8-81
+16-18,45-60
+1-1,2-96
+55-82,54-93
+60-89,83-88
+55-88,11-66
+2-99,98-98
+83-85,11-84
+54-69,12-55
+10-10,10-74
+11-21,16-22
+50-71,68-75
+28-99,11-78
+41-51,39-87
+10-11,16-92
+72-72,13-72
+92-92,2-91
+27-46,45-47
+13-47,9-46
+1-99,2-18
+21-96,21-95
+5-5,5-61
+66-66,59-66
+30-82,30-77
+19-19,20-58
+82-89,2-99
+15-15,15-99
+10-10,11-51
+47-97,47-92
+18-20,19-56
+7-11,20-82
+24-73,24-70
+45-45,46-50
+13-91,65-74
+19-82,19-77
+26-98,2-58
+87-88,17-87
+44-51,22-51
+3-95,11-86
+5-49,15-50
+14-77,13-77
+98-99,1-99
+15-60,14-65
+4-8,8-21
+39-86,85-97
+25-92,24-24
+29-29,29-78
+9-63,8-8
+76-76,14-55
+15-88,16-84
+9-89,90-94
+4-89,3-90
+4-33,32-64
+4-98,2-98
+78-86,20-81
+63-89,62-88
+8-56,7-97
+25-44,25-45
+3-32,4-8
+53-86,53-87
+5-85,3-95
+18-24,8-94
+93-98,92-94
+39-53,54-69
+28-73,17-72
+3-93,4-9
+8-46,8-16
+3-3,2-78
+13-22,23-26
+71-72,47-72
+3-8,7-20
+6-73,1-6
+31-99,33-91
+90-99,89-89
+9-81,7-7
+58-59,58-63
+64-83,83-83
+4-5,4-5
+54-92,19-86
+7-8,8-63
+31-48,48-80
+22-86,8-22
+76-91,73-76
+62-78,9-79
+16-93,19-94
+5-95,5-93
+13-80,14-81
+6-80,79-79
+78-84,77-79
+40-83,78-84
+11-68,5-6
+81-81,23-82
+1-27,29-29
+50-60,51-53
+44-49,44-45
+52-62,51-98
+1-98,1-99
+39-97,98-99
+25-52,15-92
+34-99,34-34
+10-35,5-69
+11-11,12-69
+47-53,53-53
+92-94,7-93
+8-8,8-81
+28-85,28-84
+39-88,33-34
+66-83,65-86
+45-94,45-61
+36-60,14-36
+10-40,11-90
+23-75,24-51
+61-63,7-62
+68-83,82-82
+55-60,55-73
+9-44,2-44
+11-95,95-97
+10-62,9-65
+81-81,82-98
+6-56,6-57
+17-50,34-50
+4-34,34-34
+20-98,19-21
+25-39,25-58
+40-79,8-80
+14-57,14-58
+94-95,67-95
+17-24,15-24
+16-18,17-89
+6-58,5-57
+6-99,6-37
+3-3,3-17
+46-74,47-66
+16-38,17-17
+22-97,13-23
+99-99,38-99
+52-65,62-62
+22-24,17-23
+60-98,1-97
+3-71,7-21
+10-94,10-95
+38-90,38-89
+24-45,23-62
+12-14,13-95
+37-87,38-53
+14-45,13-45
+77-77,27-77
+25-83,17-25
+21-94,9-99
+73-73,49-73
+50-82,49-64
+7-95,95-95
+64-86,63-87
+33-85,2-50
+33-87,34-53
+13-31,30-31
+62-63,63-91
+9-91,91-92
+16-72,15-72
+32-40,39-40
+10-98,10-93
+1-3,2-18
+12-62,12-43
+35-68,34-69
+50-52,32-51
+4-37,4-35
+6-94,65-96
+63-88,44-62
+17-49,9-49
+20-49,20-48
+7-91,6-91
+33-63,34-63
+62-63,63-89
+9-62,10-62
+31-31,32-38
+77-87,15-87
+34-89,42-89
+1-2,3-79
+59-65,58-87
+4-57,2-56
+34-54,13-34
+41-95,5-54
+28-76,77-86
+13-13,12-42
+12-97,12-96
+20-27,26-50
+70-84,70-72
+47-75,48-69
+5-75,75-75
+25-80,22-79
+28-78,79-79
+89-89,11-93
+39-74,75-75
+20-88,20-87
+79-80,37-78
+7-17,16-18
+31-68,31-68
+18-36,18-18
+73-96,35-73
+28-98,27-29
+26-75,19-74
+2-4,3-48
+2-3,4-79
+4-93,92-92
+58-89,70-89
+1-99,2-68
+57-78,56-56
+10-46,10-39
+6-61,6-60
+51-90,50-90
+27-90,27-28
+45-45,1-44
+18-31,13-31
+25-51,18-52
+7-28,4-29
+93-93,6-93
+9-50,8-51
+92-94,1-93
+29-91,30-30
+25-75,24-75
+55-55,15-55
+70-73,62-71
+8-84,8-42
+50-76,46-57
+45-80,44-79
+6-86,7-87
+8-83,7-82
+4-30,8-31
+57-95,58-96
+49-50,50-79
+90-92,89-95
+24-24,25-98
+60-75,69-75
+9-83,20-69
+32-33,32-36
+3-3,2-98
+1-84,83-85
+69-99,99-99
+92-97,87-92
+71-96,72-97
+49-49,49-66
+18-18,35-75
+7-94,7-7
+3-48,45-92
+47-86,86-86
+10-42,7-66
+11-85,12-96
+39-77,17-39
+14-24,3-23
+23-23,23-23
+66-66,54-67
+29-29,30-71
+20-89,56-90
+41-56,40-57
+1-99,3-97
+4-92,4-98
+7-39,38-38
+69-71,68-73
+95-97,13-96
+55-84,54-75
+61-79,64-88
+97-98,3-98
+9-42,6-41
+36-86,35-36
+8-91,9-86
+16-45,58-79
+43-43,11-44
+8-74,9-73
+2-78,3-78
+76-86,83-94
+1-96,2-97
+49-79,49-78
+1-1,3-76
+74-89,21-90
+7-97,1-2
+38-73,73-73
+24-76,29-77
+4-43,2-2
+19-20,20-96
+56-77,51-77
+10-82,10-65
+58-71,17-94
+20-74,74-87
+28-84,28-83
+5-81,87-89
+9-40,9-24
+38-80,39-81
+36-36,36-37
+76-76,33-76
+62-62,1-62
+11-27,21-25
+13-59,44-59
+36-89,36-37
+53-70,45-69
+5-42,41-41
+49-49,9-50
+35-59,12-35
+32-63,18-63
+38-69,37-71
+70-97,96-96
+52-80,53-75
+43-43,44-94
+49-83,52-84
+11-76,10-98
+4-91,90-92
+26-54,26-30
+57-86,57-58
+3-97,96-96
+1-1,3-98
+24-36,36-67
+8-64,3-64
+39-98,14-98
+59-62,59-63
+30-42,30-31
+3-87,2-4
+6-79,7-80
+7-66,67-80
+30-48,18-47
+91-96,82-95
+4-78,4-5
+67-68,24-68
+7-7,8-59
+1-83,5-79
+50-67,34-66
+27-74,26-73
+7-94,94-97
+2-27,3-18
+13-55,56-56
+3-3,4-40
+52-66,52-52
+40-40,39-81
+3-54,1-47
diff --git a/input/day_5.txt b/input/day_5.txt
new file mode 100644
index 0000000..922b345
--- /dev/null
+++ b/input/day_5.txt
@@ -0,0 +1,512 @@
+[W] [V] [P]
+[B] [T] [C] [B] [G]
+[G] [S] [V] [H] [N] [T]
+[Z] [B] [W] [J] [D] [M] [S]
+[R] [C] [N] [N] [F] [W] [C] [W]
+[D] [F] [S] [M] [L] [T] [L] [Z] [Z]
+[C] [W] [B] [G] [S] [V] [F] [D] [N]
+[V] [G] [C] [Q] [T] [J] [P] [B] [M]
+ 1 2 3 4 5 6 7 8 9
+
+move 2 from 8 to 4
+move 2 from 7 to 3
+move 2 from 9 to 2
+move 4 from 1 to 9
+move 1 from 7 to 8
+move 1 from 9 to 6
+move 6 from 6 to 1
+move 6 from 1 to 6
+move 2 from 7 to 1
+move 9 from 4 to 1
+move 6 from 2 to 7
+move 5 from 9 to 7
+move 7 from 3 to 7
+move 19 from 7 to 9
+move 1 from 7 to 1
+move 3 from 6 to 8
+move 4 from 5 to 6
+move 1 from 4 to 1
+move 2 from 5 to 2
+move 8 from 9 to 7
+move 1 from 5 to 1
+move 3 from 9 to 4
+move 1 from 4 to 9
+move 2 from 4 to 7
+move 1 from 7 to 6
+move 3 from 8 to 9
+move 17 from 1 to 7
+move 21 from 7 to 3
+move 4 from 6 to 2
+move 1 from 7 to 2
+move 8 from 9 to 2
+move 2 from 8 to 3
+move 1 from 1 to 7
+move 2 from 7 to 9
+move 1 from 6 to 1
+move 1 from 7 to 4
+move 1 from 1 to 2
+move 4 from 6 to 1
+move 1 from 9 to 2
+move 1 from 7 to 9
+move 1 from 4 to 1
+move 7 from 3 to 7
+move 6 from 2 to 8
+move 3 from 3 to 4
+move 1 from 8 to 4
+move 12 from 2 to 8
+move 2 from 9 to 2
+move 12 from 3 to 2
+move 12 from 8 to 6
+move 3 from 4 to 2
+move 19 from 2 to 8
+move 4 from 1 to 9
+move 1 from 3 to 8
+move 1 from 4 to 6
+move 1 from 2 to 4
+move 1 from 6 to 3
+move 8 from 9 to 6
+move 1 from 4 to 9
+move 1 from 3 to 1
+move 1 from 9 to 5
+move 11 from 6 to 3
+move 5 from 8 to 6
+move 14 from 6 to 9
+move 2 from 1 to 4
+move 3 from 8 to 1
+move 8 from 8 to 4
+move 3 from 3 to 4
+move 8 from 3 to 1
+move 9 from 8 to 2
+move 12 from 4 to 2
+move 12 from 9 to 3
+move 9 from 3 to 4
+move 1 from 5 to 3
+move 7 from 7 to 1
+move 2 from 9 to 1
+move 2 from 4 to 6
+move 16 from 2 to 6
+move 1 from 2 to 8
+move 10 from 1 to 4
+move 1 from 8 to 2
+move 4 from 1 to 6
+move 15 from 4 to 8
+move 1 from 4 to 2
+move 2 from 6 to 8
+move 5 from 2 to 8
+move 21 from 8 to 3
+move 6 from 1 to 3
+move 15 from 6 to 1
+move 1 from 2 to 1
+move 1 from 8 to 9
+move 15 from 1 to 3
+move 7 from 3 to 8
+move 1 from 7 to 9
+move 2 from 9 to 8
+move 2 from 3 to 7
+move 4 from 6 to 1
+move 2 from 7 to 8
+move 1 from 6 to 2
+move 4 from 8 to 3
+move 2 from 4 to 8
+move 1 from 2 to 1
+move 4 from 1 to 5
+move 3 from 5 to 8
+move 1 from 5 to 1
+move 12 from 8 to 3
+move 3 from 1 to 2
+move 17 from 3 to 5
+move 2 from 5 to 3
+move 15 from 5 to 1
+move 1 from 1 to 4
+move 17 from 3 to 2
+move 5 from 2 to 8
+move 17 from 3 to 6
+move 6 from 1 to 3
+move 5 from 1 to 6
+move 4 from 8 to 9
+move 10 from 3 to 8
+move 7 from 2 to 9
+move 2 from 6 to 3
+move 2 from 2 to 8
+move 1 from 1 to 4
+move 17 from 6 to 9
+move 13 from 8 to 2
+move 2 from 4 to 1
+move 1 from 6 to 7
+move 2 from 2 to 4
+move 8 from 2 to 7
+move 1 from 6 to 1
+move 4 from 7 to 9
+move 1 from 4 to 7
+move 1 from 4 to 6
+move 1 from 1 to 7
+move 5 from 2 to 4
+move 2 from 3 to 8
+move 6 from 7 to 1
+move 1 from 7 to 4
+move 11 from 9 to 7
+move 1 from 8 to 4
+move 8 from 1 to 2
+move 1 from 1 to 4
+move 1 from 1 to 9
+move 1 from 6 to 1
+move 1 from 8 to 4
+move 6 from 2 to 3
+move 1 from 1 to 3
+move 1 from 6 to 7
+move 1 from 4 to 6
+move 6 from 2 to 5
+move 7 from 3 to 4
+move 2 from 7 to 6
+move 2 from 7 to 3
+move 8 from 7 to 5
+move 3 from 6 to 7
+move 1 from 5 to 7
+move 1 from 7 to 5
+move 13 from 9 to 3
+move 1 from 3 to 8
+move 8 from 4 to 3
+move 3 from 5 to 1
+move 7 from 4 to 1
+move 5 from 1 to 4
+move 3 from 1 to 4
+move 2 from 1 to 8
+move 2 from 7 to 5
+move 2 from 8 to 9
+move 1 from 7 to 6
+move 1 from 8 to 7
+move 4 from 5 to 1
+move 1 from 7 to 2
+move 2 from 1 to 8
+move 1 from 2 to 1
+move 5 from 9 to 7
+move 3 from 9 to 4
+move 8 from 4 to 8
+move 6 from 8 to 5
+move 11 from 5 to 1
+move 3 from 4 to 2
+move 9 from 3 to 7
+move 6 from 7 to 2
+move 13 from 3 to 2
+move 3 from 8 to 1
+move 2 from 2 to 8
+move 1 from 6 to 7
+move 3 from 8 to 4
+move 9 from 1 to 5
+move 5 from 5 to 8
+move 2 from 8 to 4
+move 3 from 9 to 4
+move 2 from 8 to 2
+move 8 from 1 to 5
+move 8 from 7 to 9
+move 1 from 8 to 3
+move 15 from 5 to 9
+move 6 from 4 to 1
+move 1 from 7 to 2
+move 4 from 2 to 1
+move 1 from 3 to 4
+move 5 from 1 to 7
+move 3 from 7 to 3
+move 14 from 9 to 8
+move 1 from 4 to 8
+move 1 from 7 to 6
+move 2 from 4 to 5
+move 4 from 1 to 5
+move 1 from 6 to 5
+move 4 from 9 to 3
+move 5 from 3 to 7
+move 4 from 5 to 9
+move 1 from 3 to 7
+move 1 from 3 to 2
+move 4 from 5 to 2
+move 4 from 7 to 5
+move 4 from 2 to 1
+move 1 from 5 to 4
+move 7 from 9 to 7
+move 1 from 4 to 2
+move 1 from 5 to 8
+move 21 from 2 to 4
+move 1 from 9 to 8
+move 1 from 9 to 4
+move 3 from 4 to 1
+move 7 from 1 to 6
+move 1 from 5 to 1
+move 18 from 4 to 7
+move 1 from 5 to 8
+move 27 from 7 to 8
+move 1 from 7 to 3
+move 1 from 3 to 7
+move 1 from 7 to 2
+move 1 from 2 to 1
+move 42 from 8 to 9
+move 1 from 8 to 7
+move 1 from 8 to 2
+move 1 from 4 to 6
+move 1 from 2 to 9
+move 2 from 1 to 2
+move 1 from 7 to 3
+move 7 from 6 to 4
+move 4 from 9 to 6
+move 1 from 3 to 2
+move 1 from 2 to 7
+move 2 from 2 to 5
+move 1 from 8 to 4
+move 1 from 9 to 3
+move 5 from 4 to 7
+move 1 from 5 to 6
+move 1 from 5 to 9
+move 1 from 6 to 3
+move 1 from 7 to 5
+move 2 from 3 to 2
+move 22 from 9 to 7
+move 2 from 2 to 3
+move 18 from 7 to 9
+move 1 from 4 to 9
+move 1 from 1 to 4
+move 4 from 7 to 3
+move 4 from 3 to 2
+move 3 from 4 to 5
+move 1 from 2 to 4
+move 5 from 6 to 9
+move 1 from 5 to 3
+move 1 from 4 to 7
+move 2 from 5 to 1
+move 3 from 2 to 4
+move 1 from 5 to 6
+move 2 from 7 to 9
+move 1 from 6 to 8
+move 2 from 3 to 2
+move 2 from 4 to 7
+move 1 from 8 to 7
+move 1 from 4 to 6
+move 35 from 9 to 7
+move 13 from 7 to 3
+move 1 from 2 to 7
+move 1 from 2 to 5
+move 1 from 5 to 8
+move 1 from 8 to 5
+move 8 from 7 to 3
+move 1 from 6 to 4
+move 6 from 3 to 9
+move 1 from 1 to 9
+move 1 from 4 to 1
+move 14 from 9 to 8
+move 1 from 5 to 7
+move 16 from 3 to 2
+move 2 from 1 to 2
+move 1 from 9 to 2
+move 1 from 8 to 1
+move 1 from 1 to 3
+move 7 from 2 to 9
+move 6 from 9 to 8
+move 1 from 3 to 4
+move 3 from 7 to 6
+move 2 from 2 to 1
+move 1 from 4 to 7
+move 2 from 2 to 5
+move 1 from 9 to 6
+move 2 from 2 to 5
+move 2 from 6 to 2
+move 4 from 5 to 4
+move 5 from 2 to 6
+move 1 from 1 to 7
+move 1 from 1 to 2
+move 13 from 8 to 1
+move 2 from 8 to 4
+move 19 from 7 to 4
+move 3 from 1 to 6
+move 11 from 4 to 3
+move 2 from 7 to 9
+move 4 from 2 to 5
+move 2 from 9 to 5
+move 1 from 7 to 4
+move 2 from 5 to 7
+move 4 from 3 to 4
+move 3 from 4 to 1
+move 3 from 5 to 1
+move 9 from 6 to 4
+move 1 from 7 to 9
+move 1 from 7 to 5
+move 10 from 1 to 4
+move 1 from 9 to 6
+move 1 from 6 to 8
+move 32 from 4 to 5
+move 7 from 5 to 4
+move 27 from 5 to 9
+move 5 from 3 to 2
+move 3 from 2 to 8
+move 1 from 6 to 2
+move 8 from 4 to 9
+move 1 from 2 to 9
+move 8 from 8 to 6
+move 2 from 4 to 3
+move 1 from 2 to 3
+move 15 from 9 to 8
+move 4 from 1 to 4
+move 3 from 4 to 8
+move 6 from 9 to 7
+move 1 from 4 to 9
+move 8 from 8 to 2
+move 2 from 1 to 9
+move 2 from 7 to 9
+move 10 from 8 to 3
+move 6 from 2 to 6
+move 2 from 3 to 2
+move 6 from 6 to 3
+move 1 from 7 to 5
+move 8 from 3 to 2
+move 4 from 3 to 2
+move 1 from 3 to 5
+move 6 from 6 to 1
+move 4 from 3 to 7
+move 2 from 5 to 8
+move 3 from 7 to 5
+move 6 from 1 to 7
+move 1 from 3 to 4
+move 1 from 3 to 9
+move 10 from 7 to 4
+move 8 from 2 to 8
+move 11 from 9 to 5
+move 11 from 4 to 1
+move 5 from 2 to 6
+move 3 from 2 to 7
+move 11 from 1 to 6
+move 1 from 5 to 6
+move 8 from 5 to 4
+move 19 from 6 to 7
+move 3 from 7 to 9
+move 3 from 5 to 4
+move 1 from 2 to 5
+move 3 from 5 to 7
+move 8 from 9 to 6
+move 2 from 4 to 1
+move 1 from 1 to 9
+move 2 from 9 to 7
+move 6 from 6 to 2
+move 2 from 4 to 6
+move 4 from 8 to 6
+move 1 from 8 to 1
+move 7 from 6 to 7
+move 1 from 9 to 4
+move 5 from 8 to 4
+move 3 from 2 to 6
+move 4 from 6 to 4
+move 2 from 9 to 6
+move 3 from 2 to 9
+move 16 from 4 to 8
+move 1 from 6 to 8
+move 2 from 9 to 5
+move 1 from 9 to 7
+move 2 from 5 to 2
+move 1 from 4 to 6
+move 2 from 2 to 5
+move 1 from 9 to 6
+move 3 from 7 to 3
+move 7 from 7 to 8
+move 2 from 7 to 1
+move 3 from 8 to 5
+move 3 from 6 to 2
+move 4 from 7 to 4
+move 1 from 5 to 1
+move 1 from 5 to 7
+move 3 from 3 to 4
+move 5 from 1 to 4
+move 16 from 7 to 2
+move 5 from 4 to 7
+move 19 from 8 to 1
+move 11 from 2 to 9
+move 11 from 9 to 6
+move 2 from 1 to 6
+move 2 from 4 to 1
+move 5 from 4 to 6
+move 1 from 5 to 9
+move 1 from 9 to 6
+move 2 from 2 to 6
+move 1 from 5 to 4
+move 8 from 6 to 5
+move 16 from 1 to 6
+move 1 from 4 to 9
+move 3 from 2 to 9
+move 2 from 2 to 5
+move 2 from 5 to 8
+move 4 from 8 to 4
+move 4 from 9 to 7
+move 2 from 1 to 3
+move 5 from 6 to 4
+move 21 from 6 to 2
+move 9 from 7 to 3
+move 1 from 1 to 2
+move 1 from 5 to 3
+move 23 from 2 to 7
+move 1 from 7 to 5
+move 3 from 6 to 1
+move 9 from 4 to 5
+move 11 from 7 to 1
+move 2 from 3 to 4
+move 1 from 3 to 7
+move 1 from 4 to 1
+move 10 from 1 to 6
+move 5 from 7 to 1
+move 3 from 1 to 4
+move 7 from 1 to 7
+move 4 from 3 to 8
+move 4 from 7 to 4
+move 5 from 7 to 3
+move 2 from 4 to 9
+move 1 from 8 to 1
+move 4 from 4 to 1
+move 1 from 6 to 1
+move 1 from 6 to 5
+move 16 from 5 to 1
+move 2 from 5 to 7
+move 1 from 5 to 6
+move 2 from 8 to 2
+move 1 from 7 to 9
+move 3 from 9 to 5
+move 2 from 5 to 4
+move 6 from 7 to 1
+move 3 from 4 to 7
+move 1 from 8 to 6
+move 5 from 1 to 4
+move 1 from 6 to 1
+move 19 from 1 to 5
+move 1 from 7 to 6
+move 9 from 3 to 1
+move 6 from 6 to 5
+move 4 from 6 to 9
+move 3 from 9 to 4
+move 13 from 1 to 4
+move 1 from 3 to 1
+move 2 from 5 to 1
+move 1 from 2 to 3
+move 1 from 3 to 9
+move 4 from 5 to 4
+move 1 from 2 to 3
+move 1 from 3 to 5
+move 1 from 9 to 1
+move 1 from 9 to 5
+move 19 from 4 to 7
+move 4 from 1 to 6
+move 5 from 4 to 3
+move 3 from 6 to 1
+move 1 from 6 to 8
+move 2 from 1 to 6
+move 2 from 1 to 7
+move 2 from 6 to 3
+move 2 from 3 to 1
+move 8 from 7 to 6
+move 5 from 3 to 9
+move 2 from 4 to 9
+move 2 from 6 to 8
+move 10 from 7 to 2
+move 7 from 2 to 9
+move 1 from 8 to 9
+move 1 from 1 to 2
+move 2 from 9 to 3
+move 2 from 8 to 7
+move 1 from 1 to 6
+move 1 from 2 to 8
+move 2 from 2 to 5
+move 4 from 5 to 7
+move 5 from 6 to 1
+move 1 from 3 to 4
diff --git a/input/day_6.txt b/input/day_6.txt
new file mode 100644
index 0000000..5f190e2
--- /dev/null
+++ b/input/day_6.txt
@@ -0,0 +1 @@
+hqhnqhqshhslswsffchfcfbblvlblqlggfwwqfwwqdddbbbhzhjjrqjqbjqjwqjwqwhwrrmcrrjqjjlllcvcrrnpptzpzmmswmmzrzjrrfcrfccpbpzzvrrdndllttwftwwgzzwhwggdvdnnlrnncscbcfcctchcdchdccztzgzjjtdtcdtcchrrgpgzgsgpsggvtvppdccfhcfclfcfdfnddlbbptbtdbtdtjdjgdjjzljlssgbgcgqcqzccfnftfjjsgstggsngsscvssjzjnjtntvnvssrqqhtqtvqtvvjbvvbnvvqvmvrmmdsdvdwwnbnvbnvvcgvcczcfzftfsfrfsfttldtdrrgrgmgbbdvvbqbhqbqlqsqbsbpbgbvgbgwwrswrwrwttvnnzdnzzwggrmrfmmvllzwlwzzlvlbvllgsllpnlnvncvcvqqrwwcmcczhchzczbccdwcwvwzwwvddlwlhljlqjqnncntnctczzmwmlmccpggljlssqswsmmpvmvwvrrcpcrprmprrtdrtdrrsjsmshmmdpdlppbnbvvmmflmmjvjhvhjvjsjbjwjvvblvbvlbbllwlslvljvlvdvdgvgcchnhpnhnvhhtfhhvssczztlzzgvvqqghqgqssdscsnsrsmrmmwgwmgmlmdmggbgzbgzgdzdzccghgfgddtntftddpdrdrmrjmmmzttqmttnwngggtgtqtqnqhnqqpnnntrntrnnshhjtjzzfqqblqqlblslflmlttcwtwzzrlrnrcrrrgtrrftfhthzhggwggvgvvfvddcnddfjddzqzrrvtrvrfrrgpgrgngsgddlmddzgzppdzzjzhjhjhqqbpbvvlrvrsvrvnrrsgsttndnbngnppmlppvgvfggvcvrvnnsnfnnfqfwwppnddrrfqqgbqqfmmlnlnngwgcgjgnjgjsgjgqjjnccdttpqttswwcgcmgmccrppmqmbbfwwvdwdfwfjwfjjblldsdrdvvgcvcwwllfpllcslsvssnvsnvvhnvnvwwcgwccslsbbnlbnbrrrtprptpdpdvdttgsgwswppcdchhqbqcbqbzbgbbstshthsttqgtqtpqqzhhwhghwwmbbdlbbtlltsllbvbnvvmqvqtvqvttlwtltmmrttwgtwwfdddwcchtchhbthbbclczzqbzzpvvwzwswggjddntnrnnwmnnbdbmbccqgqvvsnvvqbvbzvvzmvzzrfrlfrfhhdvddnmnnmhmqhhrhlrldljlbljjgqqvdvhhgmgvgddmmznndmmhssznsswvwdvdzdhhscssntnftfmmrggbmbmgmlltctbtbntnqqscqcscrcrhrlhhdchhzccvvbfvvpfffbwbsbjjmgmwgmgppjnpjphhlmhhpwwhwzhhhzbbzzcbchhpnnptpvphhsdsccffqbqllchlhlwlcljlppnccqsstzstswtwwljwjmmpttvqqspsjjclljqqlhqqtnnbrrsbrbjjllrmrjmjzmmclmclmmcvvbddhnnmhmbbwqqqhrqqtqmqbqdbdtdvvcscshccmffhqffdgdcgddljdjbdbjbdbrrtjjtnntpntpnpmnpmpgghffrnfrnnmdnmnhmmjcjffftrrttfwfvwvcwwrmwmpwmmnvntthmmgmbbcdclcppjhpjhjwwlppgsszqqwggmttfrfqflfsfmmmhchshmmjtjjgdjjnnsvsmsnwcgdfqljmnphlfdrhpggfqnhnszgpndhdqcgfhtdcgbsbtmhvnnrmqzqqcjdqndzbnrhwjvbvcldmnwltgpqbmstntnggtbqjzzqrfdsfttdfrcnsrpwrjrjqbgtjfmlwsrzdbdqvbtczgsjqhtgmctjfmdglfrsvqtgwpbqghzgzdfwzhbdhlmhdvhwjrdhhtjptvwpmjnmfcjdmdczmczvdqwvbgtvlwvwnvdlbqfshmlmvzzcmjbtpwpwgsqhfsgljzhbppcztfjdntzcvllqnzrqjwfjrlgvhmbpvbtqjrdzcsmcjzcdsmvcmhrbhgnscnfrfmscqsqpqplbrzhsrlsvvpmfdtdmtlrtvspmlljmfpshfmstjgnrrwmqlbnwbndcfdstrtqtnzpfqlcgrzmsnmhllljdgtmvftjttbwhqzcqwbwdbshgcqrptfjwbbfsjnvzztlbdchqrlbbrcnsswmhwphfwrbnvrncbrthprmltlwwlfpbqhdfqzwwcwjgqzdnvmhwpzpbtpwwvzcpfcsfqpwjljzzfwzmlfvhsccppzlzjlrvlpdtjpcptnvqjwtdbzrqwnfwmmjndflqqggczrfjlpdfjffctprnmhfdqvnzbfvhszzdmngnlmwzfdrbvlvjnmbllgrczssqcrhbmnpmqlrzgmqmhgsvcdlqnmlhlzvqzhnccbctslzlbcpdvqltqncpcrzwdchrqmwfwlcbcvfnnpjntfrznqdjsdtzqjjttddwvnfqmznhflblzvvtbwdzrrlqlmndzzzwnpbhhlvlbswfjtbnhlccscbnfgjtwbfdlwvzszwnwzhlbcdpvgqjcrpzsvvnfwqcqvrmhzhggvmzwggdpbfrdscjwhsdsbbjcnzldhzcvqtjrhsbfjlrlpvtcqhnnsvslfrdjvjhfhdcfzqchpvvhzbpqglqlrdttrdtndzhnzhtqndghtgmpsnhptprqzhbbdcrgmbvrvqmbptqgnmsccwmhrlpddvmhjntllwrzqwnsjchnblcgndjtmpswwgcstdftqcbhzgttrhnpvrhspjznhhvrlpdqbzzrvzjphcswhljdldvsrdhzltwgrcsvqwnhtqqjjrjgrplzmsnjhzrfbtqgdfgnbpvjrfzrrpdphgzrfbswdhzgbzswqtwwdtrvvswmjvwhqddfzjhgdqsfnwbmlcfwtmpldrdpwjwggbpmncvbghzjmpsqpvnmbhjfzzpsjdgmrtnndhzrphjzdbgrrnthtrfnspdngbdmwbnfjlsndqswfsvfqftqlgqjpfsfpmdbsjfrptvbpvflqgvlmmbchhghhrwmvdlrhlsdtvjjchwglcrwfsfnnbhjbtccbjsfwrbzrvgsbfnvzghhrqblqchjvdtrrbrwwwmfnczzmmrqdggsfrqbldbbfbbcthtsvpcnlbjjztwvhctbrjltqdwbzmrrfslbmjpnqwllbvjzgfsfqqtwbgwgclgdflshfhwggwdqlgbmdmdqglrtfwbddtsltmsvswhgjtqwtnrncpdzhnpfqcjnjzmtbjfzpjwgfbfggmsmfdhfbjctnhchpgfspthdbfpmvrmdbbspvwzqqwnmfwdnnblbcjszbccgflngnjjwsqshfbhjwgzrmvsgnrdbgwfhdvpmznpnvznfcqdclztcptjrrpbmpztwwbvlvtmngfhmfbfmrjbjzlrcvgllrlgthltstnwmffntqrwsrndlzqhztwpcwbdjjztgdzmgtthcvtvnjzzhvstfqhgddddgdsrbcqzqspjrncphhtbnslzphrtfqphffjrrlgwbrwqfzzqvzhnffcwvrncttgplshccglvchvlcbnlthhmzvcrfjvjqfsjjzzgqlpslfwngqnbgcwffpcqhlmlhvwssrpjbrcbftpzbbpptzrdqwpzpdjhtwbvwcqbfnwtflfgzgttglpcwdnzsmjffgfftdnpzlpszmzrrhvlzdfpgbzqlvvfslnndcmjvvpwzwcdzpcttfwbsdswmfqbbhbfbjvbvtspbbhmphzjsjcmmzpvvzhtvzlgwlqqvbnrgtszvghjfmchrwwhpmbsvfmgvqdtmvdtjppchbsgqrtgtnzczqmpgjdbmmflfpjbcdmhldwpgdtdvsbzhztjzfhcsbndfjntbldjnqwdffqspfnlplbtcdjtwdjhldtsdfrnmpfhzghnpcqlhhgblmqjvwhndqfbccvzzlbzbdprvcpwjjhrqnjptwssbjhgvpgtfzqwrzjvbdgwtnmptvdjrffcmbzmzcmrfbjv
diff --git a/input/day_7.txt b/input/day_7.txt
new file mode 100644
index 0000000..ca23499
--- /dev/null
+++ b/input/day_7.txt
@@ -0,0 +1,1082 @@
+$ cd /
+$ ls
+dir brhvclj
+dir clnvqg
+dir dtqtvvrn
+dir lcz
+dir pcqjncwl
+dir qwvfpgl
+dir rtmj
+dir shg
+dir tcdmgwp
+$ cd brhvclj
+$ ls
+40016 mtlscfrd.gdr
+dir mvslzl
+112449 npp.vjv
+46674 pbgjwb
+dir qdtls
+dir tfns
+$ cd mvslzl
+$ ls
+dir dngldfww
+dir dzplphqw
+$ cd dngldfww
+$ ls
+102218 wcrvztrh.mzb
+$ cd ..
+$ cd dzplphqw
+$ ls
+93724 brhvclj
+169467 cwqwcjc.lgd
+$ cd ..
+$ cd ..
+$ cd qdtls
+$ ls
+dir nnlzrwgh
+dir svc
+168425 tcq.lng
+99608 vjrntvbz.sgn
+dir wshf
+dir wtmdzgvg
+$ cd nnlzrwgh
+$ ls
+141976 fnb
+$ cd ..
+$ cd svc
+$ ls
+87249 hzrml
+46855 qbmgmmc
+147235 zsbsq.cvq
+$ cd ..
+$ cd wshf
+$ ls
+25072 npp.vjv
+$ cd ..
+$ cd wtmdzgvg
+$ ls
+165660 cfpfdqq.vfd
+dir dhbrmn
+176203 dscvmj.wpn
+dir rcdwft
+$ cd dhbrmn
+$ ls
+200474 brhvclj.hcf
+233675 npp.vjv
+218734 ttntt
+$ cd ..
+$ cd rcdwft
+$ ls
+dir wvfdjv
+$ cd wvfdjv
+$ ls
+104669 mdrr
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd tfns
+$ ls
+dir clnvqg
+15637 mlft.cvp
+dir pqp
+77675 svc.mqv
+dir ttntt
+dir wfcczs
+dir wshwhzw
+$ cd clnvqg
+$ ls
+dir brhvclj
+103188 cdfj
+256254 svc
+72302 tndnh.vgg
+$ cd brhvclj
+$ ls
+dir brhvclj
+$ cd brhvclj
+$ ls
+246966 mlrcgl
+93485 ttntt.ztq
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd pqp
+$ ls
+dir svc
+206837 ttntt.qpm
+$ cd svc
+$ ls
+202934 bsczwq
+$ cd ..
+$ cd ..
+$ cd ttntt
+$ ls
+dir dfmgqmvm
+126511 hpdm.ctv
+$ cd dfmgqmvm
+$ ls
+dir qbms
+201736 wczpvsw.ddr
+dir wshwhzw
+$ cd qbms
+$ ls
+20046 lvfphhpw.sjv
+186516 pdbtbmf
+149493 svc.dqh
+dir tdvtcmwz
+$ cd tdvtcmwz
+$ ls
+100584 hpdm.ctv
+$ cd ..
+$ cd ..
+$ cd wshwhzw
+$ ls
+116856 hwvgnwf
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd wfcczs
+$ ls
+dir rlbnv
+$ cd rlbnv
+$ ls
+55214 ttntt.mnl
+$ cd ..
+$ cd ..
+$ cd wshwhzw
+$ ls
+34867 clnvqg
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd clnvqg
+$ ls
+dir bchstbpm
+dir bgbdbr
+dir clnvqg
+25956 clnvqg.rbr
+60939 gzzpwvzn.zzr
+212583 jjfrh.ttr
+dir jlsvjcdm
+dir mzmqr
+dir rtmg
+dir tqnmwdl
+$ cd bchstbpm
+$ ls
+dir sgbwd
+dir ttntt
+$ cd sgbwd
+$ ls
+267083 clnvqg
+$ cd ..
+$ cd ttntt
+$ ls
+243283 rwcmtrr.nvf
+$ cd ..
+$ cd ..
+$ cd bgbdbr
+$ ls
+dir jshpz
+$ cd jshpz
+$ ls
+dir dpnqrg
+dir gsvwsc
+173172 jjfrh.ttr
+203836 jzm.fcn
+83990 pdbtbmf
+276348 pqcmhzhv.ltv
+dir ttntt
+dir wshwhzw
+$ cd dpnqrg
+$ ls
+140379 dvmnw.gmd
+$ cd ..
+$ cd gsvwsc
+$ ls
+84951 pdbtbmf
+$ cd ..
+$ cd ttntt
+$ ls
+149785 brhvclj
+dir rfcssr
+$ cd rfcssr
+$ ls
+13174 lgwztd.fcm
+$ cd ..
+$ cd ..
+$ cd wshwhzw
+$ ls
+55302 clnvqg.nqz
+dir cpbh
+dir mrv
+139006 wshwhzw.chb
+dir zgtnfm
+$ cd cpbh
+$ ls
+13930 wvnzlj
+$ cd ..
+$ cd mrv
+$ ls
+207468 cqhpvpzf.zjn
+dir drgcn
+211947 pdbtbmf
+dir svc
+$ cd drgcn
+$ ls
+dir brhvclj
+247117 gnrdmjls.tps
+$ cd brhvclj
+$ ls
+162309 hpdm.ctv
+231880 jjfrh.ttr
+$ cd ..
+$ cd ..
+$ cd svc
+$ ls
+270511 cjsh
+dir ttntt
+$ cd ttntt
+$ ls
+43248 ssrrt.dqr
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd zgtnfm
+$ ls
+dir vhjtgv
+$ cd vhjtgv
+$ ls
+98550 svc
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd clnvqg
+$ ls
+dir gcnc
+141966 nrlptqrq.jtv
+$ cd gcnc
+$ ls
+268141 bqzr
+dir brhvclj
+dir cjcpzv
+262869 npp.vjv
+$ cd brhvclj
+$ ls
+dir qqr
+dir qwwl
+265677 rcnn
+$ cd qqr
+$ ls
+143274 stpjr
+$ cd ..
+$ cd qwwl
+$ ls
+dir clnvqg
+213885 mfctzj
+27640 tvp.fqv
+$ cd clnvqg
+$ ls
+dir brhvclj
+dir zzhwq
+$ cd brhvclj
+$ ls
+67021 ttntt.fjp
+$ cd ..
+$ cd zzhwq
+$ ls
+dir gsplfsvm
+$ cd gsplfsvm
+$ ls
+103196 qgjmbn
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd cjcpzv
+$ ls
+173344 bjpb.tln
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd jlsvjcdm
+$ ls
+dir bmgbjnbr
+dir brhvclj
+106074 brhvclj.cwn
+96364 gwgzvwf
+199266 hpdm.ctv
+dir svc
+168747 tsb.grv
+170407 ttntt
+$ cd bmgbjnbr
+$ ls
+dir bddbffsf
+dir brhvclj
+143376 clnvqg
+dir ddbcvhqr
+199097 flq.rls
+156627 hbjcftfb.vvj
+41970 jjfrh.ttr
+dir rlj
+dir svc
+dir wshwhzw
+dir zhczqq
+$ cd bddbffsf
+$ ls
+181609 svc.vdv
+$ cd ..
+$ cd brhvclj
+$ ls
+dir brhvclj
+64387 cdfj
+168933 fhq.lzh
+193119 njrrzm
+129346 svc.tqs
+$ cd brhvclj
+$ ls
+dir bpgmc
+dir brhvclj
+dir nrrpsn
+dir ttntt
+$ cd bpgmc
+$ ls
+42515 npp.vjv
+dir wshwhzw
+$ cd wshwhzw
+$ ls
+80221 pdbtbmf
+$ cd ..
+$ cd ..
+$ cd brhvclj
+$ ls
+74083 qfwj
+$ cd ..
+$ cd nrrpsn
+$ ls
+58623 cdfj
+$ cd ..
+$ cd ttntt
+$ ls
+117488 ddd.sbj
+69152 npp.vjv
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ddbcvhqr
+$ ls
+3037 brhvclj.ngg
+dir flz
+85361 hhjw.czf
+193196 npp.vjv
+dir svc
+173507 tmfc
+274216 ttntt.ddw
+$ cd flz
+$ ls
+249582 pdbtbmf
+$ cd ..
+$ cd svc
+$ ls
+dir ddrthl
+dir dptjfd
+dir hqncdcdh
+$ cd ddrthl
+$ ls
+148058 clnvqg
+185720 svc.wch
+$ cd ..
+$ cd dptjfd
+$ ls
+101663 cdfj
+80244 clnvqg.qzn
+98435 jrsmdsjv.dft
+dir nhjthr
+$ cd nhjthr
+$ ls
+105069 fnvztg.pwp
+dir pmgzdp
+dir qgvzbclg
+$ cd pmgzdp
+$ ls
+94671 pdbtbmf
+$ cd ..
+$ cd qgvzbclg
+$ ls
+183904 pdbtbmf
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd hqncdcdh
+$ ls
+105956 cwdsppc.hnn
+91439 pdbtbmf
+21314 wshwhzw.dcn
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd rlj
+$ ls
+173111 clnvqg
+dir gsfzgvpz
+dir ljwrdb
+102231 pdbtbmf
+$ cd gsfzgvpz
+$ ls
+266749 bcdrtwzd.nrz
+$ cd ..
+$ cd ljwrdb
+$ ls
+dir dlmhm
+dir mpmtj
+$ cd dlmhm
+$ ls
+50087 ttntt.rdv
+$ cd ..
+$ cd mpmtj
+$ ls
+254330 czh
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd svc
+$ ls
+131211 pdbtbmf
+214730 tgpprcnb.dfv
+$ cd ..
+$ cd wshwhzw
+$ ls
+225058 cppwqrg
+dir hrzsfhct
+228371 tzvn.hhj
+dir vjjgrt
+$ cd hrzsfhct
+$ ls
+dir pqvlqpdt
+139531 pvlhtz.grj
+$ cd pqvlqpdt
+$ ls
+211827 hwnlsv.hhq
+$ cd ..
+$ cd ..
+$ cd vjjgrt
+$ ls
+dir hdlcnfm
+266998 npp.vjv
+259189 qndrvvqv
+$ cd hdlcnfm
+$ ls
+dir snhftjr
+$ cd snhftjr
+$ ls
+198904 svc.wwb
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd zhczqq
+$ ls
+dir brhvclj
+$ cd brhvclj
+$ ls
+123699 ttntt.cds
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd brhvclj
+$ ls
+dir dvqszvl
+dir ttr
+$ cd dvqszvl
+$ ls
+172068 jjfrh.ttr
+$ cd ..
+$ cd ttr
+$ ls
+dir rzsqqhn
+$ cd rzsqqhn
+$ ls
+129077 cbpg
+dir clnvqg
+12120 jjfrh.ttr
+211464 npp.vjv
+12541 qgl.tvn
+136465 snbrwg.cpg
+$ cd clnvqg
+$ ls
+263592 cdfj
+249813 pdbtbmf
+190382 vpzfll.wqw
+dir wshwhzw
+$ cd wshwhzw
+$ ls
+57060 cdfj
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd svc
+$ ls
+dir clnqz
+dir ggrwpjjg
+dir mjvm
+217220 ngntgnrw.brd
+dir svc
+146817 wshwhzw
+dir zmchn
+$ cd clnqz
+$ ls
+108229 clnvqg
+195990 svc
+29403 swf
+$ cd ..
+$ cd ggrwpjjg
+$ ls
+dir gdftglf
+142336 hpdm.ctv
+190941 npp.vjv
+$ cd gdftglf
+$ ls
+209357 csfsthp.cnc
+30622 rjs
+dir ttntt
+15836 wvqc.zsz
+$ cd ttntt
+$ ls
+224617 rvsvs.dfh
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd mjvm
+$ ls
+dir ctlddnj
+dir ddwg
+207564 ncls.nwh
+139671 npp.vjv
+212692 wbqnvn.qhq
+$ cd ctlddnj
+$ ls
+254493 dzr.dfv
+123026 fmbzjww
+79075 svc
+43782 svc.vnw
+dir vgqf
+258169 vtljbndt.tvc
+$ cd vgqf
+$ ls
+277076 dhqhfb
+dir ffqg
+dir svc
+$ cd ffqg
+$ ls
+dir nrd
+$ cd nrd
+$ ls
+205734 vrwph.bgp
+$ cd ..
+$ cd ..
+$ cd svc
+$ ls
+dir brhvclj
+111819 hpdm.ctv
+68407 nglt
+168768 ttntt
+$ cd brhvclj
+$ ls
+75177 hvppncbd.sgs
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ddwg
+$ ls
+21210 phwqwshr
+207062 rftdb.mcq
+dir tthrf
+$ cd tthrf
+$ ls
+dir czjnvnn
+236764 dhhw.mbs
+25583 ljdwgwhm.fbm
+dir lrgtg
+113563 srsh.fpb
+dir vzhpqb
+110004 zgcvsc.pmm
+$ cd czjnvnn
+$ ls
+143802 cbqmvtw.zjv
+37329 svc.rwf
+$ cd ..
+$ cd lrgtg
+$ ls
+dir gpwpc
+$ cd gpwpc
+$ ls
+257389 jjfrh.ttr
+$ cd ..
+$ cd ..
+$ cd vzhpqb
+$ ls
+95696 clnvqg
+218063 clnvqg.qtd
+dir hnqqrdf
+dir ttntt
+$ cd hnqqrdf
+$ ls
+dir brhvclj
+$ cd brhvclj
+$ ls
+dir ttntt
+$ cd ttntt
+$ ls
+40453 npp.vjv
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ttntt
+$ ls
+30351 clnvqg.fwm
+60519 pdbtbmf
+dir pfhrgj
+247371 qcvs.rbj
+155276 qdjqgqqw
+$ cd pfhrgj
+$ ls
+41975 svc.fwm
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd svc
+$ ls
+110021 jftcvbl.lhh
+$ cd ..
+$ cd zmchn
+$ ls
+188817 brhvclj.zcq
+dir ddzjr
+dir fnmhc
+dir tbhwr
+dir vbtmfp
+dir zrzrjm
+$ cd ddzjr
+$ ls
+217591 clnvqg.css
+dir ttntt
+dir wshwhzw
+$ cd ttntt
+$ ls
+dir bscqn
+132748 svc.pbh
+$ cd bscqn
+$ ls
+25049 tlcwbbng.spf
+$ cd ..
+$ cd ..
+$ cd wshwhzw
+$ ls
+164106 brhvclj
+193910 chnrbb
+dir njsnwmrc
+dir nnhcsb
+195858 qrrt.pmp
+43854 ttntt
+90698 vdvfdgcl.mpr
+$ cd njsnwmrc
+$ ls
+273188 hpdm.ctv
+261368 wzpzjgw
+$ cd ..
+$ cd nnhcsb
+$ ls
+dir dmnmcgr
+67701 pdbtbmf
+145277 ptlqcl.sgt
+dir pwrjt
+13031 svc.jbb
+263232 svc.mvh
+91724 vggpwj
+$ cd dmnmcgr
+$ ls
+43175 szbcvp
+109544 vjqjzp
+$ cd ..
+$ cd pwrjt
+$ ls
+dir ffqfqvjv
+dir svc
+$ cd ffqfqvjv
+$ ls
+102537 bgmgwt.gmg
+$ cd ..
+$ cd svc
+$ ls
+177913 jswrfjvp.vgc
+145714 npp.vjv
+272487 zzsl
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd fnmhc
+$ ls
+dir dhhwdbb
+dir ttntt
+dir wshwhzw
+$ cd dhhwdbb
+$ ls
+201253 zpvv
+$ cd ..
+$ cd ttntt
+$ ls
+dir brhvclj
+40561 chb.fbh
+159663 gzwrtwtd
+119970 wwz.rft
+$ cd brhvclj
+$ ls
+19488 gwtvbzph
+98427 hpdm.ctv
+8547 swncltj.sbn
+54698 wshwhzw.fmj
+dir ztlvdwq
+$ cd ztlvdwq
+$ ls
+259702 cdfj
+230030 mbz.ttq
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd wshwhzw
+$ ls
+dir clnvqg
+dir gwcsprqv
+259902 hmrb.njt
+125791 pdbtbmf
+dir spffhcnz
+268942 srwjphc.lbp
+dir wshwhzw
+$ cd clnvqg
+$ ls
+208408 hdwf.ppm
+163498 npp.vjv
+$ cd ..
+$ cd gwcsprqv
+$ ls
+135381 hpdm.ctv
+150197 jjfrh.ttr
+61236 lwjhqc
+150026 tgwjwdwj
+dir wshwhzw
+$ cd wshwhzw
+$ ls
+51089 wshwhzw.qtb
+$ cd ..
+$ cd ..
+$ cd spffhcnz
+$ ls
+79855 bmrcdm
+dir clnvqg
+180748 jjfrh.ttr
+122314 pdbtbmf
+85765 tbpsjv.tfw
+$ cd clnvqg
+$ ls
+dir nvjj
+dir tqr
+$ cd nvjj
+$ ls
+dir gqhqmlhm
+dir mbfftpbj
+$ cd gqhqmlhm
+$ ls
+211887 brhvclj
+$ cd ..
+$ cd mbfftpbj
+$ ls
+60539 clnvqg.gqw
+$ cd ..
+$ cd ..
+$ cd tqr
+$ ls
+dir fvdch
+$ cd fvdch
+$ ls
+124864 svc
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd wshwhzw
+$ ls
+dir jrzmrg
+103956 npp.vjv
+126932 zvwpmnqh.zmh
+$ cd jrzmrg
+$ ls
+dir svc
+$ cd svc
+$ ls
+143992 jhcvmjp.flt
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd tbhwr
+$ ls
+42758 jjfrh.ttr
+$ cd ..
+$ cd vbtmfp
+$ ls
+171021 npp.vjv
+$ cd ..
+$ cd zrzrjm
+$ ls
+dir brhvclj
+201331 cgtqdtqq.gsc
+206771 clnvqg.zpr
+55754 jgprc
+dir jrww
+dir sqtzndzg
+$ cd brhvclj
+$ ls
+190144 brhvclj
+198432 rvbqglv.gzg
+$ cd ..
+$ cd jrww
+$ ls
+110574 clnvqg
+$ cd ..
+$ cd sqtzndzg
+$ ls
+189854 clnvqg.qbc
+260937 ldm
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd mzmqr
+$ ls
+117135 dfws
+98546 jjfrh.ttr
+dir jptq
+dir sctfsvs
+dir svc
+dir swsjjr
+dir tstct
+86793 vhfcwbv.wfq
+$ cd jptq
+$ ls
+dir brhvclj
+52040 cnmb
+dir fvqh
+240539 rrdsr
+dir tczvhsgn
+dir zbbq
+$ cd brhvclj
+$ ls
+254250 vtgsqs
+$ cd ..
+$ cd fvqh
+$ ls
+18471 hpdm.ctv
+$ cd ..
+$ cd tczvhsgn
+$ ls
+241619 wshwhzw.cmh
+$ cd ..
+$ cd zbbq
+$ ls
+82844 vtjbg.svl
+$ cd ..
+$ cd ..
+$ cd sctfsvs
+$ ls
+dir nbjljt
+dir rszwnh
+56137 stcmw.wwr
+$ cd nbjljt
+$ ls
+214471 fst.pwm
+$ cd ..
+$ cd rszwnh
+$ ls
+dir brhvclj
+dir ldrsbj
+280840 pzs
+274286 vpsnwfvc.bqg
+$ cd brhvclj
+$ ls
+60019 fwbgt.rmb
+$ cd ..
+$ cd ldrsbj
+$ ls
+23175 jjfrh.ttr
+120171 lpb
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd svc
+$ ls
+dir rpgm
+$ cd rpgm
+$ ls
+205836 ttntt
+$ cd ..
+$ cd ..
+$ cd swsjjr
+$ ls
+100874 cdfj
+229131 dcdm.jcz
+18144 mspnwqmw.bpc
+$ cd ..
+$ cd tstct
+$ ls
+94293 clnvqg
+110519 hpdm.ctv
+$ cd ..
+$ cd ..
+$ cd rtmg
+$ ls
+dir clnvqg
+260745 gvmlqpbs.mqm
+dir ldcwjlm
+192472 ttntt.gnf
+$ cd clnvqg
+$ ls
+121970 zsmwvt.sbw
+$ cd ..
+$ cd ldcwjlm
+$ ls
+254060 hpdm.ctv
+225558 svc.cmz
+229614 wshwhzw.dzn
+$ cd ..
+$ cd ..
+$ cd tqnmwdl
+$ ls
+50489 cdfj
+dir gltsgnf
+265020 hqnjnt.gtc
+dir psltbtl
+$ cd gltsgnf
+$ ls
+dir ttntt
+dir wgwvd
+$ cd ttntt
+$ ls
+120262 zvjh.mzl
+$ cd ..
+$ cd wgwvd
+$ ls
+172875 flt.jbn
+173182 pdbtbmf
+$ cd ..
+$ cd ..
+$ cd psltbtl
+$ ls
+dir sgqvlr
+88647 svc.jnw
+208354 svc.jzb
+98962 zsld.hjs
+$ cd sgqvlr
+$ ls
+151451 brhvclj.thj
+213287 pdbtbmf
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd dtqtvvrn
+$ ls
+253546 ttntt.dtl
+257990 wshwhzw.rqp
+$ cd ..
+$ cd lcz
+$ ls
+dir csqfmjz
+dir nfgnnt
+dir rwzmjgqz
+dir wshwhzw
+dir wtvtszw
+$ cd csqfmjz
+$ ls
+124616 wwbvnjg
+$ cd ..
+$ cd nfgnnt
+$ ls
+dir dvslq
+dir fbzss
+dir ttntt
+$ cd dvslq
+$ ls
+132520 cdfj
+dir nsq
+1447 svc.spv
+$ cd nsq
+$ ls
+265807 hpdm.ctv
+95487 wpqhvf.dqg
+$ cd ..
+$ cd ..
+$ cd fbzss
+$ ls
+153744 rccwtz.tfs
+$ cd ..
+$ cd ttntt
+$ ls
+109641 wshwhzw
+$ cd ..
+$ cd ..
+$ cd rwzmjgqz
+$ ls
+12039 tpggbsd
+$ cd ..
+$ cd wshwhzw
+$ ls
+57458 qqnznsvj
+$ cd ..
+$ cd wtvtszw
+$ ls
+dir dlr
+151194 dzwmwjz
+dir nzq
+$ cd dlr
+$ ls
+142748 nchwzm
+$ cd ..
+$ cd nzq
+$ ls
+242998 wqzpw.hvh
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd pcqjncwl
+$ ls
+10646 wpst.sds
+$ cd ..
+$ cd qwvfpgl
+$ ls
+65156 bfmt.zcb
+157745 hpdm.ctv
+104612 rtbbgjr.wpv
+$ cd ..
+$ cd rtmj
+$ ls
+79449 wngz
+$ cd ..
+$ cd shg
+$ ls
+27187 srtj.qwz
+$ cd ..
+$ cd tcdmgwp
+$ ls
+277338 wshwhzw
diff --git a/input/day_8.txt b/input/day_8.txt
new file mode 100644
index 0000000..8f78128
--- /dev/null
+++ b/input/day_8.txt
@@ -0,0 +1,99 @@
+202002313322443443333413205214140320025450316364504141264123114304203303114001123204003420102030300
+212313000221124342025540453251212255520310035503014622512241404324240404402541331004400300331322110
+332010030224230340301531501004040246520352260460326354116252046344244524210334140401240030314221201
+221301221024131121450340303252214260131364111213343344405130626304123155314054543541311324344211033
+001134433000214135052445324455546624654355260523323125133253553045204251430400315121003433044422220
+110024340203302220432202030041005313231555605566115533505425534600532263042244310025013301002122432
+202142343241025110345415445624446445344113355202423663433331226040240361512310234150014422014312341
+120231221014040554044220640131325544631255541041127752253252103362402320335611055442052140412241043
+304101021100233012133444436554401661205535772414667667451754115102616366431662351045410402233002402
+230331042045503255333014364102251313262666434422256626256566764614412322001313140132320342244311432
+301141102400324512330561535320415044526674414642717654456164545365745044506116261040015244323140033
+231132220241110100324130130545143322166173563556616563372125554727356021654340613261035251251413332
+203320424451202552446214505356253135265527113533231423523554524551155161163143626222334550222001114
+024231523321503230631342521245372255435215736461556537371121121751317427505314306502002123010412034
+040145510232550020202124627124455516526155425234552673277347264467144563753114463520045522011145324
+240244304425550155132364624615433274255211852862645772235364532654142113137206602450504451232422342
+424334205511552415565560671715111772112734875278832283468554433426522451521742450535105641322532120
+133100401525326032650034477716317357844566548887884636586578835685745454237757622666646610535221104
+242223305304135213415343353725345243424627362843632335577356738268866222511635745254444064454403022
+331241503204144326221625132445526654437248248754447372872277553375762277344562444520505011503314140
+222451434543300006524657732724686755826462744865327773328272774372386881361277646413144100602223020
+414454544234262543464462244368365765473624458443347748378276353357284728521731472310150061145432122
+431102216135016433434413645583863866258756823459689676856722332224673767726144732654216036601312045
+110042056021302336337562427723268467778543586356696798849484555383634828423561624661541545036033040
+233130533366340424442262664763637476353997734438457636478474458384564333326465264262124602145421015
+241204063143034137555565335625773883567883575869635693564466395342787853372316311463254316554250312
+204021106434203474532574577732644238364483977987654549695578595965788345665673122334133343010255050
+545511454122526751271377583327826879494576898565775448864596738363442346635565474635455064243232543
+124015635625434375317238826384863483959359789986783666664869677434837343823842652356111546364644132
+354241210264473276647664584326653653647946783946785857466783387358894383428654661215717710324561130
+244056226450134737153283634386947648667343795757554497954898635566776763644735545173126352624425020
+501324141203722175363238762648494967439479987887696675878464444733446494872553246567237465053516212
+124454612231317724443537666649848658354577798467554676466685998895664436347585644634216747461605663
+444220351051321723632583255595773459868897594678655845666879757469695495456426765727653232001214613
+543415566433561456232786335548987337775874478855474645667479645683933635533375645234665367636633651
+530466162316434373545644848445489775499587455748589658584498988576664989538548655685716224502165333
+235553430155252418662326494855584476654765446847698998974986756847936484493638765583146163725434525
+310360654533722362728523488436493558969996756767575985755767774769466767793646674763166562576015621
+325614303744164255433237739477846644568969987655575799855985845775957857639672455744841244170500440
+503515002355336284762634697976487678966879556557679889675955589869487648536567234728851425445561434
+543324643653742448624433599753598966565767666598867958799856754678485656376459464724213745353256500
+424103217216134323283434554946357547857767597585675689859575974787896473853787835228441512611606640
+250304641276277558773624439786746445898556998895887655878685889784588785835399278825226257656316456
+345463264572334567387256787858445544645556959975787756996857575877564946576444487536853156173434515
+161602652143411253367838475869799955968676977879766978885597865889664759447954958773226534633601264
+425255315411463546634735936474878586798978997677669676798889865697568457553348834768551317414265641
+234033463437423662763283959368645469455555866987776986698877578774866488666969955245374145544441623
+263636217315313825577865757479668665967695777867766779768668996864488656989883458726646674514525511
+414022642352612738772698548548946555775959857777688888669975865965945954569559444566834371561235240
+626645264156227353287767567366856886676578966679977979667696756679988685477675656584254614315521534
+141252624567664677828886434838768857955979876666969698786698969754567989787396562527238135476552660
+561116074375644526333736555595544896786968966976977997766676677666986777499545768822354754143466332
+640134335336664367747687845787987597685679698978788978879896585767488999869854847362476731511356241
+122566575557672854685858389735665896958579588778989888987596889896554676975794558735663243216725024
+622222555471614528744598736564486874589976996698777696679756695597854959586596528866486767125750425
+420556462341434263425678855644549848459689687977998667968775668946499845947638767286571573445302316
+153401561272311464882769939493697496869895765798867978898769959646765788757935955564662266664350020
+013313231114626266432864594633565767798995787676787879588887569996649773766959635454884663212340545
+532215627116623645744769753668949665878576988558956966987866657689789897574757843566561641651164202
+450601415622125355356368488837847498867787786799888699666587767988546989739799625367647376766514525
+132355556713615268557775868585955849749679856695885666656767667454658976438866274426545173713503424
+140363023176115776535475859453935445956676569686687689879769756896678849374653357232443563250603624
+555455453332353643328265463674488487677659785966787969895954479496764396934557558828651662273322156
+126055665555676465455653358794473489784867699566988677887774657674865436594725534325162527364425454
+424236562661632716477544757996995899646765977676757796446899758789936969594733554244341314246106356
+135664342046737243753657865736877354784767579696499494585854598586968344888482585764775221150460432
+344344143357321137635487849484434336494875487675577984647444795955996398565666287683142755200412361
+414412353051761177373387236955658343565579456876599987585868476443368777592334237632432165500034134
+344222350343246157155255424535673748655865864986555696699778567479637584386522672344234517610314264
+303525035340142365235266633256899897484946659875878967575986439538577438532348255423232624315603544
+510360601501172132135462465243343789945984697644794559468647896656775633328382288156772775241356112
+244355065300035434315633638622366843368655487769664895769979663363655675357453742377443633663346142
+543050131342642155264665386866379467794949993697734675839557966585757563732683714633526145166334412
+251422612632162765477554485862386899688967865977755368655846774644737246723864225342434523316423234
+535030453166161574317736827787562575357946899856345696768476976499427585553774225613174414155545203
+451512340514125213652261633852837673947556656599369877579547445535876827567436531662350302444041243
+033335530105503441451253564883648443326876639459998839433543553388842558572361376415226141134602541
+304432111501100651754116177585225473385738444645866989935538477775342885231334255374502153460230350
+532031530144611101611317655656232366528772853465566773976378637453482452343331275146210626455403524
+012504432204304640225665641317778444385425328864724366378324622327743456125442217372022160305110234
+423330153504112303542265616531228643228676746426328835672356636538675673621573612560004436420330151
+323321500212164213037737677445413688473546378425227262668778538578545546734311666243650663254002451
+040305323234252401530453457637172235782628463783548274258737388837337454577642612225610462012021013
+014421203421445064446506474465661471783776826638336854777768476773252621522666325565433244545553213
+203353533234533642651045661415434436734475362377466258588352323543664136375224260403562354030401203
+430143224545323216313162327161435122244647775242765557228261267335671742531564542126211410421135434
+311115413443044633036265137463752661235223746112744444721551372635624713663424662444323552052513344
+134313534132001040304122015236726566356671331522244364434524166341154325353311501362040351444450020
+411143423205141252652033316260315365572263763132742674322315253667543711643300545065310242032324020
+144341145402305205020640440563232327377646232274132447222637451213446334050331022204312235341032244
+100112332452301131334340450350201034154563646746333747731225537677742552525011500010314510431132014
+221320130310004120220446050664152326055763773453162437516516576134605322403126405442152350241130304
+241101113220305530315466104556331100306117166126725673116524503062565103142063320533420154322010431
+300413413431025050053455545511501350201353245414366717162612025321566536123553051412314441133131101
+330231204004004415320523326541625211601352531640552445135123515524650251203003153345052023224223041
+323031413443333543540440514335332454342430446605433036305445612534333404345522552510512242414121433
+201012341123333315224534110123345050436205551211152343641503546320233130510552230421204123134014033
+030231013300430225134314421310156226302452500603162133325435662050366331135501505435404110101401101
+301302243133113000115553304435551505352615146115031661551161050412521420141400134222424010304012133
diff --git a/input/day_9.txt b/input/day_9.txt
new file mode 100644
index 0000000..d5e15df
--- /dev/null
+++ b/input/day_9.txt
@@ -0,0 +1,2000 @@
+U 2
+L 1
+U 1
+D 2
+L 2
+D 1
+L 2
+R 2
+D 2
+U 2
+L 2
+D 1
+L 2
+U 1
+R 2
+D 2
+R 1
+U 1
+R 1
+L 1
+D 2
+R 1
+D 2
+R 2
+D 2
+L 2
+U 1
+R 1
+L 1
+D 2
+L 1
+R 1
+U 1
+D 1
+R 1
+D 2
+R 2
+L 1
+R 2
+L 2
+U 1
+L 1
+D 2
+U 2
+D 1
+R 2
+L 2
+D 1
+R 1
+D 2
+U 1
+D 2
+R 2
+U 2
+L 2
+D 2
+R 2
+L 1
+D 2
+L 1
+U 2
+R 1
+L 2
+U 1
+R 2
+U 1
+D 2
+R 2
+U 1
+D 2
+L 2
+D 2
+L 1
+R 1
+D 1
+L 2
+D 2
+U 2
+R 1
+U 1
+R 2
+U 2
+L 2
+R 2
+L 2
+R 1
+U 2
+L 2
+R 1
+D 1
+L 1
+D 1
+U 2
+R 1
+U 2
+R 2
+U 2
+L 2
+U 2
+L 2
+U 1
+R 1
+U 2
+R 2
+L 2
+R 2
+U 1
+R 1
+D 1
+U 1
+L 2
+R 3
+L 2
+U 3
+L 1
+R 1
+U 1
+D 1
+U 1
+D 1
+R 3
+U 3
+L 3
+U 1
+R 2
+D 1
+U 2
+D 2
+U 3
+L 2
+U 3
+R 1
+L 2
+U 1
+L 2
+D 2
+U 3
+D 1
+R 3
+U 3
+R 3
+L 1
+D 2
+U 2
+D 3
+U 1
+R 2
+L 1
+D 1
+L 1
+D 3
+R 1
+U 2
+L 2
+D 2
+U 3
+D 2
+U 1
+D 3
+U 2
+L 3
+R 2
+D 2
+R 3
+L 3
+R 1
+D 1
+L 2
+R 1
+D 2
+L 3
+R 2
+U 1
+L 3
+D 2
+R 3
+D 3
+U 1
+L 1
+D 3
+U 3
+D 3
+R 3
+U 1
+D 1
+L 1
+R 3
+L 3
+U 1
+D 3
+R 1
+L 3
+R 3
+D 2
+L 3
+D 3
+U 3
+L 1
+U 1
+L 2
+D 3
+L 2
+U 3
+L 3
+U 1
+R 2
+D 3
+U 2
+R 2
+U 1
+L 2
+D 2
+L 2
+D 1
+U 3
+D 1
+L 1
+U 2
+D 1
+R 2
+L 2
+R 3
+L 2
+R 1
+D 1
+R 1
+D 2
+L 4
+D 3
+R 3
+D 4
+L 3
+D 1
+U 2
+D 1
+L 4
+R 4
+L 3
+R 2
+L 1
+R 2
+D 1
+R 1
+D 4
+U 1
+D 2
+R 3
+D 3
+R 2
+U 1
+D 2
+U 2
+L 1
+D 3
+U 4
+L 3
+U 2
+L 4
+D 4
+L 1
+U 3
+D 2
+R 3
+D 2
+L 2
+U 3
+L 3
+R 2
+D 2
+R 2
+U 3
+L 2
+R 4
+L 4
+U 1
+D 3
+L 2
+R 3
+L 2
+R 3
+D 4
+R 1
+L 1
+U 1
+L 2
+D 3
+L 4
+R 2
+D 2
+U 3
+D 4
+L 3
+R 1
+U 4
+L 3
+D 4
+L 1
+D 3
+L 4
+R 2
+L 1
+R 4
+L 4
+U 3
+D 4
+U 1
+R 2
+D 3
+U 3
+R 2
+L 2
+R 2
+U 4
+L 4
+D 4
+L 3
+D 3
+U 1
+D 1
+U 4
+R 1
+L 2
+U 2
+L 3
+U 3
+L 3
+D 1
+L 2
+U 3
+L 3
+U 2
+L 2
+U 2
+L 4
+R 1
+L 2
+D 2
+R 3
+L 5
+U 1
+R 5
+D 3
+L 5
+U 3
+D 1
+L 3
+R 2
+D 2
+U 3
+R 5
+D 5
+R 1
+D 4
+U 1
+R 1
+L 4
+D 1
+U 3
+D 4
+L 1
+D 1
+L 2
+U 1
+L 3
+R 1
+D 1
+U 1
+D 2
+L 5
+U 2
+R 3
+D 4
+L 4
+R 1
+L 4
+R 5
+D 4
+R 4
+L 4
+U 3
+L 3
+R 1
+D 1
+R 4
+U 1
+R 3
+U 5
+R 5
+D 2
+R 4
+D 5
+L 2
+D 4
+U 4
+R 3
+D 2
+L 5
+R 4
+D 4
+L 1
+D 4
+L 4
+D 4
+R 2
+D 5
+L 4
+U 3
+D 5
+U 5
+L 1
+U 3
+L 2
+U 2
+R 2
+U 3
+D 3
+R 1
+L 3
+R 1
+U 4
+D 1
+R 1
+L 1
+R 4
+L 1
+R 3
+D 4
+U 5
+L 4
+U 5
+L 5
+U 4
+L 3
+D 2
+L 1
+U 1
+R 4
+L 5
+D 3
+U 3
+L 2
+D 1
+L 1
+U 4
+R 6
+U 5
+L 4
+R 3
+U 4
+L 5
+U 3
+D 1
+U 3
+R 4
+L 3
+D 6
+R 1
+L 2
+U 6
+D 6
+R 2
+L 4
+D 1
+R 5
+L 3
+D 1
+R 2
+D 3
+L 6
+U 5
+D 1
+U 2
+R 2
+L 5
+U 1
+D 3
+R 5
+D 2
+L 1
+D 6
+R 4
+D 5
+L 1
+R 2
+L 3
+R 4
+L 6
+U 5
+L 3
+D 4
+R 4
+U 1
+D 3
+R 4
+L 4
+R 1
+U 2
+R 6
+D 1
+L 4
+R 2
+D 5
+R 6
+D 3
+R 5
+L 1
+R 2
+U 2
+D 2
+L 4
+D 6
+L 1
+R 2
+U 3
+D 6
+L 1
+R 3
+L 1
+D 1
+R 6
+D 6
+L 1
+U 4
+L 4
+U 6
+R 6
+L 6
+D 1
+U 2
+R 6
+L 6
+U 6
+D 1
+R 5
+U 4
+R 2
+L 2
+R 5
+U 5
+R 6
+U 2
+D 3
+R 6
+D 2
+R 3
+L 6
+U 5
+R 2
+D 5
+L 3
+D 5
+U 2
+D 4
+L 1
+D 3
+U 1
+L 4
+D 2
+L 3
+U 5
+R 5
+L 3
+D 7
+R 5
+L 5
+U 5
+L 7
+U 3
+L 2
+R 5
+D 1
+R 4
+U 1
+R 5
+U 6
+R 1
+L 3
+U 7
+L 6
+R 2
+L 3
+U 6
+L 4
+D 1
+L 6
+U 2
+L 6
+U 2
+L 4
+U 2
+L 4
+U 4
+D 3
+U 1
+R 1
+U 5
+L 2
+R 3
+D 7
+R 4
+U 4
+R 1
+D 1
+L 7
+R 2
+U 3
+D 1
+U 1
+D 1
+L 2
+R 5
+U 2
+R 5
+U 7
+L 2
+R 6
+U 2
+R 1
+L 7
+U 2
+R 3
+U 2
+R 7
+D 7
+R 6
+U 4
+L 1
+R 1
+U 6
+R 6
+U 1
+L 7
+R 6
+L 2
+U 5
+L 3
+R 4
+D 4
+R 6
+L 5
+D 1
+U 4
+D 6
+L 4
+R 4
+D 1
+L 3
+U 2
+L 7
+R 2
+U 7
+R 3
+L 6
+D 6
+U 3
+D 7
+U 7
+D 7
+R 7
+U 5
+L 2
+U 5
+D 4
+L 4
+U 2
+L 6
+U 4
+D 3
+L 6
+U 7
+R 3
+D 2
+U 2
+L 7
+D 5
+L 2
+U 6
+R 8
+D 7
+R 5
+U 5
+R 3
+L 1
+U 6
+R 3
+D 7
+U 3
+R 4
+U 5
+D 4
+R 1
+D 6
+L 7
+D 2
+R 5
+U 4
+L 1
+R 1
+L 7
+U 6
+D 1
+L 1
+D 8
+U 1
+L 7
+R 1
+U 6
+D 6
+L 4
+U 1
+L 3
+D 6
+R 6
+D 3
+R 7
+U 3
+L 7
+R 6
+L 3
+D 2
+L 4
+U 1
+R 1
+D 7
+L 8
+R 1
+L 7
+D 1
+L 1
+R 3
+U 1
+R 8
+L 6
+D 3
+U 3
+R 2
+D 7
+R 6
+L 2
+R 1
+U 4
+R 6
+L 6
+D 4
+L 4
+U 6
+L 2
+U 7
+D 3
+R 3
+L 5
+R 7
+D 7
+U 8
+L 6
+U 6
+D 7
+L 8
+U 8
+L 6
+U 1
+D 1
+U 8
+D 5
+R 5
+U 7
+D 3
+U 3
+D 2
+U 4
+L 6
+D 6
+L 2
+D 4
+R 2
+L 7
+R 4
+U 4
+D 6
+R 7
+D 6
+U 1
+D 2
+U 1
+D 4
+L 2
+R 4
+L 7
+U 5
+L 3
+D 6
+U 5
+L 6
+U 3
+L 3
+U 1
+D 1
+L 6
+U 3
+L 8
+D 3
+R 7
+L 2
+U 8
+R 5
+U 8
+R 9
+U 9
+L 8
+U 5
+D 3
+U 4
+R 8
+U 4
+L 6
+R 6
+L 8
+R 8
+U 2
+L 2
+R 5
+D 7
+L 3
+D 4
+L 5
+D 1
+R 7
+D 6
+R 6
+D 2
+R 8
+U 8
+R 2
+D 4
+U 3
+R 4
+U 2
+L 3
+U 4
+D 5
+R 4
+U 9
+D 4
+R 7
+L 1
+D 7
+U 6
+L 1
+U 3
+D 8
+R 3
+U 4
+D 2
+L 6
+R 8
+D 5
+R 5
+D 1
+U 2
+L 7
+D 7
+U 6
+D 3
+U 6
+R 9
+U 2
+L 7
+U 4
+L 7
+U 4
+D 3
+U 9
+R 5
+D 2
+U 1
+L 6
+D 2
+L 8
+U 5
+R 3
+U 9
+R 2
+U 9
+L 7
+D 6
+L 4
+R 1
+L 4
+D 5
+R 5
+L 1
+R 8
+L 7
+U 2
+R 9
+L 1
+R 2
+D 4
+U 5
+R 5
+L 10
+D 7
+U 7
+R 9
+L 1
+R 9
+D 7
+U 4
+L 8
+U 9
+R 10
+D 3
+U 2
+D 2
+L 10
+R 7
+L 2
+R 4
+U 10
+R 7
+D 5
+L 7
+R 8
+D 6
+R 6
+U 1
+R 1
+L 4
+D 7
+R 10
+L 3
+U 4
+D 10
+L 5
+R 10
+D 7
+U 2
+D 8
+L 5
+R 2
+D 5
+U 9
+R 6
+L 6
+U 5
+L 3
+R 3
+D 6
+L 3
+U 4
+D 10
+L 6
+U 7
+L 4
+D 5
+L 4
+D 8
+R 5
+U 8
+R 8
+L 1
+D 4
+R 7
+U 5
+D 3
+L 5
+D 3
+L 7
+U 7
+R 4
+U 1
+R 7
+L 3
+R 3
+D 2
+U 6
+D 6
+U 1
+R 6
+D 1
+U 4
+R 5
+D 3
+R 8
+L 2
+D 10
+L 7
+D 10
+U 9
+D 6
+U 3
+L 8
+U 9
+R 10
+D 10
+R 5
+L 10
+D 6
+L 6
+R 11
+D 6
+L 1
+R 8
+U 10
+R 8
+L 8
+R 10
+U 8
+R 4
+L 8
+D 7
+U 4
+L 1
+R 10
+U 10
+L 6
+R 10
+L 6
+U 8
+R 11
+D 9
+L 1
+R 2
+D 10
+L 4
+U 8
+D 9
+L 11
+R 7
+U 7
+L 2
+D 1
+R 8
+U 11
+D 5
+R 4
+U 7
+L 8
+D 7
+R 10
+D 1
+R 5
+U 4
+D 3
+U 4
+D 11
+L 8
+R 10
+D 7
+U 1
+D 11
+U 1
+D 10
+R 5
+L 2
+R 10
+U 9
+D 8
+L 3
+U 6
+R 11
+L 4
+U 4
+R 3
+L 3
+U 2
+R 8
+U 6
+R 7
+D 6
+U 1
+R 3
+L 6
+D 4
+L 2
+D 8
+U 2
+D 3
+R 10
+D 10
+R 1
+L 2
+R 4
+D 10
+L 1
+U 3
+D 1
+R 7
+D 9
+R 1
+L 10
+R 9
+U 11
+R 1
+L 5
+U 7
+R 8
+L 3
+D 5
+R 11
+D 4
+R 2
+U 6
+D 11
+L 5
+D 5
+L 3
+U 7
+R 5
+L 11
+U 11
+L 10
+R 9
+D 2
+U 2
+R 2
+D 11
+L 3
+U 4
+R 3
+U 5
+D 5
+L 5
+U 5
+D 3
+U 5
+D 7
+R 9
+L 1
+D 11
+U 11
+L 5
+R 10
+L 3
+U 12
+L 8
+U 4
+R 12
+U 12
+D 6
+U 1
+L 11
+R 8
+U 8
+R 12
+U 2
+D 12
+R 4
+L 1
+U 12
+R 1
+L 8
+R 5
+U 11
+L 8
+R 2
+L 10
+R 3
+D 11
+L 2
+U 11
+D 7
+L 5
+R 8
+L 5
+U 7
+R 10
+U 3
+L 6
+U 1
+R 9
+D 12
+R 10
+D 3
+R 2
+D 8
+R 2
+D 3
+U 2
+L 12
+D 8
+L 4
+U 8
+D 10
+U 11
+R 11
+U 6
+L 10
+U 3
+L 5
+U 12
+L 9
+R 8
+L 12
+R 3
+D 11
+U 11
+L 9
+R 8
+L 1
+U 2
+L 6
+R 6
+D 5
+R 1
+D 7
+L 3
+U 8
+R 1
+U 12
+R 6
+L 9
+U 6
+R 2
+D 8
+L 11
+U 1
+R 2
+L 3
+U 4
+L 12
+U 1
+D 7
+U 3
+D 10
+L 6
+D 1
+R 2
+U 7
+L 3
+U 2
+D 6
+R 5
+L 11
+R 9
+D 5
+R 8
+L 6
+D 3
+U 7
+L 6
+D 10
+U 4
+L 9
+R 2
+D 8
+U 2
+L 7
+D 13
+R 6
+L 6
+U 3
+D 9
+L 5
+R 11
+D 13
+U 6
+D 8
+L 7
+U 13
+L 3
+D 2
+U 7
+D 12
+L 3
+R 10
+L 8
+D 8
+U 5
+R 4
+U 12
+R 2
+D 11
+L 12
+D 12
+L 11
+D 1
+R 10
+D 10
+U 10
+D 2
+L 2
+R 7
+L 13
+U 5
+L 10
+U 5
+R 5
+L 13
+D 7
+R 9
+U 2
+D 11
+U 4
+R 1
+L 5
+D 7
+L 5
+D 6
+U 7
+R 8
+U 10
+D 12
+R 2
+U 6
+L 12
+D 12
+L 8
+U 1
+D 8
+U 9
+D 11
+U 8
+D 1
+L 9
+R 10
+U 4
+D 4
+U 12
+L 9
+D 13
+L 12
+R 12
+L 11
+D 12
+U 9
+D 1
+R 4
+U 5
+R 8
+U 6
+R 10
+U 1
+L 7
+D 12
+R 13
+D 10
+L 1
+U 9
+L 9
+R 2
+L 14
+R 8
+U 6
+D 7
+R 4
+L 9
+D 3
+L 11
+R 13
+U 6
+D 6
+L 2
+R 6
+U 1
+L 13
+R 9
+D 9
+L 5
+R 9
+D 4
+U 13
+L 9
+D 7
+U 8
+D 1
+U 11
+L 12
+U 4
+D 7
+R 6
+D 13
+L 12
+R 8
+L 6
+U 1
+R 13
+U 9
+D 2
+U 2
+D 1
+U 6
+R 8
+U 2
+R 6
+D 8
+L 10
+D 14
+U 6
+D 8
+L 3
+R 2
+U 4
+D 10
+U 13
+R 1
+L 11
+D 2
+L 6
+D 14
+U 8
+D 11
+R 1
+L 8
+R 12
+U 1
+D 4
+U 10
+L 9
+D 11
+L 10
+U 13
+D 7
+U 4
+L 11
+U 8
+R 12
+D 4
+L 1
+U 7
+D 5
+U 6
+R 7
+L 8
+U 13
+L 1
+D 8
+U 14
+D 5
+U 10
+D 14
+L 6
+U 4
+L 9
+D 6
+U 7
+L 14
+R 13
+D 11
+R 6
+D 10
+U 6
+R 8
+D 14
+U 14
+L 4
+U 2
+L 4
+R 8
+U 14
+D 2
+L 15
+U 4
+D 6
+R 3
+U 3
+L 12
+U 4
+D 8
+R 14
+U 15
+R 3
+D 10
+R 14
+L 15
+R 9
+D 9
+L 10
+U 7
+L 13
+R 4
+U 4
+D 13
+L 14
+U 7
+L 4
+R 5
+D 7
+R 4
+D 15
+R 15
+U 1
+L 2
+R 14
+L 7
+U 13
+R 12
+L 5
+U 8
+L 15
+U 6
+R 11
+L 12
+U 13
+R 4
+U 15
+D 5
+R 14
+L 6
+U 1
+D 5
+L 7
+U 13
+D 8
+U 2
+D 11
+L 6
+R 2
+L 10
+R 6
+L 14
+D 7
+R 6
+L 10
+R 4
+U 1
+L 3
+R 6
+L 8
+D 14
+R 3
+D 15
+L 9
+D 10
+U 11
+R 5
+D 11
+U 4
+R 2
+D 2
+U 6
+L 7
+D 5
+L 12
+U 3
+R 8
+D 13
+R 9
+D 1
+L 3
+R 14
+L 3
+D 13
+L 15
+U 2
+L 2
+U 12
+D 1
+L 9
+U 2
+D 8
+R 12
+L 5
+R 9
+U 15
+D 4
+R 7
+U 9
+R 13
+U 14
+L 1
+U 1
+R 15
+D 1
+R 2
+U 11
+R 8
+D 9
+R 1
+U 13
+D 3
+L 4
+U 6
+L 12
+U 5
+L 2
+R 11
+L 5
+R 4
+D 11
+L 9
+U 15
+L 12
+U 16
+L 12
+D 6
+L 3
+D 12
+U 2
+L 4
+R 15
+U 16
+D 13
+L 14
+U 13
+D 11
+R 14
+L 13
+U 9
+L 9
+D 15
+R 1
+D 4
+L 8
+R 1
+D 12
+U 1
+L 13
+D 8
+U 7
+D 7
+L 12
+D 11
+L 7
+U 5
+R 14
+L 6
+R 8
+L 15
+U 12
+R 13
+U 7
+L 1
+D 12
+U 16
+L 8
+U 1
+L 1
+U 6
+D 14
+U 2
+R 9
+L 15
+R 4
+D 5
+U 10
+R 7
+L 15
+R 5
+D 1
+L 1
+D 4
+L 1
+R 4
+D 10
+U 13
+L 1
+R 13
+U 16
+R 15
+D 5
+U 6
+D 1
+R 5
+D 4
+U 6
+R 8
+L 1
+D 3
+U 13
+D 14
+U 11
+D 7
+U 12
+L 1
+D 3
+U 1
+R 2
+U 9
+R 2
+D 5
+L 8
+U 4
+D 1
+L 9
+R 5
+D 12
+R 12
+L 12
+R 16
+L 10
+R 15
+U 7
+D 13
+R 14
+D 12
+R 2
+L 7
+U 5
+L 15
+D 5
+R 12
+U 14
+D 2
+U 11
+R 8
+U 2
+L 5
+D 10
+U 7
+L 3
+U 15
+R 2
+U 11
+L 10
+D 4
+U 6
+D 15
+L 9
+D 8
+U 11
+L 10
+R 17
+D 2
+U 1
+R 7
+U 9
+L 4
+R 5
+L 11
+U 11
+R 13
+L 7
+D 17
+U 10
+D 5
+U 17
+L 1
+U 3
+D 4
+U 16
+D 17
+U 10
+D 12
+U 1
+R 4
+D 2
+U 1
+D 1
+L 9
+D 6
+L 1
+U 8
+L 2
+D 1
+U 10
+L 14
+U 17
+D 12
+U 1
+R 1
+D 8
+L 7
+D 10
+L 15
+R 15
+D 14
+R 12
+D 5
+L 1
+R 14
+L 2
+D 8
+R 15
+U 6
+L 4
+R 5
+D 11
+L 16
+R 11
+D 14
+L 14
+R 16
+U 12
+R 2
+U 16
+L 3
+R 4
+U 15
+R 15
+D 3
+U 17
+R 5
+L 2
+R 15
+D 13
+L 2
+U 4
+L 6
+R 5
+L 5
+R 4
+L 9
+U 3
+L 9
+R 15
+L 4
+R 1
+U 3
+L 1
+D 3
+R 9
+D 9
+L 10
+R 14
+L 18
+U 7
+R 11
+L 6
+R 16
+U 9
+R 5
+U 5
+R 9
+D 9
+L 12
+D 18
+L 11
+D 18
+L 2
+D 8
+R 6
+L 1
+U 11
+L 6
+U 18
+L 8
+D 12
+L 8
+R 15
+L 15
+R 13
+L 10
+D 15
+R 10
+L 11
+R 14
+D 6
+L 9
+U 3
+R 10
+U 18
+R 9
+L 9
+D 4
+L 17
+D 16
+U 10
+R 14
+L 15
+R 5
+U 2
+L 4
+R 15
+U 2
+D 2
+R 9
+U 14
+D 17
+U 5
+R 1
+U 15
+R 17
+D 4
+R 7
+L 4
+R 16
+L 11
+U 10
+R 3
+D 2
+L 5
+R 14
+L 4
+D 11
+L 11
+U 6
+R 9
+U 3
+R 17
+D 16
+R 18
+L 10
+R 15
+L 14
+R 16
+L 12
+U 3
+R 9
+D 17
+R 6
+L 1
+R 16
+L 8
+U 16
+R 6
+L 1
+U 4
+L 17
+R 4
+U 15
+R 19
+D 7
+R 18
+L 16
+R 18
+U 2
+D 11
+L 17
+R 2
+L 10
+U 17
+D 11
+R 17
+U 1
+D 15
+U 6
+D 19
+R 16
+D 12
+L 7
+R 13
+D 14
+L 12
+U 14
+L 5
+R 5
+D 3
+L 10
+U 16
+R 14
+D 16
+L 9
+D 16
+L 10
+R 11
+D 11
+U 19
+L 4
+D 16
+R 8
+D 1
+U 4
+L 15
+R 5
+D 1
+L 19
+D 19
+R 12
+L 18
+D 13
+L 4
+U 6
+R 5
+D 12
+R 15
+D 9
+L 9
+U 16
+D 1
+R 16
+L 7
+R 6
+D 12
+L 7
+R 8
+U 17
+L 12
+D 9
+L 8
+D 16
+R 8
+D 9
+L 17
+R 3
+U 6
+D 1
+R 7
+L 4
+D 10
+U 7
+R 13
+L 10
+D 19
+U 7
+D 10
+L 17
+R 18
+D 15
+R 6
+L 7
+R 8
+U 16
+R 6
+D 3
+L 19
+D 10
+R 12
+U 13
+L 11