commit 7f7981bfbafbea34fdd3d46791dc43cfb6ba73c4
parent d3cff0510e46c60b6d93e0852729ffd359b39e3d
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date: Sun, 22 Dec 2024 08:54:33 +0100
Day 22 2024, but it's slow
Diffstat:
5 files changed, 2593 insertions(+), 0 deletions(-)
diff --git a/2024/22/Makefile b/2024/22/Makefile
@@ -0,0 +1,11 @@
+CC=g++ -std=c++20 -g -Wall
+
+a:
+ ${CC} -o a.out day22a.cpp
+ ./a.out
+
+b:
+ ${CC} -o b.out day22b.cpp
+ ./b.out
+
+.PHONY: a b
diff --git a/2024/22/day22a.cpp b/2024/22/day22a.cpp
@@ -0,0 +1,32 @@
+#include <algorithm>
+#include <cstdint>
+#include <iostream>
+#include <map>
+#include <queue>
+#include <ranges>
+#include <set>
+#include <sstream>
+#include <string>
+#include <string_view>
+#include <vector>
+using namespace std;
+
+int64_t next(int64_t n) {
+ constexpr int64_t M = 16777216;
+ n = ((n*64) ^ n) % M;
+ n = ((n/32) ^ n) % M;
+ n = ((n*2048) ^ n) % M;
+ return n;
+}
+
+int main() {
+ int64_t s;
+ int64_t tot = 0;
+ while (cin >> s) {
+ for (int i = 0; i < 2000; i++)
+ s = next(s);
+ tot += s;
+ }
+ cout << tot << endl;
+ return 0;
+}
diff --git a/2024/22/day22b.cpp b/2024/22/day22b.cpp
@@ -0,0 +1,84 @@
+#include <algorithm>
+#include <cstdint>
+#include <iostream>
+#include <map>
+#include <queue>
+#include <ranges>
+#include <set>
+#include <sstream>
+#include <string>
+#include <string_view>
+#include <vector>
+using namespace std;
+
+class Seq {
+public:
+ int64_t k;
+
+ Seq() : k{0} {}
+
+ Seq(int kk) : k{kk} {}
+
+ Seq(int64_t a, int64_t b, int64_t c, int64_t d)
+ : k{(a+9)+19*((b+9)+19*((c+9)+19*(d+9)))} {}
+
+ Seq(const vector<pair<int, int>>& v, int i)
+ : Seq(v[i-3].second, v[i-2].second, v[i-1].second, v[i].second) {}
+
+ int64_t operator[](int64_t i) const {
+ int64_t d;
+ for (d = k; i > 0; i--)
+ d /= 19;
+ return (d % 19) - 9;
+ }
+
+ bool step() {
+ return (++k) < 19*19*19*19;
+ }
+};
+
+int64_t next(int64_t n) {
+ constexpr int64_t M = 16777216;
+ n = ((n*64) ^ n) % M;
+ n = ((n/32) ^ n) % M;
+ n = ((n*2048) ^ n) % M;
+ return n;
+}
+
+int main() {
+ int64_t s;
+ vector<vector<pair<int, int>>> spc;
+ vector<map<int64_t, int64_t>> tt;
+ set<int64_t> seqs;
+
+ for (int i = 0; cin >> s; i++) {
+ spc.push_back(vector<pair<int, int>>());
+ tt.push_back(map<int64_t, int64_t>());
+
+ for (int j = 0; j < 2000; j++) {
+ int64_t t = next(s);
+ spc[i].push_back({t%10, t%10 - s%10});
+ s = t;
+ if (j >= 3) {
+ auto k = Seq(spc[i], j).k;
+ seqs.insert(k);
+ if (tt[i].count(k) == 0)
+ tt[i][k] = spc[i][j].first;
+ }
+ }
+ }
+
+ Seq seq;
+ int64_t best = 0;
+ for (auto k : seqs) {
+ Seq seq(k);
+ int64_t tot = 0;
+ for (unsigned i = 0; i < spc.size(); i++)
+ tot += tt[i][seq.k];
+ best = max(best, tot);
+ };
+
+ cout << best << endl;
+
+ return 0;
+}
diff --git a/2024/22/input b/2024/22/input
@@ -0,0 +1,2462 @@
+9934779
+2152381
+503629
+16463157
+6604765
+10656550
+14732578
+1521218
+16374827
+10971068
+482403
+5712888
+2066009
+3554443
+12260252
+15389653
+15247095
+8662566
+9761795
+306878
+1733065
+6289511
+7527385
+12802412
+5712214
+1008199
+6571712
+1150493
+6399094
+16132129
+1385556
+1158173
+16065247
+13185959
+10781917
+9511646
+7591752
+3451813
+9242364
+6788303
+12055918
+10107205
+979884
+11530140
+14020629
+2080524
+8588050
+5794072
+2576002
+7518216
+13279182
+11171757
+3766541
+14300642
+11070388
+3670046
+9234733
+3980154
+4778724
+15625744
+14227994
+4479392
+10198377
+15791857
+11383603
+7269652
+8627865
+11955391
+3402887
+3289748
+2746454
+7581049
+11720565
+1095717
+13054616
+7184924
+15511765
+11746265
+13658208
+195201
+6346567
+13736363
+8373839
+2772950
+15633943
+13003922
+2895870
+2251492
+2356169
+11107610
+1880849
+4428810
+16388524
+5773838
+14525926
+4806003
+7319513
+7256174
+14220936
+13812460
+10659259
+14516238
+12419428
+11334296
+600779
+1809280
+10369274
+9082054
+9348164
+8893887
+12321928
+15498305
+3373942
+12949507
+16311891
+13408663
+16026670
+11108278
+5422830
+3686442
+9702061
+12503323
+13841527
+8372518
+15379742
+3065979
+2047835
+13878277
+6894548
+922352
+4263132
+4281282
+10739333
+12817123
+9774576
+10666128
+1517974
+3159095
+7459549
+1078678
+886193
+15004380
+12190750
+3493419
+9847918
+3077389
+12866510
+8993728
+3755589
+2818783
+615215
+11006706
+1996806
+15015972
+8032571
+16218131
+15697910
+15918496
+14493072
+5355503
+7189542
+533650
+12132715
+6860213
+5118950
+4173131
+148117
+8589410
+11562286
+7282768
+2155906
+13901441
+12811122
+4487890
+1021959
+9057216
+6844376
+5416119
+4835418
+5213788
+1624541
+10047895
+15480861
+168031
+14842688
+3852279
+6167672
+11482974
+13160879
+13301007
+12203575
+3093103
+16442344
+15861747
+16384816
+15955739
+3151381
+10792848
+16416765
+352312
+5421499
+6235239
+8063578
+16579266
+1146938
+16194283
+3525685
+12403262
+1151686
+9988044
+15589807
+12098941
+13551582
+5827856
+9442303
+12333890
+5387175
+15325153
+15117366
+1886657
+6145550
+1074268
+8742576
+8735170
+10868330
+15562822
+8783298
+9763830
+548958
+8992953
+1979418
+3461612
+13682643
+9382675
+2316292
+11076130
+13740666
+10874958
+12870756
+13026469
+13335245
+13290722
+4623909
+9093641
+9845616
+10231762
+4702273
+15519141
+4524290
+12774180
+10328426
+6466667
+3769220
+9402439
+1132481
+14034996
+5988174
+1762623
+494804
+14455235
+6827776
+10456375
+7479654
+11042715
+1444885
+11299419
+13326664
+5524041
+283068
+15595557
+4966098
+14095821
+1363233
+6952774
+12412712
+8884360
+15546077
+911202
+1834936
+10008662
+6984236
+6781281
+13463022
+8686414
+6045578
+5062639
+3675986
+1016101
+1093795
+6417661
+8060335
+11587909
+13515525
+12206991
+10454043
+10028585
+5012674
+8367896
+7287315
+7548423
+14619131
+14099913
+10548480
+15495270
+11101107
+8850405
+6224315
+1908204
+10518120
+12788722
+5202644
+3012727
+7141814
+11851016
+6242433
+381803
+14276856
+3313142
+10575914
+4881438
+4929280
+1129464
+10821292
+13346386
+11322402
+6731530
+15428976
+5916118
+2315614
+5820010
+14545525
+12716705
+2010371
+7601907
+3707499
+7189775
+12675146
+11838523
+1178863
+6265438
+15841582
+2428426
+16706018
+10697478
+5759101
+14340034
+5095105
+8346398
+13420644
+4782002
+12199851
+14947797
+1094563
+11719404
+4646069
+14300570
+14659727
+10633308
+9989336
+12474562
+8116295
+6896926
+4790169
+13079325
+11979214
+4636129
+14678345
+4531804
+13643169
+8234816
+15431268
+14959118
+8601594
+1438264
+6190409
+12682857
+12631625
+9897181
+5301542
+12001387
+1339008
+15391319
+6728077
+4912957
+11310219
+13087428
+10464957
+11114620
+1952487
+3617878
+1541947
+14729086
+2821719
+9096477
+2112196
+833934
+12751324
+14875017
+9133379
+662243
+7849601
+15149135
+969920
+15246327
+6326826
+1258167
+16647105
+500222
+3522665
+2214327
+2712833
+10165573
+6668403
+7824933
+15507867
+901779
+15174294
+12185225
+12644158
+15298249
+13114879
+2533514
+9927729
+13419413
+2851960
+15831255
+15461969
+8728159
+14757008
+5297086
+8387638
+10790216
+1333986
+9104406
+8046637
+5193397
+13121670
+10456864
+13024914
+11809698
+6170189
+4703276
+1489014
+12202467
+3756597
+15970193
+10560369
+12506727
+1072536
+11150155
+1983410
+738965
+13004487
+12451328
+7559490
+9441307
+14550857
+5235886
+9226410
+12416416
+12130448
+10136930
+9395432
+275019
+7092993
+11318148
+8945880
+15758153
+2276893
+9875986
+15651794
+8885057
+7412774
+3483393
+16180342
+11805956
+15974125
+4441715
+12255282
+1607337
+6749822
+8738318
+15137299
+10738178
+11916325
+12923356
+15162142
+3178550
+13130930
+14261862
+5479752
+2724436
+221980
+3432591
+12491723
+4463824
+372861
+15690925
+5323623
+13553127
+10266400
+13698272
+10559132
+9196639
+6034302
+6526033
+9889983
+1686077
+16215885
+4248370
+15907401
+13814711
+8050532
+15087541
+12321878
+16720652
+1993934
+4387850
+11869405
+402348
+4914053
+13460107
+9954222
+3098551
+10861931
+8585412
+15386036
+15808495
+9276791
+870847
+11285371
+8889542
+884159
+11716924
+11246927
+10323367
+3250644
+4171254
+9887191
+4185671
+15777258
+6896112
+5310245
+14772068
+13719989
+4902642
+1137124
+3032405
+865060
+6521837
+922933
+16415086
+14729497
+13574113
+3099746
+7270546
+7237643
+3809553
+15024280
+12799741
+16087468
+1424873
+3757094
+11209958
+7228679
+882917
+13874637
+501364
+5745979
+15801337
+9486597
+9627980
+358814
+8111029
+11591411
+5603340
+8374854
+493613
+15320859
+3165680
+11071251
+217867
+6250941
+3530789
+6792419
+12759247
+4555756
+11922559
+12921911
+14655552
+8995403
+5872540
+10550670
+13393992
+14933612
+6694113
+10535354
+14576465
+4016047
+13193821
+16289526
+14594299
+14085714
+13825836
+4507103
+9751963
+9312858
+9679256
+1657710
+10005362
+6695620
+12503341
+3491307
+4615604
+8249381
+9845948
+13724183
+9151181
+2958292
+2859836
+637752
+2423558
+4805943
+8729026
+3689316
+8893651
+8912319
+16299442
+13625646
+8110425
+6655113
+959175
+3609616
+5018786
+6637695
+13260242
+16537886
+4881915
+7708217
+5608589
+8791338
+12269662
+8200597
+2305642
+16312383
+14526902
+10196338
+11654895
+15945537
+3875787
+9097622
+2891249
+15174589
+6235181
+12053277
+9986503
+10471011
+1497926
+281206
+9513350
+1019430
+8296166
+4638241
+3032679
+9663484
+11701255
+7343879
+16189819
+5249313
+4259738
+12457312
+14531356
+4148018
+13248521
+10362792
+9970133
+11656637
+6331137
+10576699
+10447829
+12565473
+2823586
+7703463
+6633090
+6102332
+14410429
+9174479
+3412084
+9652175
+4269074
+6830671
+15063174
+10433459
+2718364
+244399
+15683287
+3118382
+4634653
+2843159
+11429632
+10163554
+12698321
+16136272
+468006
+5972247
+15930613
+8976379
+14257219
+14216972
+4017752
+6163172
+3307114
+9104391
+8865661
+15934572
+10312917
+11159879
+6272557
+9616872
+1836296
+5644814
+5278532
+11173605
+4107171
+7712268
+9841545
+11796243
+6468637
+3397561
+2097700
+2913419
+2999338
+3989350
+13550782
+9020146
+8201295
+949344
+11880695
+15913449
+3311860
+7548328
+13945339
+884445
+1486370
+13605361
+12834121
+7203641
+11727395
+16149231
+6242445
+2707344
+9776461
+975311
+2234738
+6181427
+3675487
+6314344
+5348555
+13635353
+14126648
+876012
+10038796
+16608234
+2440691
+1720607
+2940011
+1914968
+14337287
+16573607
+2765090
+8096936
+10758498
+12491199
+3101781
+12157401
+5618539
+16164259
+8236314
+8291143
+5323328
+15688732
+8730286
+10589490
+13031325
+4181278
+4663980
+16036105
+15884448
+6876897
+12664642
+10892204
+9503916
+14471914
+6001387
+6090340
+3773661
+8540482
+15470080
+2757750
+15899029
+16716210
+10237881
+6066373
+11669262
+6481420
+12419238
+16421903
+12460610
+10140297
+4733597
+11856057
+14017257
+164075
+15193685
+3213369
+10216177
+14884992
+11967327
+1344397
+939380
+14874443
+16421178
+7681820
+8582161
+11972427
+9206113
+9592522
+15998774
+14607785
+16573418
+5245918
+15206950
+11577232
+15926293
+7475100
+3005258
+8346033
+13959598
+8662642
+11559611
+13431563
+15415427
+12297104
+16261394
+10369286
+8577635
+12623822
+11330795
+11012630
+8969034
+6206389
+15479780
+11525135
+6812692
+10217296
+13126041
+1047475
+12066825
+9029262
+11653479
+11756458
+2739718
+14465405
+9245911
+7483574
+6299794
+241883
+10515717
+3985432
+3031645
+1133551
+13455243
+14907954
+9545706
+6826155
+9724974
+1822470
+6628609
+5424531
+11683300
+13066931
+3925605
+6238658
+15205563
+2790922
+13354999
+6579722
+3675297
+16290162
+14509537
+16674235
+16145473
+7138932
+1672916
+1317464
+8488128
+4609564
+14222975
+13741559
+13771931
+4249288
+640123
+2900137
+1219226
+4139837
+5565902
+3369156
+3514237
+9817547
+2652108
+4479068
+16077561
+730358
+795598
+15197888
+12599381
+4979306
+3198328
+14698269
+9850428
+10606878
+2955962
+6365431
+13263174
+8844143
+13991580
+10467142
+10264323
+1004885
+15699972
+16604079
+14058907
+10283338
+7882070
+5168950
+13408135
+9514814
+13047407
+10325351
+13838681
+7627737
+1790467
+2079984
+5064212
+6398575
+13970101
+9082107
+15453031
+8562053
+1887562
+7109807
+16602813
+8849200
+15463842
+13837686
+8109306
+8459411
+4672668
+13982892
+1590742
+11252911
+6410259
+2367873
+3755669
+11193083
+3844205
+14019544
+537661
+3250364
+15023809
+16507892
+4862078
+15506611
+11328689
+5831876
+1393656
+11105970
+617799
+8955524
+4213202
+11764666
+12092900
+3805551
+14362948
+15980191
+1716559
+14998272
+6088487
+2191558
+2500152
+1728569
+16421262
+8205644
+16666707
+4972330
+11988714
+5701360
+11970591
+5692858
+12724086
+14548294
+15672281
+2881176
+16107356
+2717753
+9997530
+9171634
+11948113
+735351
+1952157
+14543269
+6408041
+15726665
+4972340
+8564948
+1656140
+4374908
+2215564
+6622182
+16148787
+8931896
+16210974
+554150
+5955503
+12518210
+6534407
+2474017
+1835668
+6184398
+10177617
+12512816
+11031887
+9768214
+11851861
+11064134
+2000222
+7069700
+4473764
+11371964
+3291067
+7727286
+2359461
+13319008
+10139325
+6201907
+9135173
+13499738
+15093300
+5224336
+5799078
+14805760
+3369572
+10357440
+8707451
+13962091
+13064178
+5383091
+15648516
+294165
+10263536
+16763303
+9316129
+14841324
+9988557
+14035113
+13344714
+10584251
+7781946
+14187198
+14939274
+12120516
+2387923
+13443010
+14095120
+6823918
+7947758
+13352723
+5898992
+13546684
+11952334
+12735220
+9840599
+6209450
+15618607
+4498999
+4243742
+7095425
+9955159
+5710057
+10085265
+2689892
+6448016
+10420183
+8673164
+13604929
+10266991
+16512094
+3600434
+6005105
+7622455
+4349316
+14668161
+5643846
+14544189
+2488422
+13009980
+12601654
+12913010
+8268795
+5378435
+5939761
+13180647
+9079474
+8465842
+10043327
+9863301
+14637777
+3986606
+11955227
+6664493
+3798133
+578142
+13941407
+9473539
+13338845
+3297822
+8731737
+12842935
+584207
+15767892
+9389218
+12518017
+8756029
+15072549
+15991579
+16576438
+10860800
+16614177
+133963
+5373155
+10749008
+12098162
+16277159
+15757527
+1893213
+341903
+9672597
+2366491
+11915136
+1257932
+11601507
+5895712
+9514827
+7602536
+10993659
+7645089
+5162555
+1535899
+8344692
+6427572
+7399600
+16060980
+2942272
+6850670
+438777
+4899563
+15342382
+246812
+9779869
+13171007
+2146025
+1694155
+515750
+4976127
+9690880
+15662347
+16063918
+7715574
+11673593
+1767101
+9670729
+4905285
+11168053
+12284228
+6905818
+14821098
+12398554
+4011609
+9707086
+11157936
+10449703
+3082900
+8045031
+2288763
+16684787
+4916942
+10999372
+1594692
+16639291
+7699580
+16387607
+16482182
+10097137
+3720304
+6399901
+6584808
+11718735
+16602513
+14836515
+15147023
+1032749
+16353172
+4909220
+12538942
+4383708
+4533026
+6665771
+2443590
+2188602
+13316476
+1590829
+2403737
+15380112
+13819945
+8832430
+9596391
+13197587
+2702902
+15408297
+6754769
+15954572
+761373
+6840111
+4995397
+11748835
+3690145
+15604409
+321299
+14402064
+16178084
+8253591
+2723335
+7211487
+10681201
+8264664
+8543068
+10384591
+11911873
+5039613
+2239730
+16635707
+2051975
+3320197
+6081742
+10736026
+5795194
+15158248
+15093684
+3917735
+16336203
+9339071
+7162762
+9307057
+5227916
+6329767
+3249429
+12672091
+3002493
+11000132
+3439930
+8855146
+11098426
+7683805
+15490436
+6415659
+2972449
+4324181
+11830262
+6032746
+3812537
+7292640
+16066662
+2710678
+12986866
+14938226
+5477301
+3726133
+15889742
+12073987
+16032777
+5800540
+15784464
+4377303
+13081323
+9024322
+5783723
+14791780
+14349252
+16724367
+3217223
+11607846
+4639892
+2814053
+13127821
+1223010
+11088140
+1315476
+11978673
+449297
+15201082
+11756461
+190517
+7549523
+5987842
+5889307
+16398076
+959326
+13254213
+9358225
+12840629
+3183248
+6873445
+13132169
+11815216
+16012075
+8959011
+1388183
+16031413
+9664133
+11547973
+7111880
+10906157
+8066498
+7576967
+14841898
+852393
+8229573
+9941871
+3554558
+11455675
+5956579
+7739231
+6312437
+11708936
+16555995
+14244867
+13136171
+12360051
+9497820
+8749755
+2801503
+15631768
+16311521
+13374474
+9462050
+4909898
+2794311
+7979835
+3701890
+15677013
+731776
+13904790
+2944734
+14738707
+1164497
+5514830
+3575102
+15345142
+4917106
+7011387
+10601902
+444600
+16565218
+5334734
+11715771
+1015220
+12517159
+5251686
+8711990
+9553542
+15759748
+10324541
+10705159
+10375493
+1041061
+8926568
+11332026
+4208704
+14677347
+2379334
+12702224
+12886440
+12208959
+4649904
+16500407
+9709922
+1941824
+11962026
+6672060
+8544710
+12312127
+2988576
+1915973
+14576454
+12434621
+14427470
+7091791
+6642807
+6443043
+3903196
+1435447
+5439884
+14251471
+8105871
+227303
+6930677
+9295234
+4434314
+2310013
+8286336
+9540030
+957835
+2454852
+7090256
+382779
+210035
+2749377
+10249427
+1686028
+5802377
+15049110
+1993698
+5330699
+13452128
+12682425
+3492212
+11407387
+3878706
+12695700
+5061208
+13924636
+5844654
+15076397
+9416146
+1812978
+15139768
+6897041
+10534496
+1449651
+3793541
+15343404
+6020175
+12061179
+12298674
+13348303
+10375037
+14771610
+11879313
+9219694
+10595898
+3375898
+15641783
+6880458
+14936850
+866134
+14363704
+10464084
+15501331
+2673139
+9816705
+2854073
+1935667
+8248023
+947887
+265115
+751207
+9614268
+12228785
+10248449
+16647749
+2077349
+16394716
+5540123
+5873946
+7361150
+15306736
+7586767
+2615289
+11860295
+8335481
+1846959
+637013
+6372889
+2125446
+16516003
+3148205
+287967
+15336275
+15886001
+15309820
+2222315
+15564327
+5720316
+11350466
+12985005
+1794344
+9163522
+12733417
+9330288
+11178512
+14995424
+4044532
+14389903
+1806327
+4438568
+2043069
+10533318
+8621104
+15535245
+11776563
+12227090
+3847492
+7686261
+12245652
+2621786
+12640636
+13594102
+16564002
+11075133
+2659372
+9586612
+8986721
+5366963
+14479134
+15305821
+14549679
+9460396
+2257342
+8667997
+1783885
+1448100
+11729847
+13147579
+1053918
+1328147
+4653445
+14766780
+2307793
+4111818
+14055750
+15271221
+11436110
+10124235
+14159267
+194083
+4681702
+9329835
+820734
+179800
+1429382
+6091137
+10096514
+16619402
+1753879
+11113057
+14336923
+7094371
+6395289
+341933
+7675751
+6312605
+9242801
+11044890
+10315386
+1851714
+230688
+8210134
+5276396
+3582918
+9394167
+1490773
+9099027
+3111827
+10059307
+10050396
+4895688
+1495319
+13536136
+13278263
+1665534
+1328737
+4358432
+11931853
+9501120
+10412960
+13321950
+10184395
+8227895
+15624401
+4696612
+4629874
+11773004
+14457637
+8244515
+16006042
+2378450
+15343488
+12762637
+2459677
+10523064
+2120116
+14104359
+11572068
+13194935
+13747409
+7432053
+15530471
+7275345
+10450970
+5571534
+1550689
+4755108
+7338210
+4261875
+1746162
+12435307
+10827686
+9280439
+11605737
+3519266
+16023910
+14087942
+9015493
+11875261
+10901831
+9973359
+15760086
+3223940
+12870942
+4599227
+4707434
+10136578
+4382068
+8539384
+12841596
+3206327
+15073843
+9679790
+11718114
+9945659
+14541796
+13751023
+3770780
+16618494
+9177638
+13018957
+359945
+8253323
+1770886
+6556965
+16291370
+684359
+682391
+2715919
+454542
+4167194
+4118207
+4823532
+15807550
+12493390
+13774230
+5609107
+3557145
+6815198
+5735276
+11091183
+11781645
+15952177
+2323406
+11319354
+16728627
+1478595
+10660245
+11455955
+4356940
+4303527
+2252330
+3770704
+10519060
+13311004
+9616223
+11699839
+12546771
+13551997
+9690700
+16582714
+5048053
+600767
+11682863
+13124421
+2951391
+13818005
+5306488
+582099
+11909112
+11744456
+6713461
+11650248
+10834890
+13342209
+186699
+2605163
+10271561
+5388638
+9841455
+307421
+16101536
+11455350
+16762076
+8080511
+1620376
+6578293
+1181576
+16706875
+1806428
+6130097
+6848923
+7068340
+8384380
+9195504
+10158235
+4062280
+2782783
+1326606
+14380191
+9906215
+6825703
+13924623
+7003357
+11813319
+10766087
+1170161
+14540958
+10492814
+14244413
+16119195
+964120
+3637945
+7121004
+5780779
+16516180
+7423820
+2546230
+9670071
+9095809
+10785084
+12992459
+4018707
+9072775
+12508652
+15357720
+2699460
+14569190
+7398065
+11345467
+8039277
+1993072
+2027561
+10954097
+14847296
+14581084
+1952766
+5806098
+10381281
+8692422
+15081718
+687594
+10781972
+14913422
+7228710
+5776651
+15544345
+7450900
+10191264
+7294796
+3341624
+10139387
+16364312
+13940238
+5874242
+11429559
+3014044
+8094033
+456979
+12810572
+10150902
+9055454
+11300623
+4810263
+12231414
+7552620
+3675028
+11737622
+16639901
+13193618
+15721720
+12332674
+16198151
+1638924
+11680091
+14544683
+5450690
+9027890
+14096338
+14603329
+6251629
+1360012
+5048558
+14327755
+7872619
+11198556
+2878583
+15757366
+12759255
+10061148
+5468002
+13001440
+12785425
+15260739
+6560168
+16195265
+9975476
+13720464
+14416220
+2839443
+10406973
+12268514
+16492750
+5316887
+8749638
+13057112
+8184289
+1632090
+11317464
+2171604
+10201812
+2449373
+7151410
+661148
+16263646
+6845418
+4580893
+13604493
+14659250
+4729134
+2098453
+14993977
+4715725
+12355336
+3533905
+8656490
+8130794
+14520280
+5836578
+3877143
+7080042
+2332090
+11616811
+1193582
+4748438
+740613
+8342880
+767902
+12623592
+16202713
+5480492
+15059963
+2924597
+13267211
+13812623
+11468208
+14335109
+845936
+12916917
+1125236
+168421
+2853795
+7151421
+5357771
+7793395
+12412663
+8991519
+4863260
+1894457
+13909824
+6886433
+8091478
+13934208
+4602068
+13440437
+13166348
+12367436
+2715330
+2319163
+16755933
+8821354
+3286577
+15597507
+6719907
+9143117
+15818816
+3282635
+2876968
+13855557
+9687185
+9679516
+7166787
+1412897
+16337712
+2568883
+2087927
+15630310
+5727530
+12907986
+16506817
+8093518
+12571541
+11927107
+10721885
+9865917
+10604670
+9773175
+567131
+12275936
+13627260
+991740
+1325671
+1353481
+4851763
+1474228
+2850967
+5559654
+5349257
+9443683
+16679720
+6110929
+13509527
+7768177
+6395870
+12327617
+9944772
+1830500
+4114113
+10870801
+8916709
+1190770
+3999550
+12838637
+13498720
+4970835
+7260045
+14553347
+3057839
+1304742
+11520031
+15067749
+15971792
+14300696
+11884792
+7390455
+2755700
+3748337
+11786317
+9925988
+13657793
+6374550
+6801207
+1332378
+11710688
+12997458
+15905596
+13915545
+12408921
+3891152
+9099366
+11521578
+578479
+8273807
+8454097
+9702278
+9344605
+5225701
+11301179
+1971051
+11694251
+13358681
+1344152
+3129399
+3671177
+12146784
+4427477
+16092389
+3650761
+15116052
+10224579
+10177907
+4271567
+2194927
+15883996
+15612729
+3178969
+13488421
+1894340
+869404
+9153208
+10898456
+7194232
+13082904
+5450443
+6713345
+8960238
+9905643
+6376110
+15448801
+3317829
+8413611
+10556423
+655066
+3002344
+10223918
+4613979
+9896456
+8347876
+7110894
+7952070
+15224107
+7055448
+16139954
+10613985
+2146516
+14854455
+10810589
+2484730
+9960169
+16334500
+7998349
+13499695
+8781578
+6067449
+10594278
+206520
+14549180
+11932441
+12775926
+12599325
+10159116
+12667829
+14560901
+5226910
+13534705
+15670884
+5287365
+2862492
+4396729
+3768780
+3228549
+4359731
+11088771
+10494637
+9077472
+9460393
+15695376
+13053600
+12165046
+476355
+12013825
+5985329
+11613483
+8416589
+2265132
+12305532
+9040806
+15431339
+12600732
+14635970
+11381557
+15026003
+5325465
+8236630
+9415474
+2039954
+1414445
+2614519
+4914759
+1897221
+1868953
+9092879
+15643739
+14904719
+8134262
+6728058
+13818889
+4096155
+16101725
+14456127
+12436575
+10772919
+8732028
+1210947
+13825883
+171683
+12754374
+10796602
+13797223
+9295371
+12943916
+1029924
+8376217
+4342554
+1452719
+5544535
+11389133
+766790
+10873137
+6689916
+6704893
+4175467
+12835416
+4238375
+6746964
+15733897
+3404342
+8326770
+2140719
+9223458
+10595574
+11408301
+3820112
+10722903
+5147750
+10434703
+1803474
+9107579
+14122485
+359987
+9432602
+3992044
+3907446
+11542559
+436259
+5366163
+8143101
+15780576
+4923329
+2451546
+4322564
+8939290
+1479255
+15203965
+5755711
+14158753
+11880809
+8295547
+9270168
+14294295
+1953527
+12524518
+13081373
+7561612
+12784195
+1551905
+16382481
+11414277
+6709704
+5861781
+14476718
+10713929
+1783423
+10521742
+12957645
+12117521
+6199176
+5088119
+8640317
+11547572
+720180
+7428519
+6724438
+4689310
+6113564
+13864061
+10803510
+11400762
+12253085
+16202473
+16080608
+6592414
+4458327
+4434943
+10925481
+11740708
+12990116
+12914825
+11130721
+14368296
+4308764
+1108452
+9242065
+9227611
+15095060
+16484054
+12810395
+3653816
+12857064
+3027278
+5848774
+872138
+11507315
+11843900
+6061524
+5847773
+8781968
+13835518
+15891670
+12238842
+16772068
+16095736
+1954959
+8114628
+10519360
+1219637
+734101
+11068674
+7598589
+10237175
+12567578
+5523825
+15129477
+14160460
+13639217
+5411168
+2616318
+11909070
+12016171
+13947402
+16189554
+9109168
+8335639
+1402856
+1598047
+11005016
+15393388
+11013384
+1398439
+8042144
+12837743
+8493905
+11557904
+10585842
+14687279
+10676653
+8176459
+3089727
+1567878
+14903439
+6302559
+12799169
+15433515
+12453796
+13003452
+11985496
+16418466
+11897736
+11892982
+11512345
+5418359
+13749778
+12544019
+14039935
+14577250
+6350402
+1677527
+1234025
+5189279
+1660174
+7701549
+4196044
+2239260
+9697840
+1853116
+1902265
+1162524
+14393027
+6143077
+12206583
+3977820
+11446959
+5286097
+14732074
+10603770
+16543025
+16515755
+10066941
+12987908
+3409744
+13822263
+15112057
+9207793
+14958796
+1024545
+7082784
+3772951
+431124
+14276646
+5195268
+13891786
+6011893
+15428848
+9948273
+15320261
+4173100
+4839994
+7743562
+8514898
+3655308
+15090040
+2373023
+13000893
+11811677
+11724734
+234331
+8942510
+3890316
+5475986
+10509649
+9736016
+15201702
+3052388
+14408260
+5789010
+9695745
+4212745
+16267709
+8134003
+844863
+1241195
+12496357
+12234612
+5883448
+4011506
+9261243
+11256886
+13811857
+1687935
+11128116
+16275002
+1204106
+1684253
+15196181
+10330784
+6759750
+4627289
+11392095
+6180224
+13154445
+3655741
+2113609
+7871650
+6441216
+11835261
+4508898
+6535014
+8283938
+15866616
+12896122
+8632331
+15087075
+11457806
+10347497
+12375703
+11089186
+9527695
+4910549
+7874080
+1185670
+6969101
+2383895
+7090036
+8864277
+6812994
+8183830
+10448344
+10899558
+6803729
+10588964
+13660415
+5559496
+3192613
+14092405
+8396871
+12881785
+12362947
+8525644
+7707604
+1344294
+443529
+4940218
+12101204
+7149054
+7713824
+12725257
+14015216
+10110505
+2191789
+2270117
+4590639
+3523875
+14073312
+5077280
+1355684
+9727801
+3517147
+12419956
+2634914
+2908835
+9943803
+11919984
+13463399
+14828524
+5322151
+15359675
+13243337
+14535407
+15541672
+7039616
+14327791
+4146278
+2708851
+11383376
+1734198
+13598469
+275408
+13133144
+12221256
+5099595
+856039
+9288321
+5566222
+2499472
+8052826
+10973316
+14144317
+6815122
+2340745
+8881495
+3591474
+3153514
+10821690
+7194848
+12691681
+2753567
+2653222
diff --git a/2024/22/test b/2024/22/test
@@ -0,0 +1,4 @@
+1
+2
+3
+2024