commit 48416e313124a05aa5c05addc4e8b5590aa6dbf4
parent 92b7b6e3c5be5f10679c5d519ec864ba80c50e70
Author: Lukas Henkel <lh@entf.net>
Date: Tue, 20 Dec 2022 07:24:56 +0100
Day 20 task 1
Diffstat:
4 files changed, 5060 insertions(+), 2 deletions(-)
diff --git a/adventofcode2022.asd b/adventofcode2022.asd
@@ -30,7 +30,8 @@
(:file "day16")
(:file "day17")
(:file "day18")
- (:file "day19")))
+ (:file "day19")
+ (:file "day20")))
(defsystem "adventofcode2022/test"
:description "My solutions to the advent of code 2022"
@@ -59,4 +60,5 @@
(:file "day16")
(:file "day17")
(:file "day18")
- (:file "day19")))
+ (:file "day19")
+ (:file "day20")))
diff --git a/input/day20.txt b/input/day20.txt
@@ -0,0 +1,5000 @@
+-2420
+-4714
+4824
+-8212
+3533
+6535
+-4665
+1908
+-4128
+9266
+-6213
+9394
+-7999
+6199
+-6905
+-6728
+1490
+-6630
+-3061
+3216
+1119
+-6439
+-5156
+6868
+-3201
+5921
+-7940
+-8521
+-9130
+-1430
+6557
+-559
+9032
+-7885
+6399
+197
+9833
+-3060
+9843
+-9442
+6451
+8625
+-3283
+1316
+2949
+-8375
+8381
+-1943
+-1723
+353
+6718
+-956
+-4416
+-1784
+-3423
+5647
+-5537
+4166
+-8864
+-4028
+3145
+2907
+-4352
+5353
+-5355
+7866
+1604
+1792
+-8875
+4922
+-5011
+9783
+-2975
+-8105
+8159
+426
+8870
+8197
+-5860
+-7868
+190
+5276
+855
+1355
+-1480
+5724
+6960
+0
+7272
+9108
+9466
+8453
+-7699
+-200
+5333
+-6095
+7949
+-5377
+-9978
+-6701
+3533
+4802
+-6515
+-4171
+-6794
+9980
+3907
+9224
+-2951
+4333
+-2174
+7460
+-9341
+2407
+-343
+-819
+-6043
+-8858
+5637
+9805
+3671
+8410
+7255
+3480
+3247
+5470
+-1766
+-8281
+1359
+950
+7805
+-1214
+-3231
+-1899
+9600
+-8505
+2050
+-5112
+-2172
+-2957
+-5994
+5136
+2363
+9804
+-1348
+-3861
+-1637
+4499
+7475
+5025
+1293
+4537
+6623
+-121
+4020
+4682
+1673
+7907
+-8224
+-2009
+7015
+3681
+1859
+-5342
+-6374
+-5069
+-3804
+-1323
+-716
+-2295
+8974
+-7675
+-5422
+5434
+3309
+-3989
+-6925
+6804
+-6338
+662
+4582
+1161
+-7723
+5690
+3447
+7147
+-3340
+7879
+9372
+-6896
+-5341
+-4214
+-9346
+4840
+-9351
+4665
+8471
+3604
+1859
+-8285
+7619
+1991
+9732
+-2302
+-9360
+2341
+6383
+-7666
+-3835
+2139
+-4541
+9518
+7118
+3583
+6140
+-3162
+-8703
+-6998
+-5443
+-225
+7811
+-6692
+4645
+9196
+-7459
+8692
+-2396
+-3507
+3439
+5316
+3196
+3415
+-94
+-9856
+-8721
+2776
+-5885
+474
+8093
+3513
+1912
+6877
+2836
+6079
+7510
+9743
+7189
+-773
+1831
+-8259
+8596
+-9276
+8176
+-4001
+6999
+9031
+2303
+-8372
+-2157
+707
+-6082
+-9346
+2311
+1998
+-8369
+-7166
+3660
+-7877
+-9967
+-8785
+-7226
+-9100
+9933
+-531
+-2997
+9617
+-9066
+-9998
+2312
+-8492
+1943
+-2021
+9296
+8447
+-6769
+-7116
+-4609
+-761
+-581
+2358
+-7033
+725
+7423
+-5339
+-6790
+4374
+5236
+7807
+-2391
+1336
+-1537
+302
+-5312
+2877
+-4823
+-799
+-5419
+5275
+-6203
+9743
+2433
+-8867
+-7049
+7053
+3848
+-5699
+6381
+-851
+-4872
+-7267
+-456
+-9026
+-8259
+9307
+-4962
+-1660
+5041
+6712
+-5555
+-3289
+6312
+6659
+-5754
+2129
+-7357
+-3431
+8799
+7882
+2139
+8795
+-4416
+-9481
+5455
+5906
+6426
+-9100
+-3118
+-2159
+-1725
+5182
+4592
+-2392
+-6269
+142
+-7049
+8717
+-7049
+4905
+-9221
+1557
+3420
+696
+-3776
+-1460
+-312
+-8827
+-2438
+-6240
+4186
+-3965
+-7807
+-3503
+4534
+-4937
+-3567
+-995
+5041
+9780
+5901
+-6861
+-6330
+-7306
+-819
+-6037
+-5660
+-9561
+-159
+7642
+-8164
+3425
+8543
+-8592
+375
+-3858
+7539
+9794
+-7136
+-2518
+203
+3048
+4551
+-4891
+4711
+8195
+8289
+-3220
+-1876
+3659
+-9516
+-3742
+-7165
+-5321
+-9350
+1490
+-3146
+-788
+-8555
+-266
+3425
+-3118
+-2513
+-8494
+-1042
+-2988
+-3073
+6069
+-4001
+-3603
+-9162
+-533
+-8919
+-3509
+1419
+7177
+8125
+8182
+2838
+-3235
+-8252
+867
+-4892
+-9508
+-6550
+8852
+8911
+-3902
+-4275
+-268
+-7014
+-7507
+-5238
+1727
+7624
+5827
+-2572
+8073
+-7164
+8293
+1986
+9213
+-7614
+4569
+3173
+-4557
+3863
+9332
+-8832
+5689
+9610
+-6250
+126
+-2055
+-5553
+73
+-1694
+-6749
+-5838
+-2656
+-4651
+9466
+-4951
+552
+6744
+6752
+-8265
+-7318
+-6614
+9442
+-3258
+-9580
+-7777
+-6099
+5994
+4905
+-9302
+4806
+-7194
+2004
+6725
+1887
+-1529
+-3870
+-7209
+-4468
+-3070
+9326
+6537
+-9099
+7655
+7419
+4635
+-2058
+-3106
+9476
+8433
+6866
+-9351
+-5147
+-8464
+-517
+-8642
+-9332
+510
+-6584
+6165
+5780
+6269
+-4340
+6333
+8799
+-6088
+3171
+-9231
+6678
+8165
+6170
+-6043
+2196
+-2427
+7023
+7811
+6734
+2286
+5051
+-1835
+3851
+3321
+4374
+-6109
+498
+1621
+5745
+8955
+-1531
+-4488
+3117
+-6657
+7024
+1097
+-3437
+-7645
+7295
+-4275
+5578
+-8134
+-450
+9299
+3397
+-3603
+2292
+5938
+-489
+-2775
+-4804
+5737
+6130
+-4228
+7552
+-5312
+-1924
+9191
+1340
+7766
+6427
+7506
+5487
+4211
+-6470
+-5650
+-7819
+-8854
+259
+-1353
+-868
+-6042
+701
+-3848
+4289
+5135
+9275
+6904
+259
+-1334
+-4938
+-4171
+7760
+-3374
+9215
+-3564
+5395
+-2040
+6867
+-9997
+5468
+-3255
+7693
+8917
+-9592
+4151
+6228
+-6569
+674
+-8912
+-7027
+-302
+713
+-8126
+6781
+-1207
+275
+-3060
+-559
+2945
+-4925
+-7666
+1123
+-2096
+3301
+-4882
+4151
+-2495
+6752
+-6998
+-3854
+-2368
+-5319
+-2058
+-6439
+-5345
+-4105
+2488
+7897
+840
+9228
+-7479
+-2651
+-9062
+-6751
+3983
+-5720
+-2592
+7314
+-5313
+2837
+466
+3571
+-9459
+8585
+-7582
+5584
+7195
+9469
+-8463
+260
+-3669
+3370
+-1792
+5404
+-6948
+3544
+1017
+5461
+9562
+2120
+3495
+417
+4502
+-5785
+4211
+188
+-7167
+-1960
+4804
+9987
+4939
+-6813
+7295
+-2333
+4435
+-3773
+-5613
+5917
+-3075
+99
+5142
+-7204
+-5185
+7314
+7214
+7154
+-4337
+-2005
+-7498
+-6109
+2031
+-1463
+-9900
+-5345
+-2667
+-8974
+-7589
+373
+2493
+3212
+7667
+3216
+-8473
+9214
+469
+2630
+-5387
+-9604
+-9998
+-2157
+-1861
+5546
+4684
+-3784
+7803
+-7058
+-8176
+8148
+-6824
+-7075
+-7463
+-7651
+3049
+8727
+6771
+2094
+6867
+-2612
+-9957
+-5231
+9301
+3011
+-4769
+1628
+-205
+3404
+6584
+7613
+9272
+6729
+4797
+-2747
+8151
+7350
+-6303
+4650
+5101
+-4841
+-9085
+535
+4606
+-6721
+-9350
+257
+-2153
+-7439
+892
+-2833
+5755
+-6113
+4840
+-2827
+5287
+-8806
+5212
+-3852
+9146
+-6955
+6125
+-5216
+-1156
+8084
+-8449
+-2446
+6170
+7465
+4410
+2442
+4686
+-2871
+-2232
+186
+7259
+-3608
+-1378
+358
+7195
+-718
+9382
+5190
+-1214
+5782
+-9359
+-5011
+2425
+-4924
+-5614
+-3265
+5
+6795
+9685
+7512
+6078
+1551
+3473
+-3682
+3210
+-6004
+-3598
+4003
+6313
+4147
+-8653
+-5052
+-4644
+-8552
+1557
+566
+-5783
+9288
+5223
+3463
+4544
+7900
+8146
+6696
+4567
+-3178
+-7918
+1525
+966
+-6148
+7072
+3671
+-526
+9961
+-5165
+-8054
+8810
+8349
+3137
+-1875
+-7258
+5856
+7747
+-5851
+-3804
+4743
+-9283
+-2354
+-7086
+-5732
+9010
+-5866
+-6105
+-4888
+-1430
+1777
+-7719
+3835
+-44
+7649
+8699
+-8859
+5761
+8912
+9435
+-6241
+-6737
+-1529
+752
+1825
+-9876
+6257
+1543
+8098
+-1723
+5280
+1409
+-4174
+-5573
+4534
+-1695
+2848
+6357
+9367
+4100
+-3247
+1401
+-4275
+1554
+-9451
+5856
+3469
+-8739
+1720
+4668
+-3793
+2341
+1914
+3106
+-4166
+-9046
+-7438
+-7942
+-7944
+1238
+-377
+-1116
+-5634
+-8699
+-2654
+3149
+-8212
+-8161
+-5694
+1378
+-9162
+-7441
+1877
+2619
+-8289
+5287
+-6739
+4431
+424
+6041
+-9557
+5259
+-6466
+-4651
+-5120
+-2293
+3643
+-3529
+-117
+-4891
+5640
+4768
+-8316
+1896
+-755
+989
+2407
+-410
+-2801
+-2756
+4967
+1409
+-1017
+-140
+643
+-9100
+-7055
+5929
+-6162
+1037
+-1664
+692
+5994
+-8816
+1604
+3227
+-9557
+566
+-8323
+4821
+-7722
+-6646
+8721
+-273
+-6563
+-7815
+-1825
+8457
+-2923
+3381
+58
+4721
+-1142
+-8783
+3430
+8250
+7166
+-4940
+6330
+2082
+9786
+-6756
+-6335
+-2943
+-1035
+4988
+3496
+-7027
+-3248
+-2009
+9315
+3753
+3335
+-7692
+-201
+213
+-5526
+7640
+-1950
+-8038
+3768
+-729
+1081
+-5787
+4343
+-8397
+7306
+-2363
+2744
+4816
+-5646
+-1348
+5421
+-4996
+-873
+2449
+-1426
+-5305
+7487
+-4790
+6059
+8304
+-4028
+-4598
+8295
+-9099
+5325
+1690
+8417
+-9827
+-5931
+-1773
+1175
+-4391
+-6948
+-8676
+5650
+-8681
+9045
+-7817
+-9869
+6395
+1032
+-2586
+-6297
+5661
+-2161
+6774
+-1940
+-7600
+924
+-3116
+4487
+4645
+1632
+9619
+6661
+706
+8437
+-7703
+6581
+-408
+2152
+-2487
+-1495
+7948
+1963
+1662
+-6360
+-1352
+-7139
+9215
+-2329
+-8079
+-1017
+-5526
+7450
+4459
+-2838
+1258
+9837
+-3608
+1207
+-7510
+4355
+9942
+9130
+-25
+2913
+-4275
+1989
+-6863
+-2385
+-2143
+7506
+2619
+-9969
+7662
+-8481
+7662
+142
+827
+9072
+302
+2528
+7339
+-355
+1106
+-7007
+2064
+-4762
+-3823
+9464
+-2635
+-6697
+-6940
+3120
+2517
+3907
+5054
+5560
+989
+-11
+6655
+-5546
+-5717
+-4137
+3569
+-63
+5706
+481
+-2266
+-7286
+-3698
+1238
+1254
+3712
+7613
+1175
+-6321
+-2107
+-9450
+9147
+6078
+2712
+9248
+-8748
+899
+-1516
+8974
+-6560
+-1762
+-7747
+-7907
+-2536
+6665
+2427
+2029
+-2965
+7822
+741
+-5925
+4095
+725
+-5448
+4427
+-5456
+4434
+-8865
+-7703
+8917
+-1377
+-3171
+375
+-4985
+6074
+-2061
+-7439
+5372
+-6443
+298
+7347
+2877
+940
+8172
+6071
+4986
+-6361
+-9118
+1654
+9501
+-1792
+-2521
+-8962
+-1808
+8213
+-2679
+1329
+6768
+-4582
+-2285
+5690
+-1982
+9202
+6365
+4873
+5441
+-7905
+4372
+-8468
+-6166
+-613
+2619
+7216
+-912
+-8729
+-526
+-39
+5637
+6012
+-9538
+1025
+-9589
+8033
+1173
+5659
+4940
+-5521
+-3541
+7608
+5025
+-884
+-3166
+-5867
+-2708
+-4801
+-3120
+-7052
+-3568
+2432
+1179
+-2915
+-883
+-8084
+-607
+-2325
+-2345
+6016
+-5066
+-2804
+9959
+-7440
+-3307
+3467
+-6347
+-7957
+8588
+-4654
+2670
+3498
+7739
+4838
+-4306
+7647
+-6023
+-6338
+703
+-3477
+-6947
+9151
+7358
+-7075
+5902
+8447
+4551
+367
+-687
+6764
+5491
+9568
+-2635
+-520
+-6250
+1438
+-5608
+654
+-1302
+1173
+5548
+5506
+8535
+4618
+2562
+-1466
+-4202
+5917
+7844
+-9473
+-7030
+-1092
+-8035
+6426
+-5890
+601
+547
+1490
+5737
+1123
+-1669
+-3748
+-2203
+-7152
+-2951
+-803
+1128
+8480
+-7669
+6675
+7432
+-9423
+-3169
+-2438
+9603
+-7040
+8159
+3216
+3964
+-2009
+6074
+6492
+-1954
+3193
+2399
+-9921
+7845
+9130
+-8997
+6960
+6890
+3495
+-1514
+5637
+9641
+-6367
+3098
+-7793
+8710
+3987
+-9055
+9599
+1106
+-8017
+9397
+2799
+-9198
+3213
+1207
+-5069
+2126
+-3641
+-687
+7709
+-6678
+-4395
+-6166
+-2751
+-7752
+-2951
+-8193
+-2121
+4224
+-5198
+7714
+2562
+-9972
+6165
+1377
+9610
+-2376
+1209
+5421
+4966
+5691
+-451
+6436
+9481
+3134
+599
+5137
+-4989
+-6525
+2209
+526
+-2158
+3430
+-8577
+7529
+-8945
+2190
+8593
+-1571
+6877
+-9011
+-1895
+875
+-6330
+-8361
+3632
+7650
+7814
+469
+-8425
+2772
+1525
+-8017
+-1010
+-5997
+4679
+-3730
+-3522
+989
+288
+-8393
+469
+7151
+-8854
+-9580
+9675
+-5138
+-431
+-4297
+5659
+-4128
+454
+1278
+8570
+6600
+3891
+7845
+-7664
+7436
+6771
+4254
+5589
+3502
+2473
+-8832
+8479
+5054
+4559
+9015
+-7295
+-8029
+-4901
+9325
+-7377
+7610
+4855
+-1801
+8692
+2762
+-2241
+-9321
+-3631
+-5477
+388
+-8042
+2241
+-8481
+9164
+-7058
+-9781
+1557
+274
+4114
+-464
+253
+413
+-8502
+-6361
+9877
+-520
+6579
+8450
+-1010
+8746
+7359
+3117
+-2252
+-6367
+-6793
+5819
+8783
+1378
+-4980
+5711
+1766
+-8496
+-9592
+9529
+811
+-4417
+575
+-5706
+1219
+-3252
+3540
+7779
+-9950
+5730
+-5081
+-827
+-3131
+5143
+-3511
+-3148
+7809
+-6635
+-7519
+-443
+-6879
+5456
+-4762
+8969
+-8022
+-1579
+1332
+-6238
+5343
+9267
+884
+-5413
+-1405
+-9824
+-9469
+4669
+4641
+-1835
+8176
+-3219
+-444
+764
+4020
+-9176
+652
+-7680
+5135
+-6162
+238
+-1687
+8868
+3356
+5041
+-4370
+-4888
+-7530
+-2979
+5854
+2303
+740
+2598
+5440
+-7972
+-9407
+-481
+-859
+-9802
+-6618
+1782
+9951
+741
+5936
+5935
+-5729
+6918
+6426
+-2434
+-8261
+1632
+-2738
+-895
+4665
+-3398
+2064
+-8468
+-4340
+-7408
+-6695
+-7905
+-3237
+-2711
+5953
+-1622
+-7743
+6305
+5903
+9131
+7063
+-7779
+-5994
+-2412
+-4645
+-1142
+3971
+-3698
+-4662
+-8876
+-9911
+-5774
+-6824
+-2838
+-1828
+-5180
+8262
+8992
+5771
+844
+6300
+5806
+2319
+8699
+-607
+-4202
+-8297
+3709
+-4807
+-1259
+3381
+-7750
+-7337
+1238
+5445
+-8143
+-7654
+8721
+7461
+-8802
+-6736
+-542
+-8469
+3916
+9300
+8546
+-845
+-140
+-1247
+2093
+-4898
+7185
+4028
+-8017
+172
+-4417
+9599
+-6672
+-8531
+9216
+6383
+-242
+4401
+-2534
+-9474
+7412
+-9286
+9906
+-3577
+-2161
+-3412
+-3959
+-4924
+-9406
+-4403
+8675
+3473
+7168
+-2838
+-6711
+3090
+1888
+4840
+9978
+3324
+5462
+8413
+-2392
+4431
+-4673
+6583
+-1139
+2298
+-5656
+1409
+-7509
+5182
+-8645
+997
+-2897
+2231
+8446
+6399
+5956
+-3964
+457
+823
+1637
+5051
+6121
+-7944
+-1774
+-8179
+6676
+-9145
+2167
+-5360
+7906
+2155
+-2756
+6110
+-3209
+-5415
+6110
+5427
+-7409
+1998
+9459
+3736
+-9386
+-7560
+-3507
+6383
+7675
+-1493
+2433
+-1996
+-4304
+4068
+-5417
+2315
+-1800
+9062
+9658
+-2624
+2351
+-865
+-6486
+-3252
+-5861
+-5657
+6600
+2990
+-8208
+-6113
+6690
+-7284
+5956
+438
+5050
+-5104
+8873
+1413
+-9351
+-2157
+1017
+-694
+6681
+-2679
+-5838
+8289
+-6247
+6142
+8
+-2871
+-2857
+-6320
+253
+5698
+9146
+-3266
+-607
+7113
+9173
+-5835
+4964
+8192
+-331
+-7167
+-6913
+-7553
+-9664
+-3173
+4685
+811
+1636
+4695
+6141
+-8144
+405
+3419
+-6464
+-1283
+-5925
+2629
+3396
+6584
+7077
+-289
+-8444
+5136
+6219
+-2153
+-3457
+1305
+7309
+-4985
+-4391
+5028
+3090
+-4350
+8955
+391
+9566
+-8505
+577
+2399
+-4030
+6678
+-5985
+2191
+5775
+4
+-4285
+-5171
+6296
+7226
+-5433
+-7959
+-1657
+5812
+-1525
+7127
+-9601
+-544
+-8921
+-5809
+891
+3115
+1943
+-1955
+5025
+8516
+-1322
+-7026
+-3622
+-783
+-3989
+-6485
+-6503
+-6669
+9268
+5642
+-6704
+9279
+1770
+8950
+4807
+-6530
+-9627
+-3803
+5009
+-3463
+-6004
+9490
+6175
+6829
+-6109
+4598
+-2083
+7251
+-2642
+2433
+9594
+1869
+-8684
+7850
+5287
+-3995
+2907
+-8858
+5107
+2339
+3129
+3956
+-6215
+6774
+-2271
+4487
+6014
+-1958
+-8844
+-3300
+5907
+1525
+7675
+1350
+-1080
+87
+4744
+1123
+6604
+-8642
+1929
+4499
+-1575
+-4352
+9268
+-2089
+454
+1121
+7683
+7877
+-2477
+-2416
+2906
+7739
+-5794
+-2159
+-4444
+-7226
+-2025
+-3868
+6492
+-8340
+1731
+211
+4134
+-5011
+-4602
+-755
+9702
+-4891
+5830
+3467
+4934
+-5016
+-6877
+9288
+1490
+1097
+-4427
+2913
+1885
+-8085
+6383
+-5157
+8397
+9603
+7801
+-2385
+-6387
+-5210
+-3537
+-312
+-7777
+1988
+1766
+-7771
+-2203
+-2401
+3053
+-3507
+5901
+-7204
+-844
+2019
+-1394
+6363
+4319
+-1448
+4042
+-6376
+2520
+637
+-1125
+5108
+-8398
+2767
+882
+-527
+-4770
+5613
+-2965
+-1456
+6632
+-868
+-2534
+3467
+3536
+-599
+-4758
+8681
+-3388
+4540
+5689
+-882
+-7344
+8911
+-7180
+-6162
+-9856
+-7586
+-3279
+9202
+5249
+-4548
+3485
+4534
+-4740
+-4714
+774
+-8141
+9603
+-6394
+-1689
+4204
+7145
+7949
+4002
+-355
+-4166
+-4174
+-5337
+-5853
+-4232
+-8156
+-6027
+-6657
+-2850
+4256
+-4250
+-1099
+1267
+2004
+5025
+-1963
+-4248
+8870
+-1301
+6363
+9783
+-4952
+5259
+7098
+-1257
+688
+8644
+-7521
+577
+1222
+1017
+-277
+7385
+-1723
+-5647
+7465
+-993
+-3025
+-4378
+9113
+-8536
+1854
+8710
+-8778
+-200
+9438
+6342
+-2080
+8900
+8817
+-8773
+-9528
+-9933
+7016
+-142
+2229
+-3138
+-3358
+-9622
+-6967
+2879
+4599
+-5809
+8868
+-1342
+-5521
+-7403
+-2532
+1912
+-6922
+8532
+4852
+6751
+-1571
+3652
+-531
+1067
+-9949
+9754
+-2671
+3377
+7560
+-5157
+-600
+-9899
+-8252
+-8164
+-6020
+-9095
+7349
+-1442
+4838
+1890
+5535
+-1383
+3153
+3693
+-9592
+-6848
+6958
+-7149
+1230
+-9329
+6175
+7580
+4729
+-2497
+499
+-6258
+5183
+1267
+-5745
+8601
+-9811
+2877
+-3289
+-3204
+6040
+2037
+3499
+-6439
+4550
+-5907
+6523
+-9421
+7897
+7078
+4561
+-1232
+4315
+-677
+-8808
+5505
+8006
+-3292
+-2573
+89
+-5129
+-6873
+3485
+4001
+9194
+-3520
+3615
+2301
+6492
+7572
+6742
+2404
+3328
+333
+-3457
+4042
+1491
+-6178
+-8164
+-2923
+-581
+6524
+4994
+-4083
+-522
+8241
+9844
+811
+8900
+-2271
+1435
+855
+6572
+-1363
+6748
+-9368
+-7052
+-459
+1350
+-2850
+-845
+-9067
+3750
+-1260
+-5845
+3733
+3151
+-7985
+4390
+4337
+-7371
+335
+4373
+9006
+3645
+483
+-7384
+5459
+-3201
+-3848
+-9278
+-9780
+9933
+-8289
+-2576
+4655
+466
+3962
+6748
+-1835
+-5447
+-9526
+2337
+-4008
+-1726
+1693
+538
+-8281
+5051
+-3186
+4840
+9397
+-6667
+2703
+-2828
+8578
+-2392
+1220
+-3846
+3874
+3398
+-6192
+5638
+8801
+-1296
+5494
+3579
+7358
+-4263
+-2392
+2877
+7148
+8084
+-9256
+-5012
+1821
+-5926
+98
+-2026
+2718
+977
+-1437
+2505
+3291
+-4093
+469
+-4708
+-2691
+-4165
+3310
+4343
+4964
+1705
+687
+-1647
+5698
+3268
+-4008
+91
+7741
+3420
+757
+9451
+4982
+7178
+9640
+-6854
+-3482
+-3598
+9273
+2037
+-8067
+9447
+-2434
+-7557
+-4951
+-8728
+-9827
+-2241
+4172
+1267
+-6668
+-8525
+-7061
+-2389
+1986
+-811
+-925
+8800
+-892
+-5178
+6078
+-865
+9989
+-1825
+-906
+-2686
+7259
+2675
+-7437
+9312
+8870
+2978
+1238
+2307
+-2670
+5494
+2046
+-289
+-7464
+-6568
+-9466
+4409
+-1508
+713
+2089
+-5054
+6092
+757
+1091
+-526
+-2881
+2492
+4035
+961
+-2266
+-8126
+-140
+4189
+-6837
+-5360
+4382
+-8903
+-2841
+-7853
+-5890
+2853
+-4762
+-9983
+-9856
+9610
+2139
+3754
+5325
+6846
+-1304
+3762
+1753
+8437
+-785
+-6645
+-5435
+-9443
+9421
+2548
+-4912
+-6439
+857
+-3676
+-8393
+7117
+6718
+9510
+-7338
+-8630
+-7696
+-1268
+-2801
+404
+5805
+-2996
+7383
+-1820
+9186
+-3003
+-2718
+3282
+-3061
+-3756
+7262
+7230
+-9142
+7407
+-4836
+2972
+459
+8070
+8879
+-6255
+7066
+-2070
+-3423
+-1984
+-4483
+2590
+-2396
+3447
+3764
+7683
+-8616
+6209
+2006
+-7838
+6365
+-1921
+-873
+4153
+3287
+-2293
+7399
+-5107
+-7240
+9236
+-9677
+2591
+3606
+-7375
+8216
+1265
+2488
+-6148
+2448
+-7055
+8434
+-4896
+-5145
+6960
+1554
+-9853
+1821
+6363
+9125
+-6727
+5250
+2160
+-8151
+-8269
+1635
+-3169
+-5963
+6813
+4635
+-6728
+3496
+3173
+6897
+5374
+7610
+-4285
+1574
+2457
+-2910
+4157
+-6863
+5969
+-3424
+1281
+-568
+9554
+-5165
+-7755
+9634
+3137
+-9256
+-3286
+1433
+3962
+3228
+8063
+477
+701
+-8369
+3360
+9816
+4410
+-5555
+393
+-4865
+-886
+5487
+706
+-7408
+-7877
+9156
+-5802
+6078
+-1765
+713
+9103
+479
+-6645
+5969
+1557
+-6446
+-9100
+9638
+-7907
+-7843
+7882
+1720
+-9539
+6904
+2756
+4
+170
+6600
+-5614
+-901
+-7614
+-9095
+-8135
+-8281
+-2217
+-8724
+1930
+508
+-3164
+894
+-1204
+9125
+-6825
+4744
+-7585
+3721
+-8398
+5959
+7839
+4100
+6978
+-412
+4097
+8433
+1103
+3129
+-3966
+8064
+-5557
+3577
+1247
+-2817
+-5607
+8944
+6060
+458
+-1045
+-8544
+-8928
+4983
+-2401
+9653
+-6914
+-8078
+-8549
+9236
+4166
+5421
+637
+-6985
+-9423
+-2276
+-1381
+-1314
+-6842
+2061
+3696
+-489
+-1551
+2298
+5575
+3863
+-4734
+-995
+-9112
+-2585
+4928
+2702
+-4158
+-9487
+8427
+-7530
+8261
+5173
+-6445
+-2571
+-5294
+-2242
+-475
+3247
+-3608
+5506
+-1296
+7254
+7423
+2004
+1482
+-4679
+9049
+2038
+-8758
+-3733
+3
+2940
+-4834
+7297
+-3760
+4526
+4607
+7997
+-406
+666
+-7054
+3088
+1308
+-8554
+211
+8825
+1683
+3171
+-1508
+-1092
+-266
+-2651
+6783
+-9951
+4582
+5610
+-4673
+7882
+7969
+-1214
+-5865
+-284
+-1360
+-6126
+1393
+7261
+-650
+776
+7178
+-3574
+-2782
+4089
+5983
+5959
+-4913
+-1955
+7259
+-5414
+-7415
+1606
+-8067
+-3210
+4831
+-7225
+-5060
+4861
+-5527
+-3306
+9933
+7473
+-829
+6331
+8219
+-2747
+-6022
+-7983
+4607
+-3315
+-885
+4315
+6704
+4953
+1488
+-3614
+-9128
+288
+3381
+-7960
+5439
+8911
+4460
+2410
+-5165
+-996
+3533
+-760
+3011
+482
+-4280
+7845
+-8858
+-4141
+-9080
+2388
+-1367
+3206
+9365
+7346
+-8150
+-2330
+1214
+9556
+-4465
+-6913
+3723
+5041
+-4618
+-3564
+9211
+-4749
+-4557
+-7118
+3236
+4998
+7667
+5051
+-3698
+9579
+-6488
+5515
+6677
+3227
+1335
+-817
+-8837
+-5189
+4279
+-552
+-4774
+1853
+-4042
+-7312
+-6530
+4287
+-2586
+6623
+-2037
+1731
+-5237
+-3958
+4147
+-4618
+-6192
+8469
+-6776
+6389
+-2686
+-5330
+-2667
+-5031
+-5336
+5513
+704
+4041
+-6646
+6158
+1989
+-3437
+5179
+-9651
+-2060
+-186
+-1539
+173
+318
+2449
+5002
+459
+1454
+292
+-7501
+7076
+1435
+4709
+-160
+-2154
+-3734
+2042
+1753
+-8285
+-7328
+-6735
+-1011
+2033
+8546
+2493
+612
+-8572
+4042
+7866
+-7397
+-8865
+1112
+-9729
+1428
+3037
+1028
+9479
+-3176
+4581
+8469
+-5952
+8642
+-8592
+-3089
+-9146
+755
+6289
+-9192
+-6529
+9466
+-6948
+-7654
+86
+-1410
+-9615
+-8042
+4021
+8642
+-9951
+6323
+2952
+-1290
+-6515
+-2421
+-8987
+-5273
+3583
+2321
+4624
+6427
+-8366
+-716
+8157
+-8446
+-4155
+-8544
+662
+9024
+3972
+6945
+7644
+-6824
+-8699
+7642
+8176
+1879
+1988
+8558
+-9538
+6331
+-9601
+-9856
+-8473
+4483
+-8535
+-8854
+7461
+-3109
+-7902
+2716
+4821
+3117
+7319
+-8872
+7967
+1043
+-1664
+6604
+-7026
+-7373
+-6548
+5812
+-3457
+5659
+-6056
+5081
+1929
+-2923
+-5184
+-7086
+4089
+-636
+9088
+-7269
+-5355
+-6299
+-5157
+5405
+9930
+7262
+-4654
+-5595
+-9438
+-1187
+3671
+-7660
+1230
+-5185
+-5165
+-3088
+5175
+5554
+7212
+4958
+-6867
+-8621
+-9099
+-1683
+-4770
+-5795
+-5379
+-6998
+-3425
+-1586
+-9100
+2404
+-8227
+-2039
+-229
+-4417
+-4516
+-531
+-9877
+8414
+-7609
+6896
+2703
+-4831
+-6006
+-9026
+-2291
+9599
+-7047
+6256
+5519
+6352
+-2039
+5041
+-5783
+3150
+1356
+-7021
+-3850
+-9541
+-6782
+-4272
+9504
+-3123
+-3947
+-520
+-1368
+-5540
+3205
+7629
+-6918
+2376
+9414
+-6346
+6016
+150
+-2137
+-2445
+4390
+-2028
+9125
+6249
+539
+-2184
+-6430
+-785
+4187
+-9561
+9071
+3038
+-2061
+-1907
+8173
+571
+5984
+-844
+7264
+-6047
+-1455
+6639
+-6584
+-755
+7011
+7216
+-1279
+-7044
+7063
+-2706
+-2883
+-9421
+-7521
+4099
+1673
+-4525
+7188
+-2028
+-6356
+-7666
+2936
+4821
+-6027
+6142
+7892
+1554
+-305
+7803
+5837
+2006
+8547
+4909
+7028
+-8957
+-9272
+-4113
+5391
+-8350
+4647
+3445
+7270
+1221
+-4082
+5575
+9497
+1340
+2024
+-4815
+7429
+-8793
+-1916
+-2009
+3671
+-3383
+-4996
+1632
+-1131
+1704
+1793
+-8816
+4166
+-7067
+4840
+7148
+-9288
+7650
+-1916
+-5415
+7840
+-3428
+-7010
+-4567
+-3458
+2411
+9965
+7510
+3381
+-8897
+9447
+6012
+8707
+1005
+-5176
+4679
+-4517
+-5147
+9218
+-2477
+-5253
+2048
+6927
+-9803
+-9256
+-1348
+2307
+-5120
+-7955
+9574
+6677
+-7014
+-2305
+3677
+5747
+-8874
+5425
+5495
+4293
+-6852
+-6648
+-9276
+-3726
+779
+2210
+4459
+3467
+5456
+5630
+6853
+7465
+3374
+-9967
+-8350
+-5872
+-1994
+-6172
+4255
+5885
+8163
+-7419
+5706
+8532
+1234
+6652
+-5183
+-6042
+-92
+634
+-6
+4812
+7791
+-1269
+7845
+6068
+6259
+-3118
+5554
+-6776
+-8120
+6620
+-4602
+3670
+747
+1804
+-3238
+5338
+7785
+-225
+-4306
+8854
+940
+8424
+-7305
+-4852
+-1133
+-6879
+-6082
+-4351
+-5787
+5489
+7682
+-1363
+5627
+-8304
+-8837
+-4824
+155
+-5707
+9236
+7436
+8006
+1945
+-2642
+8985
+9926
+9705
+1664
+9332
+-5928
+7866
+3096
+5506
+-3931
+8452
+-9596
+-4143
+-9176
+-5606
+8248
+-9731
+2047
+-5846
+7436
+-9313
+3773
+664
+3115
+662
+-1110
+8173
+-5737
+-7301
+-2645
+3026
+-5178
+9803
+-552
+-85
+4669
+7089
+-3990
+9883
+7704
+9007
+-6921
+-8547
+2907
+576
+924
+-3463
+-6606
+6514
+4056
+9023
+-7339
+-5168
+-6175
+-5896
+6185
+483
+-9580
+6276
+2655
+-5355
+1275
+-1502
+-3819
+1027
+-2329
+-9194
+-7240
+9609
+7060
+-5662
+4357
+-6852
+6299
+-3003
+2613
+-5143
+-1421
+9863
+-9342
+-7511
+-9422
+-4469
+-2741
+-1080
+7092
+1011
+-3740
+-3011
+7629
+-4176
+6918
+-2346
+7886
+-5780
+2341
+-8162
+6267
+-2477
+-8676
+6199
+9989
+-8755
+-1114
+-8719
+6557
+2695
+-3166
+9856
+1601
+7255
+4292
+7846
+994
+7222
+76
+8872
+-2023
+6206
+-7187
+-5302
+-787
+-9711
+-4159
+-6985
+-9367
+6994
+5106
+9402
+1548
+7324
+7115
+-8812
+-7962
+-3238
+-2915
+-8225
+-1939
+-5183
+7258
+-1916
+228
+-5069
+2442
+-6088
+-925
+4913
+-451
+7462
+-5319
+2032
+8032
+-391
+9384
+-2067
+8532
+9841
+-3710
+-6220
+-3594
+-5161
+-8286
+7847
+-5802
+-1721
+-7463
+-8257
+-8385
+4502
+5198
+-2330
+5566
+-9729
+-3909
+-5498
+-3550
+-3028
+-7041
+-4702
+-9023
+7945
+3110
+5571
+7948
+-2384
+6514
+5828
+2702
+9186
+5316
+9615
+4920
+7589
+4187
+8907
+-2337
+4868
+-7469
+-5888
+-9837
+1249
+-2242
+2186
+-4762
+3200
+-9066
+3228
+6155
+-1707
+1362
+-6817
+5173
+-6173
+576
+3245
+3241
+4648
+1941
+4583
+-3227
+-4083
+-3852
+7182
+8083
+8165
+-9528
+5750
+357
+-1138
+2492
+-6894
+98
+9961
+-5958
+-2346
+-4951
+-310
+3434
+2728
+5101
+-1078
+4708
+8398
+6515
+-8398
+9390
+-7599
+-3462
+9688
+-1069
+111
+-1314
+-1984
+-2736
+9466
+-4643
+5483
+-8084
+-3868
+-9855
+7628
+-6343
+-5555
+2731
+7692
+4256
+2315
+-603
+-6727
+-8260
+5944
+-4888
+-6987
+5287
+5325
+-9623
+-7000
+4099
+1598
+-2358
+-583
+-2355
+-8886
+8697
+-5072
+-3965
+9371
+1887
+2850
+109
+-2650
+7414
+9685
+9234
+6736
+-4861
+9062
+8561
+891
+678
+-1258
+-6606
+-8620
+4374
+577
+1438
+2698
+7053
+-5896
+8953
+-8122
+-3603
+8950
+-5961
+9367
+3703
+1683
+8073
+2905
+5403
+-7370
+9247
+3140
+-5661
+1693
+6036
+9887
+4844
+3390
+7035
+-4449
+-1182
+4326
+9166
+-2923
+-8366
+8554
+7616
+-7510
+1080
+6353
+7308
+-7453
+6888
+78
+-7573
+6850
+4828
+4046
+-7406
+9172
+-2555
+-7955
+2471
+566
+7925
+-3324
+-1416
+-1099
+-6330
+-3258
+827
+-1621
+9824
+-4605
+-9848
+4006
+6623
+8170
+7706
+-2957
+7629
+666
+8016
+-6798
+-1338
+-6749
+6962
+1761
+-7703
+-496
+-6686
+-7387
+-6737
+-225
+-1509
+7251
+763
+961
+-5228
+-6721
+-884
+9877
+-9638
+-8830
+-8817
+-822
+7554
+3659
+-6816
+5103
+-6148
+2697
+-8676
+4569
+1831
+-9381
+1473
+5247
+5613
+-7632
+-6464
+1548
+2795
+6276
+-3586
+8897
+4070
+3274
+-5091
+-3759
+9510
+4829
+9658
+9965
+-1508
+3577
+-7070
+6569
+-1669
+8723
+8056
+6379
+6665
+-3762
+6350
+-8425
+3233
+5212
+-5016
+-5780
+-3842
+-5312
+9438
+8766
+-1647
+5403
+1556
+-568
+-4126
+-2975
+-6825
+4448
+4723
+2842
+-4702
+-2137
+-6703
+1606
+8090
+3328
+2367
+3816
+-4149
+4228
+-8024
+-8739
+7387
+-7675
+-8406
+-8531
+-8108
+9194
+2582
+-7582
+1498
+4340
+-8108
+9980
+840
+4315
+5461
+9421
+-9046
+1322
+1632
+-7139
+-3462
+-2271
+-8252
+7282
+3641
+-4988
+9920
+-7960
+-3762
+6742
+-791
+-6922
+9411
+-1391
+-9768
+-4574
+4515
+2021
+5041
+9374
+-2362
+4199
+8986
+5036
+3801
+-7987
+-6106
+1546
+-6313
+546
+-2460
+9824
+-7750
+-7539
+-4370
+-9010
+-9194
+5246
+-1113
+-9274
+-2392
+-379
+6133
+-8425
+5343
+9979
+9275
+333
+6465
+-6004
+-6122
+5627
+-6525
+8490
+-9795
+1051
+-5177
+5513
+7665
+2008
+5135
+8117
+9421
+-1542
+-8611
+3473
+-3107
+5421
+-9856
+1778
+-4513
+9805
+8469
+5658
+-4257
+8165
+6383
+3388
+-3374
+-3979
+7822
+-6721
+-8868
+-9009
+1764
+1704
+1693
+-1875
+-8079
+-239
+-1025
+7945
+5182
+-5101
+2006
+-264
+-5706
+5732
+7026
+4668
+2738
+7346
+-9450
+6423
+-865
+5820
+8907
+643
+8408
+4302
+-9477
+-1373
+2720
+6234
+-7354
+-2677
+7061
+8692
+-15
+-7075
+6877
+3537
+-8068
+-8449
+-1142
+-7983
+7210
+-7931
+6751
+5101
+-3467
+5233
+-844
+-5610
+-9910
+-9796
+3595
+-4354
+725
+2745
+8546
+-9859
+6147
+9023
+7512
+8481
+6228
+7350
+-352
+-289
+2008
+6533
+-2123
+6566
+-9110
+8710
+8810
+7195
+6994
+9576
+1061
+-889
+6568
+-81
+1623
+6452
+-33
+1673
+5117
+-5942
+7098
+-2801
+-1214
+-5869
+6206
+-9456
+4038
+6142
+5410
+-4924
+877
+-9663
+-8069
+6813
+-9278
+-6519
+7112
+2241
+3375
+-2094
+8615
+8086
+9408
+9826
+-134
+-6704
+8746
+1664
+-7160
+-4352
+2836
+3994
+5225
+-5103
+4269
+1760
+878
+-6067
+4744
+-4051
+9797
+-5634
+3389
+-1958
+-7717
+6168
+5177
+8482
+228
+9943
+945
+2050
+1622
+7916
+2936
+6071
+3340
+-1542
+-6267
+-3317
+-7955
+1491
+-7595
+-1996
+867
+20
+5065
+8366
+-8165
+-4435
+-725
+9864
+-760
+8263
+-4514
+-8771
+2222
+-8398
+9196
+-6175
+3335
+-1197
+-4630
+-9317
+-7166
+6003
+-1953
+-5757
+-8594
+-3612
+6742
+2845
+-7238
+-2573
+3686
+3771
+-8380
+-9
+6668
+-7170
+4598
+-6488
+-8388
+5737
+-8185
+8427
+-4548
+5851
+1438
+-516
+3746
+7080
+-3842
+-4529
+669
+6198
+-4818
+-160
+9031
+-6639
+-7301
+-3562
+3158
+-9967
+3908
+-2556
+-7066
+4534
+-7401
+5837
+1490
+-925
+1547
+9795
+6602
+4782
+2687
+3641
+-7624
+-8544
+3629
+1027
+1462
+4798
+-1599
+5231
+86
+-6589
+-802
+5257
+-7394
+6423
+-6563
+9397
+-9050
+-3475
+-7507
+-4951
+882
+-7650
+2230
+-3703
+1990
+2129
+3155
+-1702
+8084
+-4940
+-5022
+1716
+-4875
+-4938
+-6697
+7231
+5094
+2151
+767
+-490
+-4285
+9240
+-7997
+-3465
+9475
+-704
+-8385
+4024
+-5060
+3767
+9691
+3445
+5025
+8304
+-8612
+-1878
+4020
+-3759
+8737
+-5377
+1097
+-3855
+-1020
+1632
+-4033
+-5351
+860
+6078
+-2124
+2877
+-4993
+-8464
+8995
+6333
+-9710
+-4573
+-7992
+6075
+2132
+7292
+7028
+-2371
+6677
+4269
+8097
+3787
+-9289
+-7021
+6579
+8456
+2810
+5743
+3397
+842
+-8505
+4587
+-4709
+8872
+1395
+-4980
+2311
+8532
+9087
+-7534
+-3815
+-9732
+3590
+-8212
+-9878
+-309
+-440
+855
+6427
+-6385
+-5272
+1662
+7501
+-3601
+4583
+1021
+-7486
+7516
+-1092
+8912
+-3863
+-8806
+-970
+-6004
+5741
+741
+8419
+-4935
+4424
+1058
+-6413
+-7439
+-6252
+9475
+-269
+-1292
+-3210
+-9175
+9928
+-4130
+5405
+-7376
+-5223
+1986
+-9368
+-7680
+898
+4413
+127
+717
+-3453
+2493
+9198
+-5238
+-9555
+-1352
+-5822
+-3204
+6014
+6798
+-3541
+8522
+-3516
+5378
+474
+1409
+7850
+6808
+7811
+-4345
+-6957
+7396
+-3457
+9023
+7819
+4260
+-4162
+-4655
+-7518
+2877
+-3116
+1281
+-3300
+8916
+-2820
+-5127
+6524
+5269
+8165
+-1798
+30
+-9159
+8834
+8089
+-1967
+-1669
+-373
+576
+1579
+8574
+5956
+-3608
+-6193
+-6385
+-3632
+-8874
+9113
+-5050
+217
+4323
+-2726
+-8108
+-7507
+8491
+266
+7754
+-8457
+4035
+5854
+5569
+1359
+-2732
+-5473
+-1719
+-5422
+-3804
+-513
+-2741
+7206
+-2881
+393
+3839
+7570
+2521
+-3640
+503
+2093
+-4480
+7027
+-4913
+-6958
+-6201
+5287
+4534
+7259
+9524
+-5591
+5854
+109
+-7164
+1234
+1165
+7779
+9921
+-4051
+867
+8309
+-2784
+8801
+-8289
+1150
+-2975
+1147
+-6459
+-7515
+-1450
+-9014
+-7749
+768
+-2433
+9603
+-8391
+8817
+-7509
+8232
+8986
+91
+-4
+-5012
+-3139
+7839
+-1320
+1602
+3460
+-3779
+2492
+30
+-9145
+-4185
+6792
+8629
+-1741
+-8281
+-225
+-5699
+-9727
+5690
+-1202
+4140
+5041
+-2860
+-8236
+-3803
+-6678
+-993
+5522
+-6686
+3723
+1760
+7739
+-7112
+-6813
+4410
+-6926
+9165
+-7420
+7675
+-8867
+-588
+2805
+-3106
+7165
+-5489
+-1604
+7133
+6889
+-2654
+6115
+-7366
+7233
+-987
+2299
+7839
+-380
+8222
+-7131
+-8764
+6275
+9906
+-6716
+9753
+7214
+4172
+3950
+-6974
+4776
+-3861
+8589
+9944
+3546
+4147
+6877
+3247
+3768
+5474
+-8560
+-8541
+-6237
+-2555
+-7619
+-9140
+4363
+-1708
+-430
+8868
+9522
+1103
+6579
+3916
+-6704
+3390
+-6126
+-5360
+3546
+2896
+-2137
+7532
+-8038
+-3317
+7687
+-4363
+-505
+-1962
+-4872
+-9630
+8469
+-9533
+8138
+-5060
+6024
+-839
+7261
+3659
+-4508
+-6184
+9726
+2088
+1247
+4567
+-5103
+-8469
+9939
+5108
+-3824
+3867
+-1398
+7423
+-9014
+-3457
+9173
+-9365
+-2972
+578
+4686
+-6055
+1164
+1150
+-7486
+2299
+6853
+8818
+7631
+4038
+-3717
+5642
+991
+-6143
+-8398
+-1336
+5138
+591
+-6650
+6579
+-9970
+-3676
+8165
+9799
+7948
+-1631
+473
+-6450
+7306
+6514
+1568
+50
+-8471
+-5595
+-3081
+1179
+8142
+-6404
+-7047
+-3527
+4785
+7779
+302
+1482
+-9970
+-4951
+8919
+-1752
+-5783
+-9472
+4721
+-7785
+1632
+1268
+5692
+1317
+-4031
+4782
+-1550
+5191
+795
+-2649
+-8208
+-3031
+-7507
+7341
+3994
+8020
+1361
+-5846
+-9490
+4038
+-4665
+-2060
+-1408
+7353
+9856
+-4778
+-6606
+9727
+2631
+2598
+5961
+1350
+1063
+2903
+-6441
+-8185
+-445
+-7333
+8305
+-3603
+4038
+1818
+-4403
+4598
+3141
+2721
+-912
+7949
+7811
+-1214
+-9487
+1794
+-5318
+-1042
+-7377
+114
+4918
+-6424
+2111
+8538
+-5557
+-1959
+-5112
+6162
+5141
+5198
+-7384
+-8179
+-9738
+-5946
+-2055
+-1206
+-8668
+-6269
+-4888
+4645
+3769
+8734
+855
+4308
+977
+1557
+4969
+5572
+7121
+859
+-5993
+6240
+-5333
+-7409
+-3091
+9854
+8040
+-3220
+-7522
+-9439
+110
+-2741
+-8289
+2853
+6696
+-6676
+8089
+-3908
+5161
+6224
+-1483
+-3054
+6535
+-4244
+-2207
+-5138
+5025
+-1788
+-2307
+-1865
+5143
+-1328
+3659
+5869
+2258
+-2509
+-7108
+-7194
+6677
+-1632
+-6027
+-8870
+-6367
+-1160
+7150
+8561
+8063
+-4708
+-8903
+2453
+-2637
+-6060
+-1238
+2686
+8349
+-7052
+4333
+-1982
+-446
+-4755
+-390
+7853
+9023
+-7468
+-3577
+8293
+4089
+-1994
+1378
+8503
+4003
+5066
+-8052
+8032
+7385
+5123
+5316
+9288
+-2536
+-6916
+-5223
+-4734
+-6838
+9933
+-6360
+5480
+4549
+-7366
+3645
+1716
+-9243
+-8496
+-1202
+-443
+-8078
+-2477
+1340
+7432
+-7003
+2718
+-6384
+5055
+-8950
+9049
+-4749
+-45
+-7248
+-2996
+7017
+-7987
+3309
+-130
+8396
+-6824
+-2242
+-5984
+-1206
+4821
+30
+3085
+-2640
+-9827
+5542
+2361
+3389
+4042
+6890
+9696
+-7292
+4694
+1585
+-1733
+-3803
+4180
+-5301
+-8670
+7121
+-8298
+-6698
+-7937
+2449
+-1011
+-9243
+-4189
+-2708
+-716
+-4340
+-4580
+8868
+-6126
+6623
+-9002
+7945
+-3317
+1885
+2186
+8725
+160
+-6958
+-2337
+1361
+-617
+-2385
+-6777
+7801
+-9412
+-4892
+3786
+-2261
+5506
+2102
+-4269
+-530
+4703
+4499
+5495
+5903
+-8295
+-1766
+-310
+-7007
+5782
+-8560
+9665
+-2944
+6399
+2029
+6121
+5744
+8553
+-5774
+-4861
+-7033
+2299
+-6526
+-6298
+372
+7847
+-7658
+-3497
+7288
+5149
+-3577
+6576
+2632
+-6610
+9602
+-8751
+-516
+6868
+-5757
+-9630
+9703
+-1632
+3268
+5020
+1998
+7073
+-7723
+-7550
+-8686
+-7470
+-3369
+-3659
+-5319
+1410
+464
+-1615
+5947
+5780
+-9250
+-8570
+-6704
+3359
+2388
+-9100
+-4595
+-8628
+-5607
+-2705
+-291
+-4392
+-3758
+-3190
+678
+-6237
+-2939
+-1982
+1717
+-5360
+5830
+-4872
+2179
+-5381
+-1160
+-552
+-9700
+-5304
+4821
+2151
+-9296
+86
+-3709
+6175
+-3505
+4967
+-7478
+-6972
+3425
+-6672
+4913
+6768
+-1269
+-2203
+-6103
+5548
+-9972
+3615
+7292
+2398
+7664
+8408
+4524
+-9439
+9617
+-6962
+3385
+6130
+-1365
+1156
+5865
+78
+-1199
+4250
+-3265
+1870
+-4403
+-2078
+-8473
+-3418
+-5144
+-3152
+-1091
+7501
+-3033
+8611
+-4202
+5634
+-6162
+9989
+-8067
+-7514
+1808
+-3833
+6576
+-4599
+9524
+-5799
+696
+6432
+-3925
+5024
+99
+-2273
+-3603
+-6599
+3129
+-6882
+4006
+-5923
+4322
+-7030
+-5942
+6296
+-3088
+7926
+5989
+1766
+-2658
+8170
+-6883
+9100
+-7925
+8302
+7035
+5585
+-7267
+3374
+5713
+1588
+39
+-4051
+-4025
+-2728
+-6122
+3247
+-4861
+3792
+2808
+-251
+4957
+-4815
+6707
+-9557
+9161
+2312
+-7102
+13
+-9288
+7916
+-5312
+-1304
+-8026
+563
+6347
+-8897
+-5243
+6803
+-1940
+-6987
+-4029
+280
+7015
+-3979
+5659
+2291
+-9166
+9620
+2720
+483
+-2653
+5921
+878
+8556
+-9281
+4013
+-1671
+3301
+1058
+-6985
+-3418
+892
+-7959
+-4673
+1807
+-9638
+-7234
+4097
+-7667
+-2636
+7840
+-1097
+7279
+-354
+6533
+-8816
+-5630
+-276
+7840
diff --git a/src/day20.lisp b/src/day20.lisp
@@ -0,0 +1,40 @@
+(defpackage #:adventofcode2022/day20
+ (:use #:cl #:adventofcode2022))
+(in-package #:adventofcode2022/day20)
+
+(defun mix (sequence)
+ (loop with length = (1- (length sequence))
+ for i from 0 to length
+ for index = (position-if (lambda (item)
+ (= (cadr item) i))
+ sequence)
+ for item-to-mix = (aref sequence index)
+ for number-to-mix = (car item-to-mix)
+ for new-index = (mod (+ index number-to-mix) length)
+ do (cond
+ ((> new-index index)
+ (let ((after (subseq sequence (1+ index) (1+ new-index))))
+ (replace sequence after :start1 index)))
+ ((< new-index index)
+ (let ((before (subseq sequence new-index index)))
+ (replace sequence before :start1 (1+ new-index)))))
+ do (setf (aref sequence new-index) item-to-mix)))
+
+(defun task1 (inputs)
+ (let ((sequence (coerce (loop for number in inputs
+ for i from 0
+ collect (list number i))
+ 'vector))
+ (length (length inputs)))
+ (mix sequence)
+ (let ((zero (position-if (lambda (item)
+ (zerop (car item)))
+ sequence)))
+ (+ (car (aref sequence (mod (+ zero 1000) length)))
+ (car (aref sequence (mod (+ zero 2000) length)))
+ (car (aref sequence (mod (+ zero 3000) length)))))))
+
+(define-day 20
+ (:translate-input #'parse-integer)
+ #'task1
+ nil)
diff --git a/t/day20.lisp b/t/day20.lisp
@@ -0,0 +1,16 @@
+(in-package #:adventofcode2022/test)
+
+(define-constant +testdata-day20+ "1
+2
+-3
+3
+-2
+0
+4"
+ :test 'equal)
+
+(def-test day20-task1 ()
+ (is-true
+ (= 3
+ (run-task 20 1
+ (make-string-input-stream +testdata-day20+)))))