aboutsummaryrefslogtreecommitdiffstats
path: root/AoC2022/20
diff options
context:
space:
mode:
Diffstat (limited to 'AoC2022/20')
-rw-r--r--AoC2022/20/input5000
-rw-r--r--AoC2022/20/solver.lisp70
2 files changed, 5070 insertions, 0 deletions
diff --git a/AoC2022/20/input b/AoC2022/20/input
new file mode 100644
index 0000000..37ef098
--- /dev/null
+++ b/AoC2022/20/input
@@ -0,0 +1,5000 @@
+-6020
+220
+7003
+5151
+-5167
+-4529
+-7297
+7928
+7858
+5260
+4589
+8577
+3834
+8394
+-1263
+16
+-1154
+8866
+-1567
+-3897
+5296
+-9679
+3326
+-4820
+-5420
+7422
+-2362
+1846
+-4812
+4533
+-5053
+5797
+-9706
+8176
+-5578
+-6153
+-8867
+967
+-1606
+8631
+-2007
+-2131
+-9973
+-9393
+-8517
+-5611
+3953
+7057
+-1110
+48
+-8868
+1968
+4244
+4226
+-5170
+-3376
+6910
+849
+-3768
+-7193
+-4215
+4884
+8741
+8266
+821
+-8829
+-9118
+8318
+70
+9721
+9700
+-3173
+8343
+-5529
+-5930
+-6108
+-5763
+-1211
+8808
+8145
+-9406
+-7515
+9969
+3382
+-8533
+4390
+-5170
+748
+-4671
+4644
+-9028
+1247
+8102
+6550
+-2162
+-9278
+-2993
+1537
+-5404
+-6896
+-7924
+-2902
+-4008
+5527
+-5316
+554
+-1092
+7887
+-1848
+-5755
+-836
+-2896
+8429
+-9743
+-2936
+-9298
+6856
+1329
+8520
+-7719
+-9373
+-891
+-6503
+1624
+-9078
+3401
+-2454
+-7258
+-9190
+9475
+-5601
+799
+-1752
+-815
+5126
+-5495
+-3138
+9629
+9821
+5467
+3396
+-5477
+-836
+112
+-3627
+8991
+-8279
+3340
+-5575
+3579
+5953
+4793
+2224
+-4681
+-853
+-1958
+-8587
+3010
+-3817
+-7577
+8446
+-5639
+-232
+-5152
+228
+3459
+9918
+8432
+5008
+-5730
+4175
+-6584
+9093
+7304
+3287
+7364
+-8520
+-3073
+-94
+991
+-948
+-368
+-9909
+730
+-5892
+8730
+1081
+-9994
+-8238
+-2873
+7132
+7080
+-8848
+3764
+-810
+6531
+-1615
+-8497
+9397
+-5357
+2867
+9579
+7570
+7003
+9257
+-1606
+-4359
+-8164
+-3942
+-9684
+8672
+8512
+5207
+-74
+9474
+3184
+254
+-5215
+-7933
+-6057
+-6273
+-699
+-6542
+2573
+2655
+-1425
+3187
+9764
+6375
+2489
+-2170
+-4041
+-6031
+9333
+-5966
+-8721
+6417
+-6632
+-3234
+1537
+-8845
+-8150
+-1502
+1725
+4587
+-2474
+-9468
+-1874
+6662
+-8546
+-8676
+9764
+2568
+8870
+7739
+6321
+4364
+3798
+535
+-9354
+-8468
+3321
+8520
+-5254
+8377
+-5381
+813
+-3118
+-1419
+-3775
+9351
+-3336
+-4623
+-6333
+6849
+-7378
+-7619
+-7577
+-6920
+-4234
+2787
+-1744
+-7627
+3017
+-6363
+-5850
+369
+-5580
+-9654
+-6901
+1593
+-2310
+9756
+-6934
+-9210
+-9278
+1166
+-6484
+6409
+-2218
+-2345
+-7657
+-2128
+-7239
+-2135
+-1472
+-7812
+8427
+4322
+5264
+4538
+9616
+1861
+5447
+9211
+-884
+3016
+-2210
+8815
+-4915
+1782
+-3420
+4455
+-5306
+2924
+6224
+9006
+-9514
+1073
+5027
+6263
+1468
+4960
+7042
+79
+-5421
+-9546
+-4891
+8505
+6142
+702
+-6989
+5595
+-7619
+8560
+7410
+2113
+-1829
+-4798
+8117
+3982
+4566
+-5154
+-1810
+2936
+-3496
+-8547
+920
+2914
+-9441
+1968
+-9987
+3306
+-499
+7484
+1118
+-1654
+9626
+-7232
+3048
+3865
+6707
+-8345
+1101
+-8433
+-7435
+-6020
+-4885
+-1460
+6257
+1205
+-4764
+3958
+809
+-3048
+-5653
+6894
+-1242
+-4273
+6541
+-8116
+-1426
+-3284
+-4030
+-833
+-9843
+7617
+-958
+-6290
+-3027
+-8377
+7517
+-2000
+-4032
+6321
+6282
+-9284
+-844
+4394
+-4853
+-8408
+3398
+9725
+-8308
+7241
+4074
+-8096
+-2128
+4141
+9684
+-7146
+-8106
+-4077
+-7135
+-8309
+-544
+-5925
+-5569
+-7683
+-2136
+3060
+2894
+-2688
+-8250
+-4429
+1379
+2433
+7184
+7560
+-2598
+-9922
+3897
+-6836
+8789
+4947
+-7268
+-6558
+994
+-7232
+-9573
+876
+7934
+-6282
+8720
+-8835
+-1257
+-3588
+-4181
+-7846
+-9865
+0
+5590
+-12
+-8835
+2735
+-6271
+53
+-9689
+7262
+7517
+6430
+6361
+-1306
+4277
+4531
+3569
+7360
+-1476
+-6083
+1452
+3592
+5196
+-3959
+9832
+-2758
+9086
+-3182
+8547
+8394
+8244
+-2937
+-6317
+-4030
+-7400
+-6971
+-9181
+-5640
+6012
+4957
+7683
+3666
+962
+864
+2116
+-5743
+3673
+535
+2574
+-3790
+-7553
+-8816
+6272
+-7494
+2400
+-9333
+-4505
+-4202
+-7221
+-5269
+1139
+-8149
+-8446
+4306
+-8897
+-1830
+-1097
+-7010
+-3033
+-2344
+686
+2876
+4133
+-5085
+-3725
+8241
+5114
+439
+4973
+-9664
+4385
+-1110
+1073
+-7165
+8519
+1485
+-1242
+-7273
+-233
+6479
+-9973
+-5656
+-1140
+-6241
+8077
+-9037
+-9192
+2839
+9693
+3636
+7033
+-664
+7456
+741
+3234
+-8575
+1880
+-5302
+-1550
+-8942
+-9280
+-9706
+-815
+390
+-7743
+9211
+1498
+-9723
+-3574
+788
+2290
+-2596
+-5809
+-9055
+6221
+306
+-499
+-3415
+-7239
+8627
+2634
+-7135
+-9761
+-9906
+-2193
+248
+-7237
+5559
+-3716
+386
+-1736
+7862
+3285
+2290
+1279
+-2206
+-5049
+2736
+-4728
+7090
+6773
+5979
+4847
+7956
+2435
+-5271
+-5382
+9214
+-2300
+-1688
+6864
+-6213
+2039
+9348
+-4429
+5695
+-4602
+3888
+-3718
+9513
+4584
+2678
+7210
+6775
+5933
+-6648
+5216
+-1354
+6177
+-4088
+6426
+-8164
+1649
+4605
+-1537
+-5927
+-8450
+-5927
+1353
+1166
+9951
+-3182
+4347
+5515
+-3264
+3587
+8204
+-4975
+1321
+1867
+-8010
+-8378
+1589
+-7543
+2169
+-8724
+-8179
+-1875
+-1226
+-4239
+-1305
+-878
+-9446
+-4798
+-9354
+-8160
+-3449
+-9079
+5036
+-5762
+-365
+-6476
+5178
+4003
+-7560
+5307
+6
+8689
+-8423
+7658
+3038
+-6035
+8632
+8537
+1783
+7872
+514
+-2801
+5729
+9466
+584
+-9127
+-681
+-4547
+-872
+-8909
+6857
+-4086
+2328
+7832
+1787
+9604
+-7742
+3371
+-6494
+-6651
+-5533
+1608
+4417
+6551
+-8395
+9672
+-928
+-2147
+3059
+-8113
+-7444
+7021
+3659
+6366
+2377
+-4693
+-5500
+-8835
+-25
+-2585
+-9123
+330
+9280
+-3264
+3396
+3276
+-9729
+-4706
+-6822
+350
+6551
+-7288
+-3118
+5211
+-3973
+4453
+220
+4944
+4284
+-729
+-2702
+-1585
+-9337
+2294
+8329
+8852
+-3309
+4311
+-6328
+-2933
+-5925
+7634
+-8603
+1171
+164
+1561
+2894
+-8160
+-4826
+7484
+-7548
+5385
+-1606
+7389
+4010
+2628
+120
+-4553
+-2293
+6529
+-9076
+-7088
+-5736
+-2885
+-8865
+8105
+-6176
+9977
+-8527
+8631
+3514
+5564
+-5695
+1937
+3303
+6436
+-7667
+-4747
+2426
+2411
+-8717
+-3026
+4815
+8400
+-7618
+-4423
+6741
+-1743
+3376
+3741
+2033
+2700
+7898
+2634
+-157
+8742
+-884
+-364
+2309
+9534
+-4077
+5397
+-3341
+8446
+-5427
+-8375
+9521
+-4758
+-4394
+7131
+-8292
+5158
+4198
+6048
+-3973
+-7746
+-5495
+-5154
+8130
+7528
+6550
+-136
+8822
+-6826
+-2933
+-1864
+-3261
+7195
+381
+-8867
+-8256
+-9285
+1937
+-3588
+8908
+228
+-5469
+2438
+659
+8146
+-9702
+-175
+1850
+-7532
+-7343
+2805
+-8250
+5045
+5444
+-348
+8361
+2088
+7368
+6048
+-10000
+-2956
+2489
+9962
+-6349
+-8149
+-3264
+-1277
+-7821
+2207
+-7098
+1040
+3767
+5119
+-1222
+7968
+-922
+4796
+-9752
+173
+9781
+-5210
+-3204
+-1719
+-5189
+-6779
+-9162
+-9433
+-1869
+1442
+-6291
+-9778
+6129
+-539
+-4077
+9888
+-6552
+5551
+-2090
+8431
+-8608
+-5925
+-2090
+3979
+3320
+-4699
+6618
+3902
+-5772
+2090
+-2747
+2489
+5198
+-9278
+-8620
+-5518
+-3278
+-5306
+4029
+-4416
+-8601
+2994
+1153
+9932
+-1419
+-2662
+8856
+-637
+-8178
+-1574
+-2315
+9857
+9671
+5322
+7397
+-7724
+6742
+5343
+-4997
+926
+193
+-7016
+-9678
+-8608
+809
+-9356
+7388
+-803
+-8741
+6529
+6059
+-4106
+5455
+2980
+-8286
+8676
+-6866
+-434
+2365
+-4691
+488
+-4776
+6680
+-6853
+-7089
+6179
+6021
+-3213
+-2371
+-792
+9846
+-1815
+-4630
+2969
+4935
+-1747
+1115
+5449
+7962
+-8918
+6275
+351
+-4077
+3041
+3681
+-9990
+2833
+8187
+-2332
+3061
+6973
+-8661
+2715
+8469
+9091
+-5627
+8193
+-5925
+5419
+-4630
+1486
+-7129
+-3768
+-5316
+-530
+-6257
+637
+-7771
+-7679
+3996
+-2387
+-741
+77
+6815
+3613
+8939
+-8665
+-8393
+-394
+6676
+4943
+9596
+7943
+-9408
+9737
+-1999
+-6929
+9371
+-145
+-9259
+-8676
+-3477
+6379
+-4748
+-390
+-8723
+4119
+5343
+-2427
+6426
+-1013
+-233
+-6366
+3855
+2877
+-864
+-3094
+6137
+3026
+-8546
+-4215
+8564
+4809
+7578
+8063
+-6060
+-277
+-1910
+3081
+8970
+4228
+-9199
+6048
+-4550
+-2086
+2363
+-7361
+9767
+-8207
+541
+9234
+-2200
+-329
+7905
+-5101
+4270
+5328
+4473
+8922
+1867
+4279
+318
+-3336
+6061
+-9013
+1038
+9344
+9216
+6940
+8741
+4443
+8334
+-9345
+5119
+-6272
+7425
+-1942
+-8765
+306
+-4017
+-4981
+-8670
+-2117
+2065
+-8562
+-8827
+-4571
+-1178
+-6393
+-909
+-834
+3497
+-610
+2161
+7819
+8257
+8488
+9790
+-6496
+7555
+8779
+2815
+-366
+4630
+-6215
+-5752
+4375
+1107
+-1130
+-5677
+8965
+3074
+-2482
+2483
+-8312
+-1851
+9557
+4133
+6752
+849
+9236
+-1248
+-7364
+48
+281
+-8146
+-9253
+1056
+-8942
+404
+-9354
+-5995
+5767
+-8232
+7825
+1589
+-2078
+-5428
+-2991
+-4382
+-1558
+-9920
+6645
+-6784
+-8717
+4231
+-965
+-2846
+4153
+-1201
+-4623
+3479
+-3445
+874
+4390
+954
+6124
+4818
+7546
+-7967
+4028
+-2162
+-2291
+6541
+5567
+-8125
+-100
+-9677
+-8254
+6086
+4192
+-8729
+-3048
+3728
+3834
+-8041
+-8879
+-5578
+6570
+4814
+6879
+-1387
+-9793
+1114
+7558
+3663
+-5421
+265
+-5691
+9371
+-2581
+-1243
+4141
+1345
+1773
+2196
+-4003
+1568
+3499
+-2662
+-4413
+-3388
+-7089
+-5676
+4983
+5383
+5109
+9922
+8918
+-6107
+1346
+-2953
+-2446
+8606
+-5433
+-7462
+4431
+5140
+-5845
+-9773
+-334
+-2761
+7099
+-1207
+5873
+-4397
+-4299
+-2431
+-4191
+939
+8299
+-3435
+-1091
+7394
+5540
+9596
+-864
+-9152
+9457
+-2801
+-8324
+8343
+-6052
+2751
+-2827
+-1038
+-9657
+8308
+5470
+702
+2365
+-64
+-6312
+544
+-1715
+2830
+-4045
+7039
+4630
+1439
+-6960
+1281
+-4574
+3293
+8905
+8682
+6912
+-9882
+-3003
+-5411
+1033
+-8096
+9668
+5690
+3464
+-5357
+7513
+2013
+-5142
+-9456
+6575
+-3721
+2229
+6300
+-751
+1186
+-2223
+102
+-2033
+2782
+2013
+-812
+4361
+-5829
+3208
+-1508
+-8360
+-4642
+-4742
+568
+-547
+2188
+9227
+4385
+-1438
+-8928
+8338
+824
+-4541
+-5572
+8468
+-930
+-1197
+3745
+7016
+7894
+-3545
+-3397
+-5627
+8728
+3374
+-2485
+3266
+-9553
+5138
+-4867
+-5243
+1486
+-1536
+4126
+441
+848
+9918
+-7878
+3251
+-5780
+5866
+8542
+425
+-3645
+6741
+1643
+5258
+-6363
+2878
+7979
+9402
+-5598
+-5550
+-2854
+-3819
+-1550
+-7846
+9519
+-5405
+8858
+2494
+-6141
+4277
+7456
+2955
+5507
+-5232
+1652
+5143
+3707
+-467
+6233
+-5760
+2433
+9488
+-4539
+-5880
+-1277
+-6275
+-8183
+662
+-9959
+-8158
+9291
+-7585
+1549
+-9356
+946
+-534
+5454
+-9783
+289
+-803
+6693
+-9356
+8433
+-5291
+2877
+-3706
+9314
+5103
+6413
+7814
+9209
+-9055
+-9411
+2751
+-2253
+-1794
+-2210
+-1953
+-6134
+-5668
+-7525
+-9399
+5089
+5542
+-1794
+1656
+4355
+9466
+-3836
+9995
+1395
+-4822
+6455
+-4198
+5604
+-1827
+2795
+8748
+6235
+3764
+-2978
+-2852
+-6883
+-6532
+-1405
+3187
+-6973
+1250
+-4533
+408
+544
+2411
+-7772
+-6306
+2464
+3569
+-6349
+753
+8547
+-9804
+5374
+4194
+6895
+6645
+-9599
+-7667
+-1131
+8928
+4030
+-854
+6773
+-4180
+-6141
+9061
+9750
+5021
+-5511
+-4798
+3791
+-8827
+6857
+-7608
+1031
+7663
+-2131
+6022
+-5254
+-6748
+-9285
+178
+-2925
+4744
+-2240
+-2812
+5176
+6356
+4479
+-5767
+3520
+-430
+9930
+-5750
+-4742
+-2791
+211
+-1210
+-1138
+-1119
+-4669
+4488
+-8830
+4523
+-4973
+-5839
+-3717
+-7955
+-5760
+1601
+-5680
+-7533
+6607
+-4273
+7223
+5698
+3995
+9096
+-6910
+-4595
+-1674
+-7321
+-8757
+-7547
+7441
+3136
+390
+7936
+-9093
+-2078
+-5479
+-5251
+-1118
+-2662
+3993
+8515
+-2169
+-8009
+-516
+8230
+-8343
+4540
+7243
+8536
+-2945
+-7416
+2406
+-3592
+-2025
+9191
+-389
+-5018
+5330
+4815
+3443
+3701
+9579
+6872
+9776
+-9253
+345
+-1851
+730
+-9243
+4690
+8210
+317
+-165
+8149
+3660
+-8597
+-3722
+6940
+-7425
+-6784
+16
+-9385
+2114
+8658
+8973
+4527
+-4699
+-7618
+-9491
+-5620
+9472
+-1215
+-4556
+-8527
+568
+-4496
+1256
+3905
+3618
+-450
+3236
+2433
+8785
+5221
+8508
+6506
+6741
+3234
+7484
+4861
+2879
+-2298
+-1715
+8591
+-4215
+-7894
+3963
+-8025
+-9906
+-622
+5998
+-1607
+7590
+445
+3843
+5275
+360
+-1797
+170
+6439
+-7216
+-883
+-9678
+3170
+-8294
+9191
+3694
+-3528
+-4837
+6832
+4523
+-7578
+-4298
+-7470
+-8116
+-5929
+7389
+-4349
+1299
+587
+2509
+-4741
+-7833
+-1083
+-2547
+2580
+7162
+-2213
+5998
+1416
+3170
+307
+3854
+5745
+8279
+-7359
+8566
+-9629
+5202
+5082
+-4664
+-573
+7898
+-9575
+-8558
+-3422
+-5580
+3183
+-2928
+-953
+-9755
+6356
+-8925
+-4436
+-2636
+4748
+-9627
+7583
+-9906
+4697
+5515
+2792
+-4195
+-2068
+3104
+4722
+-1276
+-336
+-4911
+6782
+8266
+-8317
+3505
+9434
+9924
+-947
+-9537
+9994
+8174
+5532
+-2490
+8332
+-6768
+6588
+-1131
+2255
+3649
+5913
+8908
+4443
+-8086
+6453
+6910
+-8256
+7994
+-1170
+9567
+-9405
+-3519
+-2053
+-1839
+4464
+-7600
+-4522
+-6953
+9068
+-7335
+-1930
+-3739
+-2660
+-8172
+1570
+2022
+-3713
+-5732
+2559
+7508
+9235
+4731
+-8036
+-1120
+826
+7968
+8722
+-6052
+5119
+961
+1177
+8547
+4101
+-1584
+7396
+-8308
+780
+-167
+-2894
+4230
+-9476
+-1248
+-4973
+5628
+-7233
+-3587
+-4822
+3876
+1799
+4644
+3791
+9249
+-480
+8035
+-2640
+8950
+4113
+-6020
+1997
+7694
+-4831
+7264
+3116
+9710
+-5382
+488
+-1131
+8348
+-3150
+-3688
+-1815
+8209
+-733
+349
+9847
+6529
+-3170
+9594
+6533
+3536
+9209
+9786
+4178
+-2599
+8030
+-3633
+2926
+-7362
+-9878
+-5767
+6936
+-1283
+5360
+1089
+8768
+-9768
+-2490
+6829
+-1776
+-5101
+-2264
+5353
+-5973
+-9126
+4437
+-4366
+-4090
+-1827
+951
+-348
+1811
+-9560
+6233
+807
+5495
+-9582
+-5707
+-8229
+3194
+-2221
+6782
+9613
+-1606
+-2
+2277
+2674
+-7657
+6454
+-5929
+-2427
+1850
+1403
+951
+3401
+627
+4847
+363
+8897
+-5537
+9327
+6813
+7943
+-1455
+6531
+-3179
+6209
+4671
+9638
+5663
+-3049
+8154
+3834
+-2643
+5016
+-2602
+8742
+-4792
+-6776
+-7193
+-597
+-3809
+9538
+-6358
+5634
+1444
+-1656
+-6644
+-8766
+-3333
+-1138
+-5326
+6747
+558
+-8307
+-4735
+5257
+-8544
+-2736
+9012
+8837
+-7146
+-8135
+5633
+-8297
+7117
+4572
+291
+-8884
+1781
+9793
+-4266
+7490
+-6709
+-8820
+4924
+-9603
+-6942
+8016
+9339
+7038
+-12
+-1218
+-6836
+-1218
+3303
+2811
+-5741
+-4426
+864
+8120
+-7690
+-4736
+-1151
+796
+-9743
+2052
+-5850
+-6629
+-931
+-4448
+-1151
+2580
+-9028
+1944
+6686
+6674
+-136
+-4180
+5126
+6674
+3479
+-1887
+7957
+-2621
+4581
+7753
+-1308
+9167
+-5420
+-2009
+7021
+4862
+-2030
+-9142
+-9214
+4309
+622
+-7265
+8386
+9523
+2962
+1881
+-104
+7904
+1157
+-4547
+2573
+-6474
+2136
+9379
+986
+-7812
+-7221
+-4509
+-2927
+8164
+-8164
+-8922
+-8967
+-6825
+-1718
+7259
+722
+1604
+7789
+-8087
+-4247
+9952
+-8392
+-833
+-6182
+8454
+-8444
+1568
+-1229
+1147
+-9430
+8121
+-9310
+-4691
+1181
+986
+8834
+3340
+7663
+1063
+1589
+3118
+-6667
+-6920
+-5709
+-9418
+-4830
+8055
+2579
+-5089
+2607
+-4747
+363
+9786
+-9137
+-6369
+-9747
+-8135
+3712
+8213
+-8619
+-6360
+7832
+9900
+7377
+-8316
+-5829
+-3900
+-1092
+-8589
+-3726
+6317
+-3170
+-8345
+-2662
+-9027
+7301
+5038
+-6595
+9831
+-1054
+-8129
+6434
+-5487
+328
+4277
+-4127
+3858
+5162
+-6498
+-456
+548
+-2770
+5796
+-6515
+5746
+488
+-4701
+-9754
+-1228
+-348
+5600
+-5779
+-997
+4497
+1379
+8655
+-9754
+1414
+4059
+-8319
+-1995
+3240
+-9523
+4403
+-19
+-3079
+-1357
+-6020
+2953
+-201
+642
+8692
+8471
+9607
+-6975
+-3274
+660
+5542
+4806
+334
+4252
+3600
+4473
+1401
+7484
+-9504
+-1669
+777
+-6004
+-8265
+-7719
+5495
+9995
+9662
+9236
+1181
+7359
+3670
+-6507
+207
+9604
+3780
+522
+-9438
+7620
+6454
+7345
+-7193
+-6653
+664
+-7011
+-2620
+-1218
+-4300
+3194
+7485
+-6004
+-516
+6694
+-38
+-6668
+4922
+26
+2751
+6326
+8856
+476
+2951
+-9236
+1346
+1274
+3293
+24
+6372
+-5246
+-4580
+1139
+3306
+7084
+-8872
+8020
+1485
+-4999
+-2747
+2634
+-7398
+-8872
+4464
+-5257
+-7129
+1575
+9980
+9780
+-9905
+-2148
+2994
+-9514
+-7907
+-151
+-258
+-4386
+2459
+-4906
+-7232
+6782
+1379
+-7135
+-3619
+9096
+-5167
+-2293
+-5492
+1934
+-7285
+9777
+6628
+9315
+-4968
+3184
+-7165
+-6423
+-3711
+2573
+-7843
+-4385
+8684
+201
+5893
+8901
+-825
+-7821
+122
+8925
+9937
+5893
+-8009
+-9523
+-2652
+-5762
+-6611
+4726
+7059
+2058
+813
+7490
+3764
+-2566
+6031
+9983
+-4149
+5479
+9870
+-5584
+-434
+-7757
+-8867
+-1326
+9235
+-4911
+-2457
+-5676
+-8638
+-7171
+7728
+6423
+-8549
+-6737
+-806
+-2751
+-7466
+-2956
+3702
+1476
+9813
+7572
+-2267
+6297
+-9505
+-9219
+-801
+-2285
+6380
+-104
+2596
+-5223
+3854
+1038
+-8494
+-6674
+-1178
+-4822
+-4776
+6528
+7804
+3764
+7084
+-5705
+-7780
+2537
+7899
+460
+4531
+6417
+-6138
+8113
+3587
+2580
+1870
+-4279
+-7454
+1256
+8940
+-4402
+-5363
+-1245
+-4776
+6936
+-7195
+-4682
+-7398
+-7264
+-4673
+9693
+703
+2309
+-9792
+2005
+-1928
+-5382
+-7940
+-1201
+9042
+1536
+-4048
+-3319
+-2758
+-6363
+-4223
+3751
+4518
+8149
+6677
+8908
+5886
+-3855
+-2959
+4983
+2741
+-4802
+541
+-609
+8342
+-6656
+-6322
+-2385
+2769
+-198
+5200
+396
+631
+9951
+1234
+-7748
+4922
+3609
+1886
+-5333
+-4735
+-6312
+-7129
+1066
+-4509
+2277
+-1870
+-3136
+579
+606
+-4358
+3510
+6761
+-7739
+-323
+9436
+1625
+7963
+-6475
+8404
+4908
+-2243
+-9236
+4015
+79
+-3709
+1486
+3293
+8163
+5058
+9235
+960
+25
+-4483
+-9738
+-8984
+5538
+5535
+-9477
+4048
+-1744
+3549
+7925
+-2367
+2025
+9585
+8946
+-7793
+898
+-1708
+2601
+-8638
+2428
+-557
+3270
+8907
+-4881
+1624
+-7683
+-6736
+314
+673
+-3094
+-8691
+8393
+5190
+-9755
+2908
+1742
+1341
+-1910
+6515
+-5027
+7757
+-1303
+2811
+9601
+6257
+-2366
+-2599
+9715
+-3376
+5797
+5360
+7560
+-9956
+6096
+3252
+-3233
+-7356
+3436
+6983
+-815
+1835
+3882
+-3987
+-8009
+5437
+6290
+-7879
+4708
+-2991
+8569
+9648
+-2747
+-6070
+488
+8433
+1625
+9314
+-6281
+8547
+-734
+7788
+-1908
+-9740
+-4555
+-1266
+8053
+9981
+-2121
+-4427
+-1049
+-6745
+-5044
+-6103
+1319
+-4195
+3844
+-7821
+-5717
+2326
+-7548
+3116
+-286
+3834
+9197
+-6191
+6183
+-4163
+5595
+-8835
+9427
+5358
+-4410
+4218
+-6107
+5565
+8699
+-4687
+-3359
+1893
+-7703
+7082
+4589
+-8702
+-4742
+9047
+-3840
+1574
+9636
+4473
+-2452
+-5412
+7740
+2544
+-7467
+-2356
+4375
+7077
+-8759
+7517
+-8660
+-2409
+-2190
+2520
+1115
+-2701
+1997
+-17
+-4093
+-201
+8338
+-6901
+-5332
+-4576
+840
+3537
+-2516
+5486
+-2828
+5162
+-1377
+4873
+1290
+-1408
+-6062
+-3243
+-7742
+-8799
+7273
+8431
+-9405
+7990
+-4851
+-4838
+-429
+9269
+-7833
+-5050
+-3831
+6327
+350
+-39
+-7324
+1441
+-4362
+9139
+-2485
+7117
+6114
+5786
+-5355
+5223
+-751
+7019
+7968
+-8585
+5767
+748
+-218
+-1097
+-7265
+-7697
+-9453
+-4243
+321
+-1330
+3494
+-7165
+3076
+1164
+1990
+-9902
+-6567
+-1127
+6585
+9085
+-1848
+5495
+-5413
+5857
+-1132
+2180
+-9953
+6791
+-7553
+7971
+-7540
+-6595
+-4088
+7255
+-6660
+7669
+-672
+-8097
+8187
+2262
+-6257
+3926
+748
+-4790
+8399
+8107
+7833
+-7376
+2566
+4798
+7208
+652
+318
+-6557
+9334
+-4463
+-8125
+-6009
+-3592
+1212
+-5760
+2855
+-1108
+8732
+-7355
+1890
+2969
+-6443
+7243
+3313
+-3176
+-9199
+5447
+144
+2699
+5296
+9086
+8993
+-4247
+-1972
+-6162
+-8378
+4726
+-5487
+-4649
+204
+232
+-6661
+2528
+-4243
+8709
+369
+5685
+4365
+-430
+5788
+1264
+-4689
+-3195
+2041
+9631
+6209
+-1839
+-9051
+5814
+-1209
+-9356
+6330
+-1531
+-2367
+-3539
+6565
+-391
+5340
+1608
+-1288
+9646
+-5752
+1750
+-8335
+2537
+7051
+4003
+4916
+3552
+3848
+5722
+7603
+8913
+9035
+-9738
+-2291
+752
+5598
+4973
+421
+2816
+1343
+-4896
+124
+-4929
+8781
+-2756
+-4709
+-9547
+4490
+-5170
+-4247
+8114
+-9693
+-7046
+8190
+-5380
+-8738
+6864
+1610
+3683
+4806
+-6185
+-5381
+-6081
+-4633
+-2575
+2583
+-8239
+2791
+-7117
+-3004
+7293
+-8319
+5296
+-6321
+-1520
+5330
+7766
+-9308
+-3187
+8949
+-8796
+2882
+7683
+-6133
+4540
+-7600
+2341
+6602
+9096
+-7877
+1186
+5492
+2232
+-3490
+548
+-8948
+-209
+7560
+-3054
+5759
+420
+-7362
+-2824
+-78
+2722
+-3627
+5016
+4977
+8502
+-4171
+-7533
+-1719
+9395
+3234
+-484
+-9404
+7962
+4257
+6312
+544
+2708
+7025
+928
+7726
+2892
+1617
+-9973
+504
+-6732
+-5598
+1114
+1770
+-4812
+8826
+-8585
+6968
+3922
+8855
+5951
+2039
+-3831
+3000
+-8740
+5190
+-4030
+9352
+-2302
+-8345
+-3695
+783
+-5927
+-5905
+2639
+1163
+-9603
+-1331
+-4801
+-2688
+6550
+3324
+-3563
+-6211
+-8146
+-4272
+-3542
+9904
+-9743
+4347
+8107
+3702
+-5236
+-8822
+-2181
+-1296
+-4549
+-6306
+-9266
+4322
+-6009
+-4097
+5268
+8739
+-6020
+-1138
+9523
+8532
+-9795
+4384
+-9134
+-8971
+-759
+-1864
+-939
+-391
+-975
+3340
+5717
+7877
+7360
+-3415
+7196
+-740
+-729
+5056
+-8146
+90
+-5639
+-4081
+5975
+-6073
+-3523
+-6333
+-4005
+-5317
+-7616
+9504
+5488
+-2875
+-8250
+-6382
+5196
+3057
+-3267
+-4888
+3400
+-4770
+5772
+-6323
+-364
+-7285
+-6140
+-9987
+8114
+-7164
+3469
+2764
+-5046
+8329
+9385
+2
+-9072
+6338
+144
+-8149
+1742
+-556
+-1435
+412
+-4544
+6322
+3994
+-7179
+-5929
+5641
+-948
+-840
+514
+-3963
+-1937
+8307
+2290
+-9893
+5122
+-7112
+5255
+-3361
+1850
+2309
+-1586
+-7645
+-8146
+-5302
+-5715
+-6395
+3653
+2692
+-7544
+2967
+-4325
+-6322
+3184
+-6275
+-2940
+-84
+-9617
+-1794
+9769
+4231
+-7854
+2230
+1320
+-8648
+6395
+3208
+1476
+4263
+-6895
+9533
+9689
+-6140
+7436
+-6737
+813
+9052
+-458
+-5380
+8856
+6940
+-9514
+2048
+4020
+-4219
+8403
+8525
+-8807
+3812
+2411
+2600
+-5936
+-2874
+2039
+8127
+-5553
+-3169
+-2211
+1062
+663
+-248
+-973
+-9973
+-1421
+5122
+-348
+4375
+-833
+-2503
+-9013
+-1325
+5971
+-970
+5496
+-8433
+6872
+2715
+-7821
+4269
+1340
+-2464
+4470
+9091
+-6382
+8246
+-699
+8835
+4868
+1668
+-8701
+-7543
+-4339
+8500
+-7445
+5605
+2426
+-919
+1163
+-6837
+-7110
+-9627
+-1806
+-3099
+-676
+-2259
+-6656
+8089
+-8665
+2058
+4526
+-4707
+-17
+-4962
+5045
+1671
+6002
+8724
+-8902
+4562
+-4961
+-3766
+9278
+-5507
+-3323
+7001
+7658
+-2940
+8938
+-1468
+-6903
+7560
+5567
+-1173
+-8151
+1235
+-6567
+6476
+5759
+-32
+939
+-3397
+-8254
+3309
+-8376
+4808
+4960
+-4392
+1625
+-3399
+-5745
+3378
+-2928
+7398
+-1234
+7936
+-7212
+-1870
+-2541
+7035
+-3397
+-290
+-7098
+6518
+-8256
+-8321
+6382
+6791
+8939
+-3071
+763
+967
+1624
+5664
+8925
+-7765
+3822
+6618
+6221
+-3815
+700
+7137
+-5769
+-6883
+-9020
+-7246
+9517
+6360
+3455
+6965
+-2279
+6786
+-4764
+9519
+7463
+4361
+9425
+4306
+1997
+4628
+-3552
+7041
+-8935
+-3416
+-6891
+2365
+4907
+-8926
+-8388
+-6473
+-4973
+2516
+-7317
+9438
+3399
+-1155
+4533
+7837
+7074
+1162
+-9773
+-7547
+6369
+5999
+6143
+77
+-8562
+8261
+2760
+4787
+-7237
+7905
+-1384
+7538
+-1432
+2458
+2269
+-5936
+3549
+-4595
+6319
+9784
+3587
+-9622
+-2688
+-7110
+-1794
+7533
+-5936
+-2291
+5117
+1780
+1728
+-5966
+9684
+3717
+1395
+1264
+5162
+960
+579
+-6016
+-2430
+739
+-9308
+-8301
+-5372
+5515
+-5150
+-3029
+-63
+8728
+7709
+-2264
+6152
+9521
+7264
+-5695
+-4963
+-4975
+-6727
+1770
+-5786
+7834
+-6963
+6859
+-1299
+-8236
+-3052
+5206
+-4599
+1070
+-4236
+-3236
+7528
+7710
+5855
+-4429
+4460
+2207
+4614
+-232
+-1651
+-6328
+-5520
+-7119
+8276
+-8207
+1598
+2914
+8667
+-1615
+4059
+1688
+-1738
+3609
+869
+-1062
+4416
+-3822
+-8146
+1444
+8661
+-3069
+-2674
+-9122
+801
+986
+2926
+-5673
+-7706
+-2710
+-9787
+4818
+-9755
+-9847
+-1788
+4424
+606
+-315
+-6211
+7961
+-3782
+-3463
+9534
+-4626
+-8147
+5818
+-473
+-3717
+3690
+9768
+-6608
+-6653
+7064
+-3938
+-6417
+3618
+-9166
+-7011
+-5834
+-3565
+807
+-3252
+4059
+-4736
+-5867
+-9504
+-6259
+4955
+9502
+-3978
+-994
+-8203
+364
+4587
+7804
+745
+6545
+-5627
+-9315
+-84
+-6637
+-7120
+-3158
+-4843
+5183
+6455
+-4382
+535
+6497
+-4298
+-9232
+-1527
+-3496
+9068
+-8923
+-4643
+-4036
+-4034
+-9296
+314
+507
+-1719
+-9050
+5473
+-807
+3349
+-2599
+-8672
+661
+1325
+-3978
+-9752
+-2600
+8983
+-1173
+472
+-2356
+-368
+4359
+6028
+3587
+-2344
+5417
+-5930
+568
+-5527
+1147
+-9934
+9395
+-8433
+-2121
+4739
+9693
+-9777
+3204
+6662
+8732
+-6538
+753
+2323
+-8759
+-9468
+-5137
+5798
+-4402
+7827
+2421
+4145
+5588
+-7285
+3108
+4086
+2782
+7019
+95
+-3472
+374
+6303
+6674
+-2652
+874
+-9598
+7313
+4148
+-8709
+7788
+-8738
+3726
+6473
+2428
+-9196
+-6759
+-7445
+9236
+649
+7770
+-8807
+8454
+2162
+6895
+8182
+2273
+9769
+-3138
+-8046
+4836
+-5495
+-7547
+-4279
+-5301
+486
+-6382
+274
+-1373
+9286
+440
+7978
+8472
+-5582
+5495
+-3889
+6945
+17
+4113
+4394
+1411
+-4077
+1401
+-4246
+2655
+4368
+-5184
+-4176
+-8144
+5079
+518
+1006
+-729
+-2867
+-7305
+-5977
+-2873
+9367
+-5183
+-9438
+4288
+-7891
+-3219
+6085
+-9144
+2192
+9190
+5981
+6482
+-6391
+2600
+6235
+7804
+-5421
+2025
+-3991
+-772
+1606
+4587
+-1566
+3193
+-5614
+155
+8975
+-2328
+8763
+-474
+-5314
+-1322
+8785
+-5630
+4980
+3931
+-1732
+-8279
+9596
+4224
+5563
+1958
+2959
+8756
+6806
+3995
+-6552
+6842
+3353
+6978
+664
+-6271
+4992
+-7288
+-7933
+-5124
+5712
+752
+9161
+-8692
+-4811
+-3324
+-4081
+-3683
+1921
+6458
+-8146
+4174
+3025
+-555
+-8440
+-6008
+8732
+5587
+-1534
+7470
+8499
+-9991
+-8942
+9000
+3117
+9325
+9555
+-3197
+8151
+7753
+5019
+-7425
+-8395
+2051
+935
+2458
+3189
+541
+2882
+421
+6880
+-4576
+-5302
+6562
+-2820
+-144
+-3094
+6922
+7903
+5116
+-2917
+3477
+-9066
+3703
+581
+969
+-5473
+4257
+-1648
+2313
+1898
+-1972
+-3159
+505
+7410
+-8872
+-4714
+8746
+-8177
+-3470
+5176
+-4385
+1453
+4129
+-8661
+3252
+2139
+-4711
+-5086
+-6009
+-1295
+-4565
+-6846
+3351
+4126
+-9706
+-2054
+8144
+-1808
+-2171
+-482
+-5765
+-5183
+3316
+6521
+5695
+-8205
+1369
+4797
+-6706
+7444
+9101
+-2181
+4973
+-953
+-8667
+5913
+-6532
+-1327
+-1537
+4664
+-9441
+5296
+-1516
+554
+-9922
+5236
+6694
+-8841
+-799
+3676
+-6674
+3398
+-8012
+9333
+6492
+3336
+961
+4298
+-7082
+-555
+-2325
+-7697
+-3119
+-8613
+3983
+-6558
+7974
+7441
+-4300
+9424
+9992
+206
+1892
+-1118
+994
+-7343
+-3724
+-8423
+4687
+8759
+7810
+3681
+8649
+4193
+-9905
+8808
+-4286
+5831
+1841
+6926
+6280
+-9077
+-8051
+-3298
+133
+-8279
+6272
+-7297
+-6369
+-5181
+6949
+8905
+-2446
+7251
+6941
+-6133
+-2634
+5907
+3251
+3234
+3093
+6662
+-4003
+9314
+-9572
+2751
+-2279
+3371
+-366
+2465
+-1705
+5004
+-1537
+-8776
+-1151
+6369
+-4630
+7774
+-3554
+4229
+8579
+1326
+3826
+-8948
+5783
+-5940
+-5447
+-1537
+-6325
+8604
+-4219
+7557
+-9090
+6290
+1199
+3639
+488
+8698
+-9790
+-3684
+-315
+5178
+-1850
+-8729
+-9322
+-4630
+-210
+-1107
+-3538
+-5905
+6706
+9804
+-9404
+5605
+2407
+5003
+960
+9289
+-1083
+2951
+-19
+-633
+1994
+-77
+-1127
+6967
+6674
+8403
+-4196
+-9322
+-6549
+4562
+1509
+-5966
+6961
+-4987
+-1419
+501
+3690
+5146
+-1293
+7802
+120
+4388
+-4283
+469
+7247
+-8672
+1841
+-446
+-7485
+-3169
+501
+5439
+1742
+-7092
+-8826
+542
+-3415
+2790
+-9648
+-8321
+1700
+460
+5751
+3270
+-2721
+-6165
+-1979
+7830
+542
+6090
+-343
+-6264
+4761
+-1351
+-5081
+-5512
+-7607
+2065
+5655
+-9876
+9707
+-3676
+4921
+7422
+113
+-4036
+3702
+-5302
+1624
+-9453
+4150
+-8227
+-2159
+-9831
+8889
+-7289
+-6589
+-7731
+-1154
+-2288
+4468
+9348
+-6328
+2674
+2646
+6889
+-4801
+9006
+1079
+2211
+-8227
+-5254
+-569
+-1013
+-8701
+3751
+-2412
+-2873
+-2708
+-5167
+8655
+-8558
+9171
+-2457
+-5316
+7080
+2720
+7139
+-7016
+2641
+-5516
+7628
+-800
+-673
+6829
+-934
+-2758
+3134
+8961
+-1114
+-6287
+3351
+-4664
+-7585
+-6152
+1339
+930
+1606
+-4875
+9784
+-3724
+4164
+-1874
+-6706
+-2828
+-4615
+9344
+1480
+7360
+-8086
+9411
+-1969
+-3041
+6242
+5987
+6052
+2815
+-123
+-7643
+-4720
+728
+-4525
+-1197
+-9322
+978
+9587
+955
+7424
+4229
+3075
+6589
+5662
+1236
+-9198
+2302
+-611
+4665
+9628
+-1752
+110
+776
+6562
+6278
+-9333
+4458
+6059
+5473
+-5442
+-2885
+-8081
+-1215
+4898
+-569
+-3309
+1345
+-4420
+-6581
+5970
+-6301
+-2804
+7533
+1337
+-2558
+9816
+9534
+-7338
+8759
+6661
+9894
+8669
+6133
+-9004
+-4455
+1670
+-2585
+7042
+-1804
+-9322
+8661
+-8584
+809
+445
+3177
+9249
+6662
+1056
+3764
+554
+-1649
+3636
+-6496
+9014
+8317
+-9268
+9874
+-5345
+3655
+9432
+8717
+-6710
+8805
+6225
+-5121
+-9905
+-9652
+-1325
+-451
+-7054
+-9537
+1449
+-3537
+-6674
+9203
+6889
+4566
+464
+-2876
+1227
+8572
+2094
+921
+8858
+6653
+-7709
+-3505
+-8232
+7386
+-3800
+-4651
+1250
+3994
+-8113
+-7305
+-555
+-1855
+9950
+-9134
+7100
+-3507
+7141
+-8942
+-9875
+6638
+8332
+6918
+-8897
+2181
+8720
+-7478
+1640
+-8289
+-3587
+-2410
+-4189
+6492
+9605
+6395
+-3285
+9895
+-7821
+3579
+7100
+3037
+-4086
+6551
+-9049
+9180
+-1954
+2760
+686
+5140
+-8321
+-7936
+2803
+8303
+8041
+4117
+-1601
+-6762
+-5710
+3673
+-9858
+-8533
+-7165
+-9416
+-7821
+-6620
+4555
+3692
+-6007
+-7111
+8742
+-2964
+7308
+270
+9861
+-9547
+7978
+5003
+-6129
+4940
+9932
+1374
+6224
+4660
+1629
+9740
+4964
+-3658
+-2678
+2648
+9089
+-3515
+-9561
+-8584
+6168
+3877
+6949
+4948
+-1715
+1247
+1762
+9195
+4697
+5268
+5982
+3832
+3728
+-7825
+-5678
+8480
+-4171
+-3189
+5104
+-8162
+-7854
+2978
+-1806
+2421
+-5355
+-4227
+1089
+-9974
+5745
+7149
+-3444
+4326
+6843
+-6238
+5677
+7886
+-4929
+-7305
+8529
+-8112
+1038
+1992
+6077
+6048
+-9316
+5180
+-3445
+1643
+-1536
+745
+1830
+-7564
+4059
+4873
+-8667
+-6984
+541
+9160
+-8274
+6883
+-964
+-7065
+-7589
+-5087
+4257
+6278
+4787
+3266
+-8085
+-5673
+7561
+-4636
+204
+-4091
+-6052
+6371
+8547
+9139
+-80
+-8415
+-1338
+-9847
+-8026
+3750
+-3341
+-4643
+4260
+-8829
+-6962
+-5046
+877
+6747
+5634
+-4882
+-2300
+6588
+1326
+-4637
+-8802
+-792
+4806
+-8286
+-8424
+-4463
+9892
+4627
+6095
+-6265
+-3445
+522
+9046
+6653
+-4037
+-760
+-9897
+-5927
+-5577
+-7324
+-7877
+-2427
+789
+-6049
+2574
+-9450
+9988
+1401
+9648
+-8333
+6067
+-1533
+-4696
+1558
+-5730
+-2722
+9406
+8446
+-3471
+8067
+6034
+-6503
+-1718
+1139
+-6070
+7904
+-3592
+-4623
+-7674
+-6414
+-2090
+9588
+-4704
+7840
+5495
+6936
+4135
+155
+-6130
+-6748
+968
+8603
+-1401
+-4430
+5698
+-7016
+-6583
+-9783
+996
+-8037
+-3299
+6297
+-5236
+-6910
+-3542
+7253
+-9362
+88
+4546
+-1853
+852
+5232
+7324
+2260
+3396
+3334
+4605
+2027
+-7200
+-3634
+-9453
+7419
+-5717
+1247
+-8865
+8873
+-6325
+-8409
+2509
+7261
+7091
+9269
+1238
+-5564
+7328
+4153
+3041
+-740
+-3522
+-884
+-3861
+-8535
+-2326
+-9337
+1327
+-600
+8217
+-3294
+5397
+-9290
+-8794
+-8802
+-379
+8592
+-7147
+8628
+5796
+-9987
+8724
+-7023
+-4133
+6506
+8107
+-2534
+-916
+5660
+6791
+-6200
+-897
+-3213
+-7754
+4013
+-8162
+1990
+-3349
+-8427
+-4362
+-1550
+-6769
+568
+-284
+5421
+4634
+-1878
+-3213
+-7894
+-801
+254
+-8291
+7441
+-4403
+8190
+757
+1073
+5796
+-1560
+7828
+4038
+8094
+-3334
+4638
+-1542
+4390
+9000
+-2125
+5205
+8685
+-5071
+-509
+-7778
+1301
+5899
+-8402
+1944
+7528
+3721
+-6359
+-9684
+5878
+6666
+-4973
+2092
+-6214
+950
+-4896
+-7011
+1392
+-4590
+-3052
+2764
+4119
+-7171
+1274
+4244
+428
+1937
+9870
+765
+-9471
+-2920
+9472
+-1586
+5651
+9901
+6680
+-3881
+-5927
+-8818
+-4298
+828
+9778
+-6960
+-6723
+408
+4394
+-4034
+1997
+9648
+7368
+9269
+8899
+8033
+-7863
+-2135
+-3745
+1750
+5027
+-2566
+2100
+9553
+-3428
+-8256
+9083
+-1828
+119
+9316
+-530
+7038
+-6296
+-5170
+1601
+7663
+-4714
+3958
+-366
+-6436
+5496
+-9876
+-5249
+-4529
+-1426
+-7067
+-8351
+-7614
+7827
+-2418
+2769
+-6561
+-3572
+-5442
+-5345
+7230
+1110
+-6873
+2624
+5385
+3926
+9409
+4171
+9279
+-64
+-7931
+2402
+9724
+2573
+-5181
+4218
+-4056
+3666
+7425
+3581
+-7100
+-3189
+5447
+-610
+-2269
+-9572
+322
+-7833
+-6366
+7539
+3142
+-7838
+-4628
+-2228
+-6271
+9601
+-6252
+79
+-4066
+-4388
+-739
+-1448
+-8759
+-5946
+7590
+8844
+3653
+-5268
+-2566
+-672
+-7268
+-9408
+-4996
+-7110
+-8158
+-853
+5641
+2299
+3
+544
+2120
+543
+-2397
+-5748
+-5254
+-2211
+9110
+1686
+-2111
+5205
+-6580
+8083
+7906
+2365
+-2297
+2134
+7324
+-3706
+4376
+-5752
+-6498
+-9322
+4887
+8164
+8348
+-4691
+3549
+-3083
+-6128
+-5703
+4540
+-6273
+-1076
+-4927
+4908
+7787
+7225
+-8602
+-3167
+-3220
+-6579
+8631
+-2463
+2620
+6177
+369
+9830
+2139
+4445
+2973
+-5818
+-4127
+-8541
+-3781
+6924
+9278
+-2109
+-5737
+698
+184
+7041
+5247
+-3049
+6117
+9714
+2648
+6027
+9890
+1070
+1068
+8148
+-256
+-3889
+3733
+1652
+7137
+5602
+-8723
+3831
+-2151
+-6028
+-6242
+-9905
+2703
+2985
+3189
+-8471
+-6168
+5122
+-5669
+4545
+-3790
+1076
+-8349
+9951
+776
+-3840
+9725
+-2804
+4288
+3835
+4766
+3559
+6312
+5495
+-2613
+653
+2169
+-3457
+1408
+9153
+-5834
+-2300
+2432
+8787
+-3706
+-8562
+1081
+9052
+248
+-872
+448
+5214
+5665
+-4687
+-1383
+6129
+777
+-6845
+5929
+289
+-9129
+1115
+-9581
+8029
+-5513
+-8522
+6899
+2138
+-3138
+-8193
+7253
+1890
+-2562
+9338
+-6589
+6271
+1139
+8194
+-6456
+-3889
+812
+1299
+4516
+-8254
+-9873
+-5987
+-6434
+4794
+9579
+9739
+-8368
+-664
+-3538
+-9468
+3673
+6237
+-9922
+-5752
+-4595
+226
+-8402
+-123
+644
+9727
+7704
+1403
+2046
+-1848
+-6962
+-1851
+-2376
+6021
+-6370
+7001
+7080
+3859
+7922
+960
+-5768
+6856
+-5149
+1779
+4799
+1924
+-456
+-1850
+-8392
+4943
+7819
+3938
+8361
+-8986
+-1408
+-7574
+2248
+3537
+-9678
+8080
+-1771
+-4461
+8037
+9638
+8508
+2189
+2715
+5171
+798
+5913
+-1909
+4050
+1990
+4040
+7313
+8658
+-571
+9434
+-4610
+-4212
+-8918
+79
+-1616
+-1082
+-5067
+-2914
+4626
+5970
+9990
+6256
+6061
+-6842
+-2433
+-2171
+-3496
+-6129
+8156
+6330
+6368
+-2371
+-6241
+-7507
+6320
+-3226
+8922
+3185
+7502
+6829
+-63
+4444
+-3857
+-1942
+5016
+9526
+1917
+6816
+-517
+776
+3556
+9352
+-1242
+3639
+-9755
+753
+-4701
+-410
+-2827
+-2996
+-6763
+5109
+4746
+-1520
+9596
+5466
+9888
+4209
+7476
+-9652
+53
+-2751
+2641
+8121
+-6732
+7141
+5340
+4310
+3121
+8143
+4714
+-4177
+-7549
+-1394
+-891
+-9011
+3108
+-399
+-6369
+-9370
+-8454
+739
+7485
+7263
+3026
+9444
+-9789
+5387
+-844
+-3537
+1303
+308
+1234
+-4027
+-9743
+-9858
+164
+-9028
+7917
+3579
+-282
+-5880
+-7891
+1947
+5831
+1139
+1834
+-5357
+1038
+8268
+3764
+-7846
+-6854
+-9441
+4394
+-5071
+-7008
+-8952
+2742
+-6214
+-9589
+3609
+-6568
+-5508
+8403
+-5184
+2231
+-7569
+-8613
+-7902
+-6404
+-1131
+5118
+3236
+6209
+-7633
+-7240
+5093
+1509
+9165
+2464
+8083
+2685
+-6963
+6492
+-1148
+9409
+1069
+6040
+-963
+9406
+8468
+-4638
+-1497
+-2867
+7892
+-6989
+3016
+2450
+-8108
+6993
+-8297
+6052
+9086
+-2721
+-1815
+1171
+9672
+-6370
+3189
+-248
+3378
+-2350
+-1553
+-9116
+-9166
+254
+4417
+-973
+-3805
+-4867
+1846
+-5427
+6961
+8520
+3116
+6241
+-3231
+2592
+-446
+6048
+-1277
diff --git a/AoC2022/20/solver.lisp b/AoC2022/20/solver.lisp
new file mode 100644
index 0000000..f341a43
--- /dev/null
+++ b/AoC2022/20/solver.lisp
@@ -0,0 +1,70 @@
+(ql:quickload '(fiveam uiop))
+
+(defparameter *msg* #(1 2 -3 3 -2 0 4))
+
+(defun directional-pointers (size)
+ (let ((forward (make-array size))
+ (reverse (make-array size)))
+ (dotimes (i size)
+ (setf (svref forward i) (mod (1+ i) size)
+ (svref reverse i) (mod (1- i) size)))
+ (values forward reverse)))
+
+(defun follow-pointer (pointer index count)
+ (if (zerop count)
+ index
+ (follow-pointer pointer (svref pointer index) (1- count))))
+
+(defun move! (forward reverse element-idx shift)
+ "FORWARD is the leading array, not necessarily forward movement"
+ (let ((next-element (svref forward element-idx))
+ (prev-element (svref reverse element-idx)))
+ ;; remove element from sequence
+ (setf (svref reverse next-element) prev-element)
+ (setf (svref forward prev-element) next-element))
+ (let* ((amount (1+ (mod (1- shift) (1- (length forward)))))
+ (target-index (follow-pointer forward element-idx amount)))
+ (psetf (svref reverse element-idx) target-index
+ (svref reverse (svref forward target-index)) element-idx
+ (svref forward element-idx) (svref forward target-index)
+ (svref forward target-index) element-idx))
+ (values forward reverse))
+
+(defun shuffle! (forward reverse element-idx shift)
+ (cond
+ ((zerop shift))
+ ((plusp shift)
+ (move! forward reverse element-idx shift))
+ ((move! reverse forward element-idx (abs shift))))
+ (values forward reverse))
+
+(defun shuffle-pointers (msg)
+ (multiple-value-bind (forward reverse) (directional-pointers (length msg))
+ (dotimes (element-idx (length msg))
+ ;; (format t "st: ~a f: ~a r: ~a~%" (ordered-series msg forward) forward reverse)
+ (shuffle! forward reverse element-idx (svref msg element-idx)))
+ ;; (format t "st: ~a f: ~a r: ~a~%" (ordered-series msg forward) forward reverse)
+ (values forward reverse)))
+
+(defun ordered-series (msg forward)
+ (let* ((len (length msg))
+ (series (make-array len)))
+ (do ((i (position 0 msg) (svref forward i))
+ (count 0 (1+ count)))
+ ((<= len count) series)
+ (setf (svref series count)
+ (svref msg i)))))
+
+(defun solver (message)
+ (let ((new-array
+ (ordered-series message (shuffle-pointers message))))
+ (+
+ (svref new-array (mod 1000 (length new-array)))
+ (svref new-array (mod 2000 (length new-array)))
+ (svref new-array (mod 3000 (length new-array))))))
+
+
+(fiveam:test solutions
+ (fiveam:is (= 3 (solver *msg*)))
+ (fiveam:is (= 7225 (solver
+ (map 'vector #'parse-integer (uiop:read-file-lines "input"))))))