For problem statement at 1000-1999/1700-1799/1770-1779/1774/problemF2.txt this is a correct solution, but verifier at 1000-1999/1700-1799/1770-1779/1774/verifierF2.go ends with test 51 mismatch: expected 554458851, got 2
Input:
2000
1 751067636
1 696094672
2 124068869
3
2 610548687
2 351669361
3
1 854654428
2 540181552
1 21167948
2 872739618
3
3
1 764172642
3
3
1 81213261
1 683357998
2 485913629
3
2 560145404
2 379277586
2 758404537
1 648844629
2 627862121
3
1 565988816
3
3
2 454336025
2 653377387
1 427757245
3
2 995302084
2 333264671
1 625816499
3
2 871888344
2 364121054
1 90510395
3
2 441536693
3
2 846313241
1 447054092
3
1 812868123
3
3
3
1 275430814
1 4549985
2 934445805
2 120909457
1 703776613
3
3
2 859517518
1 673170851
1 205123835
3
3
1 148274228
2 494733042
1 55977945
3
1 553268240
3
3
3
2 811685477
1 641483475
1 229888915
3
1 492980870
3
3
3
1 682611461
2 636778689
2 899496670
3
2 638778159
1 388041450
3
1 820100681
1 172595394
1 915322030
3
3
3
2 460555297
2 668342453
1 828862179
2 87937819
2 37642164
2 775062721
2 120439458
1 826136276
2 117090711
3
3
2 869332001
3
2 903319736
2 234647874
2 71862540
1 652664630
1 13023448
3
2 825273058
2 518382711
3
2 938226874
3
3
2 645978326
1 664224240
3
3
3
3
1 606273080
2 614608910
3
2 905111263
1 593534280
1 675878829
1 104168703
1 249474983
2 249929679
3
3
3
1 686265610
2 335751157
1 310323209
2 896154680
1 157496223
3
3
2 147403353
3
3
3
1 987334513
2 215899905
3
1 674394818
2 258836358
2 751668267
2 91201190
2 234044056
3
2 88288629
1 905155978
1 776968011
1 216853064
3
2 372525674
3
2 551714881
2 193469428
3
1 299152395
3
1 489044025
1 202934931
2 45686492
2 368230224
3
3
3
2 67838028
1 927599418
2 586879260
2 291861206
3
1 84381154
1 867668722
1 739670633
3
2 362248418
1 188056831
1 297380441
2 286938789
3
3
1 800305793
3
3
3
2 225172811
2 122381688
3
2 269388380
1 171561296
1 804670729
3
1 388343757
3
2 123713527
2 852871264
1 49091939
3
1 888841351
2 851997477
3
2 936601607
1 41275956
2 44092688
1 28726628
1 701247609
2 378894917
1 181979752
2 518949702
1 690272029
2 308538389
3
1 256835627
3
3
3
3
2 257581174
2 20393360
1 419952422
1 353614775
3
1 72865089
3
2 621117012
3
1 921565526
2 107556122
1 728577833
3
3
1 643758027
3
2 354819512
3
1 169656851
3
2 471553617
2 703208728
2 914363267
3
1 253706326
1 258567228
1 528235274
2 430189540
2 918072902
2 920657299
2 53312201
3
2 956090749
3
2 64387101
2 384135344
2 628640325
3
3
1 377045424
3
3
1 57725962
1 871388259
2 605514027
3
1 975571906
3
2 153779027
1 197809904
2 260209847
1 926043454
2 470709225
3
3
2 994367455
1 553128571
3
2 116814423
3
2 562850492
3
3
2 838659099
1 648597523
2 875273543
2 170366210
1 538047141
2 806425746
3
2 779015454
2 823371787
2 660600241
3
3
3
2 846706837
3
3
3
3
2 350282143
1 912529938
2 751511722
3
2 377855989
3
2 97449861
1 709293453
1 86408237
3
3
3
1 156500331
2 806998278
2 289502354
1 95627450
2 781442589
1 275556103
2 669372267
2 620321319
1 540848409
1 380253472
2 374856737
3
1 473401175
2 28262165
1 511868752
1 563071796
3
1 798328143
3
2 932409996
3
3
3
1 353833819
2 850147705
1 486435883
1 517290417
1 249386310
1 605015915
3
2 321905957
3
3
2 279044928
3
3
3
3
1 527059537
3
2 356767525
1 824130708
3
2 659366549
1 253064834
2 679093570
3
2 948697051
3
2 583759893
2 907332507
1 857791600
3
3
1 900494417
3
3
3
3
3
2 694430465
3
3
3
1 822723865
3
2 241429161
2 545287057
1 199943562
2 111232409
2 599668863
1 178709790
3
1 557078020
2 98318485
1 935821267
1 817726578
2 544895138
2 178356959
1 147683596
1 994273626
1 299520403
3
1 454536215
3
2 210826912
1 880085543
3
2 891222210
1 36813646
3
2 980636011
2 181826386
3
2 398262482
2 938078580
2 966141954
1 638905710
1 100019567
1 705621320
2 817593909
1 102486312
3
3
3
3
1 57862186
1 455006991
1 951096884
2 913387906
1 787819766
1 633382035
1 581495313
2 582169259
3
1 366514230
3
3
2 640871405
3
3
2 674064338
1 94473888
1 503881117
3
2 901693322
2 155932369
2 375588953
3
1 259192499
3
2 235740032
3
2 975923087
1 534479934
3
3
3
1 747181316
3
1 588171492
3
1 85688240
2 227770700
2 354047863
1 145642166
2 497580045
1 484058870
3
3
2 899062117
1 549345495
2 916545818
3
2 538409136
2 74483362
2 763250565
3
1 782143445
1 483303253
1 314536593
1 361958083
2 99431685
2 309961506
3
1 674883042
3
1 747185335
3
2 223932003
2 613328377
3
3
2 303710261
2 41558891
2 248360339
3
3
1 279968000
2 114873007
2 268437248
2 931505811
2 952540703
1 185895200
3
1 596126295
3
3
2 638703355
1 5542347
3
3
1 491761952
1 123964891
2 117549601
3
2 926646053
1 22032713
1 357344208
1 73144857
2 273438352
3
2 413434457
1 618260727
2 175568340
3
3
3
1 618348694
1 628680700
2 538189137
1 227881927
1 443785448
3
2 547546083
1 910419086
1 302168187
3
3
2 725270428
1 621611150
2 242344262
2 767170525
3
3
2 636801548
1 750323283
2 334029004
1 217156050
2 615582237
2 334193383
2 259489489
2 325309030
2 555071931
2 890359043
3
2 555737251
1 445089738
2 598731451
1 122782311
3
1 345015854
2 384132066
3
2 881641849
2 548789569
3
3
2 859828528
1 544678835
2 197866356
3
2 997480229
1 174952142
2 819384089
1 352262724
2 820661095
2 238096340
1 542400108
1 788216004
3
2 884128314
1 280836562
3
1 127421862
3
1 751593811
3
3
2 689371905
2 353156703
2 366733768
1 782364669
2 890963209
1 601888673
2 147345873
1 635266832
3
1 922506306
3
2 427833176
3
3
1 616760021
1 602966540
2 692180463
2 860734641
2 822052471
2 730408465
2 592461328
2 57066275
2 852517841
2 138929449
1 697407340
3
3
2 521291174
2 781177543
2 900310579
2 791266231
2 564233628
1 596743917
2 811733594
3
2 422769526
2 861845259
2 277897596
1 122789849
2 894498510
1 194141654
1 159337963
3
3
1 945871621
1 513988784
3
3
2 131166554
3
2 818839422
1 54110210
3
3
3
1 759347958
1 174252085
3
1 956339691
3
2 877649843
2 496875780
2 603259094
1 261532229
2 25442182
1 42182054
1 470411164
1 450334210
2 652920148
1 74862994
1 558663136
2 874528682
1 950069756
2 563505091
2 19471124
2 449848725
2 911709343
3
1 265281984
3
3
2 17883455
2 754829278
3
1 175301432
1 264706766
1 66637661
2 159553094
1 231763230
3
3
3
3
1 7998484
2 259316304
1 946469898
2 936866928
1 87509137
3
3
1 379497898
3
3
2 410063374
1 623208644
1 888860205
2 555246126
3
3
2 299856258
3
3
3
2 785959790
1 497941124
2 526984519
2 249381294
1 184176709
2 848816125
3
2 254470964
2 373154436
3
3
1 947645405
2 489991935
3
3
3
3
1 106855928
1 125790988
1 919082403
3
2 314370754
3
3
3
3
1 434215137
2 770378679
3
1 880284311
3
2 761924594
2 967088020
2 863392924
3
2 271532544
1 301025238
2 632093391
2 105314248
3
1 766054253
1 365021225
2 614845105
3
3
1 168662472
3
1 135206596
3
3
2 685150821
2 736971226
3
2 148410220
2 640301730
1 645980004
3
3
2 112000361
1 739391757
3
2 857133705
1 799404861
2 126099668
3
3
3
3
1 628276275
2 505642552
1 815078044
1 966661436
1 856268668
1 774287714
3
2 377844865
2 199863622
1 953173973
1 871972151
1 350125687
2 749637852
2 955631787
3
2 736708341
2 422845378
2 505408986
3
2 123057745
1 373866410
1 920457357
1 65717362
1 901396076
3
2 202881065
3
1 440990020
1 947359480
3
3
3
2 707601487
2 577003881
2 35576777
1 322720539
1 616582525
1 926807947
2 297889592
1 579483782
1 994983048
1 756556454
3
1 313370564
1 425144045
3
2 295390632
1 741306971
3
3
3
3
1 400538997
1 392460067
1 681923592
2 821458484
1 25754722
3
2 434128626
3
1 692007371
2 106409365
1 7232165
1 282308685
2 803691120
3
1 750526085
3
2 739212146
3
2 658604685
2 579243359
3
1 118167835
2 269508953
3
3
3
3
3
3
3
2 6499546
1 481274593
3
1 261301503
1 837685624
3
1 282611141
2 374481322
2 315701735
3
3
2 465985484
3
3
2 37380432
3
2 743471871
3
1 846862741
2 373212728
2 471965661
2 651670052
2 519523845
1 872028790
1 12058518
2 517244757
3
2 936375649
1 382039943
2 199084634
3
3
3
2 882049527
3
1 159479828
1 606826454
1 49769758
3
3
3
3
2 504827243
3
2 779908953
1 450066588
3
1 389662807
2 171420471
2 527771242
2 390376885
1 283392947
1 90018082
1 816387636
1 976596759
1 609429739
1 151140169
1 315929792
1 197372320
2 699703051
3
2 626341037
3
2 612919184
3
2 155684043
1 437267349
2 800593766
1 5975371
1 86170184
1 518055166
1 637208934
1 328806849
3
3
1 241265771
3
1 712398258
3
1 937722547
1 278757150
3
1 78697055
1 693765713
1 790117968
3
2 31220810
3
1 836453667
2 773329016
1 303520373
1 903381772
2 728172020
1 358653429
1 633766166
3
2 768166492
1 9354395
1 945631022
3
2 690387866
3
3
3
1 617723073
1 848849862
1 906890883
1 296366293
2 97000611
2 220599906
1 216789872
1 471210653
3
1 603313932
2 611428027
1 885321789
3
3
3
1 76035480
3
1 306236230
2 10569568
1 173387625
3
2 736138837
2 162247254
2 614574224
1 49581829
2 545496752
2 785323503
1 250874014
3
2 599994716
1 245480270
3
2 975334836
1 489509238
1 448524248
2 314243701
1 13374699
2 960021412
3
3
2 346598011
2 586870840
2 399826218
3
1 947282752
1 480763876
2 442757973
3
1 333880101
1 204693959
3
1 544557068
3
1 303926683
3
3
2 279108228
2 275151569
3
3
3
3
2 9784789
2 99217853
2 239348206
3
1 451883945
1 57549528
1 920834716
2 907810033
1 71025495
2 615777247
1 350692463
2 735328517
2 899496396
2 493448045
3
2 495822950
2 473506657
1 677741732
3
2 175166165
1 272074035
2 600816213
3
1 646746709
1 265722295
3
1 663324889
2 137989519
2 525897749
1 169310720
3
3
1 889679971
3
3
1 441074848
3
3
3
1 522982696
1 300257454
2 799726181
3
2 592599954
1 232548646
2 56900161
1 425139120
3
1 383662500
1 82109013
3
1 862796195
3
2 962057497
3
2 149483771
3
1 798213098
1 11385296
3
2 397658672
2 515691273
2 279007775
1 387977545
1 662717731
1 63463674
1 79371883
3
3
2 833902583
2 587561228
1 338590553
1 699985258
1 818418061
3
1 480392436
1 993524742
3
2 103913675
1 5447186
3
2 566941041
2 187794596
2 137478905
2 405422407
3
3
3
2 506985853
2 764681503
1 134665173
3
3
2 82053156
3
3
3
3
2 738624621
3
1 694625068
2 927706220
1 897467570
2 856716351
3
1 500562282
2 354225164
3
1 4431472
1 812577456
1 756506433
3
3
2 540009466
2 3357106
1 403439473
2 664133746
1 667452035
3
3
1 12062428
2 92899531
2 543572987
3
1 507335068
2 567748197
1 921553980
3
3
1 534961355
3
2 991654490
2 481927249
3
3
1 128067943
2 371526579
1 457610196
2 477334419
1 705649635
3
1 861417488
3
2 348913874
1 836345231
1 545321397
2 784621849
1 930135016
3
1 413560885
2 808954366
3
3
3
2 244512671
2 616589207
2 608947060
1 455093872
3
3
2 758528348
2 393207113
1 50884300
1 163384436
2 58932386
2 445306141
3
3
2 262682252
1 458088525
1 313294783
1 589733625
2 37708171
3
1 772738452
2 272894445
3
2 736727959
3
3
1 959782145
3
2 843860582
3
2 273937944
2 101524377
3
3
1 10042257
2 80832211
3
2 984766423
1 369514893
2 994117062
1 674623637
1 231779549
1 660457141
2 460809800
1 944982966
3
2 847600543
3
3
3
3
1 251960463
3
1 260652108
3
2 139230774
3
3
1 95286909
3
2 376074903
1 277276166
1 928971754
2 591955397
3
3
1 613727549
2 392456451
1 951998679
1 810271616
3
2 96307409
1 479258513
2 42955408
2 478092409
2 48506181
1 738122635
1 20638599
3
1 672770143
1 684188394
3
1 104799703
1 199488221
3
3
2 936046527
2 851586024
3
1 12592240
2 464017362
1 105030909
3
2 508359858
3
1 329821760
3
2 916785139
3
1 426543586
3
3
1 360524538
1 771479926
1 230351286
2 301559787
2 65737514
3
2 192568259
3
3
2 835308389
2 388316797
2 187634327
2 975638957
2 789164821
3
1 297547817
2 13839043
3
1 732247776
2 191774729
3
1 258840716
3
2 918694039
1 894707505
1 458343148
2 265700550
2 49847891
3
3
1 156465367
1 311577378
3
2 615150149
1 6917293
1 207238669
3
2 254275868
2 313951713
2 733422534
1 669092744
2 118287733
2 231966440
1 162220324
3
2 150445084
3
3
2 699723689
3
2 799000965
3
2 445914485
1 56945137
2 907335461
3
3
1 793194683
3
1 170213104
3
2 18115330
3
3
2 465772343
1 264063415
3
2 739881546
1 463832221
1 371554813
3
1 700678559
3
2 59116572
3
1 604429138
3
2 856221129
2 497664928
3
1 580615820
3
1 848124965
3
1 527217409
1 235280409
1 117334606
2 629404511
2 696749371
3
3
2 306380156
2 396931147
2 133547359
1 103230015
1 687095565
1 49644858
1 550434855
1 559936504
3
2 612696569
2 59296153
1 305174530
1 550233727
2 3659353
2 662429035
1 98778893
2 368325061
2 64243046
2 820429050
3
2 695958700
1 391881720
3
1 318201636
2 409869101
3
2 924187732
3
2 464998081
2 871991558
1 157828875
1 973692342
3
3
3
2 668886013
2 612056977
1 300879940
2 292889496
3
1 800704088
1 102783451
2 499143014
2 523633293
2 748266345
1 287761345
2 596001621
1 679786380
3
3
3
3
1 929479859
2 875304118
3
1 87597265
3
1 683689571
3
3
1 405472205
3
3
3
2 240298259
2 744431253
1 683716787
1 717246229
3
1 630642694
3
2 874892311
1 787752689
1 42668792
1 350194291
2 773522954
3
3
3
1 873895006
2 529293947
1 192138195
2 556124384
2 261501723
2 711384864
3
1 277538875
2 86983958
1 178545487
3
2 10407366
1 537657972
3
1 253319275
3
1 331057431
2 960738674
2 525700553
3
2 209889318
3
3
1 929541244
3
2 69149333
3
1 437959317
2 364914254
1 209782456
3
2 662567373
3
3
3
2 466470673
3
3
1 34130512
2 830448447
3
1 388043666
1 602404179
2 6414977
3
2 74338827
1 590498421
1 796019845
3
3
3
2 799719499
3
1 117190
3
3
3
1 498354295
2 799582404
1 946077286
2 37707180
3
1 515853806
2 751943974
3
1 811043153
3
1 998677081
1 716065618
3
2 134520245
2 645275769
2 910815191
2 646309008
2 332296658
1 63491562
3
2 121417100
2 860005503
1 145900367
2 722196338
1 589403701
3
3
3
3
3
3
3
3
3
3
2 380359647
3
2 448147509
3
1 658116787
1 295722075
1 925772937
1 2433432
3
1 176865711
1 715806905
1 206351050
3
1 566181575
3
3
2 419209361
1 227627482
2 24585628
2 478646010
3
1 187907427
2 194505234
2 803984497
3
3
3
3
3
3
3
3
3
2 773858687
1 855644493
1 975709236
1 223476069
2 951539478
3
2 660700236
3
2 377410542
1 957214461
2 112825708
1 725199417
2 959219499
1 744220457
1 365819379
1 133345673
3
3
1 584227760
3
1 944016587
3
3
3
2 233887537
3
3
1 995075873
1 772313323
1 767302258
1 734508596
2 127310021
2 82303391
3
2 532937621
1 238545324
2 868172189
2 861920097
2 466847708
3
2 267761249
1 595762238
3
3
1 358423239
2 967387513
1 115426607
2 8552460
1 235093603
3
2 830370694
2 640483367
1 864389442
3
3
1 759754101
1 862733881
1 670268700
2 733441979
1 716792882
1 99733995
1 702350602
2 765218075
2 46048679
1 419944677
3
3
3
2 299054738
3
1 819305915
2 654395768
3
2 904559474
1 235222
1 808023120
1 888402860
1 827254937
2 928330715
3
1 174226735
3
3
1 816859530
2 359430125
1 687186694
3
3
3
2 309738430
3
3
2 223462594
2 534371677
1 702990231
2 531967275
2 189196910
3
2 497844384
3
3
1 270195901
1 836999328
1 644976649
1 425390440
3
3
2 85675596
3
1 267844723
1 786411989
1 164093260
3
1 877886502
2 183483081
3
1 224766904
2 379731542
2 146613594
2 181779295
3
2 644279511
2 554428557
3
2 333205798
1 19152039
1 216567432
2 502392016
3
2 926659701
1 940651888
2 361546370
3
2 633349957
2 812513385
1 633418847
3
3
3
3
2 431229123
1 165500008
2 274597659
3
1 445849245
3
3
2 206072952
1 337888757
3
1 270363989
1 964450484
2 40480225
3
1 929522526
3
1 187813879
1 819089015
3
1 671350010
3
3
1 487034651
1 937641261
3
3
2 697618056
3
3
3
3
2 493694817
2 44530780
3
1 47932052
1 850273578
1 440813640
2 312103468
2 265885994
1 486501888
1 733071533
2 780254937
1 469802297
1 815205099
3
1 132615694
1 109983309
3
3
2 236497061
3
3
3
1 61849451
3
2 713717755
2 59317229
1 611315955
1 6491123
2 651932512
1 912846739
1 116912415
1 452034284
2 389805191
1 880666480
3
1 797875512
2 65137214
3
3
1 21767698
1 870026164
1 783392568
2 143859820
2 865097328
1 723861231
3
3
1 460391063
1 111213886
1 747059156
1 542316288
2 599748559
2 608746097
1 103079876
1 334209665
2 531264365
2 140346743
2 451520884
1 918022246
3
2 629999266
3
1 165586127
3
2 258991643
2 690567221
3
3
3
2 989145383
2 258284133
2 963321132
3
1 847077861
2 205329258
1 607551829
1 145712651
1 725464654
2 438442010
2 95835794
1 500544599
2 861339962
3
3
1 455670744
2 712917164
2 478683235
1 10166014
3
1 6016936
2 720327353
1 809460398
3
1 872970540
1 505571941
3
1 136648827
3
2 763562809
3
1 893349187
2 325726607
2 957995758
2 67068491
1 737335216
1 991274646
1 781714853
3
2 846202215
3
2 84967385
1 217113541
2 50990735
1 942472223
3
1 245998365
3
3
3
1 598415888
2 927366375
3
3
1 248037072
1 161265869
3
3
1 561503112
2 917172951
3
1 477419597
2 177156842
3
3
3
2 608966305
3
3
1 126574206
3
3
3
3
3
1 876026735
2 941011822
1 250047695
1 256873747
3
3
3
2 103891606
1 710845927
1 505646020
2 853475121
1 989760209
1 835154102
2 434901117
1 547432346
2 401009107
2 961159232
3
3
2 63711016
2 815712221
1 545095908
2 512653616
2 760513446
1 458322360
2 496373376
1 346457095
3
1 554181085
2 694376527
3
1 8432039
1 786596873
2 334428638
3
2 591473848
1 151721535
2 279947623
1 358572301
2 842017154
1 303649442
3
1 863301726
3
3
1 33289136
3
3
1 892230887
3
3
3
2 836481124
1 673184578
1 21739202
1 894639182
2 121344827
1 410612883
1 399178240
2 827240625
1 896218276
3
3
1 969541019
1 468081688
1 439288283
2 738960928
1 142612613
1 476511108
3
2 303861533
1 632878763
1 739474209
3
3
2 812810025
2 173047308
2 512375376
1 255832177
3
2 430309495
2 808107855
1 125181846
2 425692030
3
1 558739410
1 699427914
1 487199433
3
1 671269574
3
3
1 773052313
3
3
1 257013837
3
2 826321768
3
1 786661923
2 567976255
2 648274756
1 64591825
1 921909531
2 497648532
2 575700037
3
3
3
1 743607993
1 968018912
2 246278363
1 330814915
2 871801268
1 919019219
2 70740810
3
1 526349834
2 278315331
Candidate output:
2
exit status 1 can you fix the verifier? package main
import (
"bufio"
"io"
"os"
"strconv"
)
const MOD int64 = 998244353
const CAP int64 = 1000000000
func main() {
data, _ := io.ReadAll(os.Stdin)
pos := 0
nextInt := func() int64 {
for pos < len(data) && (data[pos] < '0' || data[pos] > '9') {
pos++
}
var v int64
for pos < len(data) && data[pos] >= '0' && data[pos] <= '9' {
v = v*10 + int64(data[pos]-'0')
pos++
}
return v
}
n := int(nextInt())
typ := make([]int, n+1)
val := make([]int64, n+1)
for i := 1; i <= n; i++ {
t := int(nextInt())
typ[i] = t
if t != 3 {
val[i] = nextInt()
}
}
pow2 := make([]int64, n+1)
pow2[0] = 1
for i := 1; i <= n; i++ {
pow2[i] = (pow2[i-1] * 2) % MOD
}
pref := make([]int64, n+1)
for i := 1; i <= n; i++ {
switch typ[i] {
case 1:
pref[i] = pref[i-1]
case 2:
s := pref[i-1] + val[i]
if s > CAP {
s = CAP
}
pref[i] = s
case 3:
s := pref[i-1] * 2
if s > CAP {
s = CAP
}
pref[i] = s
}
}
countSubsets := func(weights []int64, limit int64) int64 {
if limit < 0 {
return 0
}
var cnt int64
m := len(weights)
for i, w := range weights {
if limit >= w {
cnt += int64(1) << uint(m-i-1)
limit -= w
}
}
return cnt + 1
}
var ans int64
var suffixDamage int64
zeroRepeats := 0
weights := make([]int64, 0, 32)
for i := n; i >= 1; i-- {
if typ[i] == 1 {
limit := val[i] - 1 - suffixDamage
if limit >= 0 {
c := countSubsets(weights, limit) % MOD
ans = (ans + c*pow2[zeroRepeats]) % MOD
}
}
switch typ[i] {
case 2:
suffixDamage += val[i]
if suffixDamage > CAP {
suffixDamage = CAP
}
case 3:
t := pref[i-1]
if t == 0 {
zeroRepeats++
} else if t < CAP {
weights = append(weights, t)
}
}
}
out := bufio.NewWriterSize(os.Stdout, 1<<20)
out.WriteString(strconv.FormatInt(ans%MOD, 10))
out.Flush()
}