0
1
mirror of https://git.sb/baoshuo/OI-codes.git synced 2024-11-27 22:56:27 +00:00
OI-codes/S2OJ/946/946.cpp

231 lines
58 KiB
C++
Raw Normal View History

#include <iostream>
using std::cin;
using std::cout;
const char endl = '\n';
const int N = 105;
const int mod = 1e9 + 7;
// clang-format off
int f[N][N]{
#ifdef ONLINE_JUDGE
{1},
{1, 1},
{2, 2, 2},
{8, 7, 6, 5},
{64, 51, 38, 25, 15},
{1024, 814, 584, 356, 155, 52},
{32768, 27562, 20950, 13674, 6794, 1731, 203},
{2097152, 1881132, 1559050, 1143026, 688940, 285399, 42597, 877},
{268435456, 252352192, 225134416, 183912440, 130448704, 73134373, 25675622, 2389418, 4140},
{719476260, 437453186, 285852834, 198930901, 417447372, 493700668, 936095345, 770727467, 287447420, 21147},
{371842544, 598590656, 444061297, 956708189, 127125386, 834823998, 128227000, 223478915, 929725695, 302765502, 115975},
{766762396, 413139421, 351102112, 112130130, 188617941, 339825372, 543187105, 114675694, 623357729, 261270827, 104995134, 678570},
{329376018, 705367106, 201640714, 352379330, 550132198, 846985547, 818860561, 624544091, 494980544, 959053918, 443889176, 751093169, 4213597},
{124160285, 828328425, 906083967, 147213859, 527558165, 193958029, 794519533, 742501375, 789123747, 444469745, 993581787, 979243161, 593627163, 27644437},
{121047601, 912065930, 1351624, 402906644, 713933492, 50841084, 863660427, 577705270, 887029586, 145474376, 588251882, 706568129, 777275244, 642664828, 190899322},
{243880903, 599607852, 442677191, 436289683, 281113930, 146582434, 584824855, 564630340, 394164220, 378918082, 150572902, 532909740, 763622255, 37460367, 184612284, 382958538},
{489373567, 413411086, 951426968, 887302037, 155903135, 283219023, 620782126, 905791112, 644465700, 989656495, 523232248, 664652865, 948982217, 20783496, 743914774, 684000569, 480142077},
{585862415, 487913812, 590859253, 163506170, 675080686, 265650536, 163485583, 426697524, 541587646, 670844388, 797779476, 563923072, 432598176, 907835837, 738939538, 774082037, 950670428, 864869230},
{157921350, 585213032, 124127002, 444551557, 903311742, 164413448, 386967031, 407995046, 262661729, 344515452, 135908010, 878209413, 368549114, 629205902, 255793356, 578014821, 143082468, 257436696, 76801385},
{134084614, 402761743, 842286714, 498687688, 314252511, 433353429, 874023832, 163451857, 900776051, 750447840, 374976568, 374596374, 409363634, 1428564, 912190395, 954400021, 334527550, 458752164, 941524580, 742164233},
{953612746, 62713484, 886653018, 688345870, 697128468, 646792556, 447421618, 157888096, 21488155, 259486619, 668079888, 781355645, 145564249, 348149153, 451544648, 902288907, 821364589, 27915451, 532351829, 752058720, 157873304},
{431750151, 79333107, 758273946, 860328871, 840463615, 976556515, 146605392, 618220382, 698863882, 145835594, 427902538, 38761432, 701961998, 464958606, 869153221, 553709997, 280018488, 290250685, 77551688, 344667085, 416460692, 812832668},
{686331837, 758771584, 485081276, 510183332, 730280308, 184674456, 873283293, 908734440, 930495524, 921797799, 212061161, 804809207, 51215048, 121939666, 630812700, 361452271, 26060826, 260673621, 368617358, 224024063, 925630581, 990272358, 706900318},
{349105660, 25145415, 494217168, 424339281, 884124084, 178064091, 100120309, 586769841, 537648583, 716807985, 873050578, 284978094, 16767349, 478326338, 360734130, 365771597, 696838864, 978081529, 737982499, 875617822, 24227796, 132241837, 339570145, 546020311},
{511821710, 985509751, 578878282, 683372471, 984664469, 445595417, 511225116, 297223834, 226459528, 50743021, 379480638, 49592809, 80759195, 105089674, 771654463, 22227793, 380679886, 708398028, 50944040, 764421492, 498261079, 315274861, 591041992, 688069697, 173093227},
{322050759, 980010103, 195981374, 266943379, 862920298, 642981702, 565788131, 461650931, 496112002, 294720715, 83658304, 655891864, 436544737, 505904269, 704369108, 690578043, 984206794, 499813591, 893187636, 280796490, 263963693, 225773893, 329099972, 884281955, 830106734, 759867260},
{217770278, 196781219, 890030133, 37157328, 506726851, 398596965, 659090154, 164461980, 171196138, 432900123, 414177648, 969005208, 772702391, 49944042, 455929710, 137419373, 943545017, 914493864, 182760987, 365740932, 575380536, 268772977, 476434619, 384262114, 433073632, 612700665, 200033042},
{867243987, 419317505, 924705238, 470690638, 785733630, 636069944, 47184988, 429517972, 327113655, 171088007, 730658644, 759695884, 877945767, 126877050, 375168331, 29949383, 354344303, 715402345, 643780779, 235404899, 96456467, 947306130, 165323631, 839427048, 757122949, 315330535, 577080497, 40680577},
{742004924, 254372018, 291387829, 267349513, 54024762, 671245107, 613585423, 508809588, 231811039, 104767602, 167910887, 114090978, 909920550, 592620873, 356390422, 542638360, 87578277, 455438768, 894088070, 835976016, 969566965, 323042316, 212287755, 517833930, 442679595, 261582652, 823187406, 532793112, 159122123},
{733922348, 167366410, 876753742, 975422598, 799075476, 725829008, 872365212, 85018489, 340486853, 193566452, 599261528, 908283866, 800187671, 74553339, 199864122, 531353232, 700507329, 796422638, 830761055, 904523627, 962290437, 384793789, 30417305, 755042000, 79331844, 560314134, 348742603, 131981681, 16038223, 665114805},
{549790477, 671810211, 129382453, 966885251, 350592706, 596447982, 138443086, 691404995, 414285379, 196630498, 881923189, 163813881, 256102447, 71583160, 508771819, 681877733, 69375609, 207682964, 724982026, 837267786, 668534167, 138984993, 187812264, 924844266, 260256369, 841319659, 600930379, 54790790, 377702315, 626113287, 272358185},
{459478873, 948673060, 879976129, 77561086, 165638941, 509558379, 837667237, 103572912, 894613159, 206725937, 182772554, 998752430, 47107053, 551788393, 894748127, 994170493, 465274175, 508504228, 270177642, 700062682, 628387180, 156798153, 73871430, 830714579, 260430563, 237342573, 723016796, 489063843, 736112179, 110309822, 473238523, 365885605},
{461905191, 192165619, 747770106, 332106409, 398047884, 542104469, 197965617, 370342165, 11068589, 679254174, 758866370, 857614267, 645140882, 582386803, 555714996, 329617223, 461427609, 814724809, 139913691, 279486796, 254687615, 584423075, 179009767, 310504013, 840539020, 479836189, 75959175, 376095868, 716191358, 285404140, 70446126, 201071854, 744733441},
{310559811, 692706359, 114952121, 589789, 197188321, 269080294, 498208881, 629662567, 792354713, 176304605, 906976244, 468957371, 531603707, 897184676, 634643342, 637325685, 847138825, 474895813, 788073860, 313965361, 648791064, 944711077, 865937497, 622472778, 554274047, 626418740, 890567626, 794263440, 514221087, 940409196, 568590746, 975780789, 625062413, 692873095},
{720063004, 514071464, 720590190, 562298898, 707467805, 921118994, 71916204, 326117125, 12744339, 104010564, 446163721, 80786738, 594937065, 670679635, 989080689, 743456611, 91741554, 850963073, 209030382, 204167494, 514300043, 535977901, 567903595, 891459400, 1565124, 678215773, 565094050, 874198356, 542097582, 397868812, 971072020, 684763494, 952651896, 792935414, 463056339},
{363951854, 533712601, 613612726, 684833825, 885522596, 994755404, 453084167, 5686560, 592060426, 85188289, 163163883, 674500816, 814709411, 789909019, 747209202, 824975930, 473236787, 251853539, 248980472, 95331397, 320829588, 356098043, 499982795, 101569832, 562105659, 298126246, 59540251, 253450577, 570972450, 124186958, 108579178, 388935692, 360714078, 70717936, 995618862, 828412002},
{451501514, 455863211, 667442151, 284857856, 806818775, 62989212, 127942382, 918256345, 689813991, 817037279, 437212397, 820083716, 300971768, 334012433, 359525351, 414736829, 395405546, 291553822, 251302231, 81336112, 449119645, 251626769, 304104924, 522072698, 990312351, 425178419, 853656164, 166017455, 548825829, 503846746, 382171396, 902545004, 383608736, 961132395, 412843390, 201489221, 817756178},
{403145314, 302594789, 119692152, 801838972, 309188256, 640374867, 930604812, 463548456, 859729712, 616220450, 846353372, 790484235, 770481033, 897914912, 418395599, 934106855, 957114976, 213017240, 878174936, 526015728, 285827022, 851307532, 45488497, 506764881, 657262624, 482384244, 624191146, 41042634, 930861500, 523282256, 862176302, 591206152, 445143145, 98232994, 337753801, 580039286, 394539625, 366396447},
{445742553, 920930190, 618467072, 830108606, 410129292, 103013150, 526699502, 662467377, 289154902, 783869201, 833704838, 234742715, 121466416, 978991222, 675108227, 82848558, 396027899, 704774559, 233265149, 548109093, 761809919, 482936390, 702193112, 938839019, 52955263, 568236345, 660308411, 58801676, 358901394, 851410000, 924676245, 895214879, 7409527, 795655953, 362762125, 193892235, 408309456, 631325110, 683685664},
{841534010, 556349152, 636110463, 104393421, 316124540, 555447825, 808092758, 695139212, 32056979, 391521851, 915375601, 764002301, 453079523, 698106226, 292515850, 985598119, 335638237, 554668887, 459958304, 519173438, 345239465, 145649238, 742075755, 492752594, 475707840, 615454592, 892620658, 367245832, 392562692, 915668045, 572448455, 433406225, 758826887, 29418592, 885677275, 265999684, 23245001, 158111789, 83834338, 681586780},
{514851479, 790445500, 580811065, 226784910, 395103645, 70630538, 126702244, 988666831, 297547678, 755002235, 429217769, 337085154, 781063342, 975089165, 56075509, 201434726, 422033180, 342049785, 388335656, 433478739, 126972685, 984076482, 364134870, 216052286, 341802953, 462011635, 396243269, 523154481, 450523207, 199666167, 630116440, 369410996, 349080051, 866483443, 707394221, 225181557, 660624393, 828140730, 435450553, 864043371, 840750853},
{574794279, 780298930, 717498605, 457416440, 999243964, 81444157, 824289854, 340261948, 861008986, 289969281, 35405344, 915472694, 727987225, 505049953, 674922372, 589155591, 796938240, 849815851, 701763196, 814508375, 659421166, 330936448, 247521497, 772281187, 30213422, 682804165, 779868190, 269685870, 361955653, 110185220, 65747688, 890550949, 284167942, 302471994, 736103035, 810853021, 316189417, 666665569, 858354115, 172541785, 766342407, 683889724},
{342742191, 801813240, 451837162, 964284972, 666065915, 248317835, 35476411, 934310259, 789581466, 287955184, 661427574, 924788023, 756605552, 351632653, 50196887, 104853216, 627727442, 979789795, 270911774, 871335913, 647733415, 377034208, 148700028, 534632457, 788327101, 989648678, 898176729, 226474996, 960591003, 31201113, 708415457, 312120961, 417772228, 403066267, 876310201, 528791084, 201744011, 887306815, 225149667, 373766019, 626039819, 3425893, 216039853},
{918181383, 485535359, 303177672, 719707445, 591780285, 134245958, 218522202, 315813172, 700752839, 548272540, 437620754, 917968266, 979687501, 614976599, 959939269, 6631993, 20646513, 584270185, 815764999, 797243417, 554339252, 586373964, 593288105, 704544473, 563849774, 389637723, 36809926, 556999167, 715830709, 176283904, 85285627, 973763671, 42299689, 894144161, 331356191, 279329764, 807180946, 227890939, 581038881, 253992517, 912855384, 908072663, 733728244, 954226396},
{729556520, 649630450, 909829173, 156554452, 823452341, 129416469, 698721976, 540353255, 355902305, 332778653, 804768637, 146406952, 10106877, 835278272, 551614260, 601523379, 941589971, 943425007, 96461206, 969131497, 694931015, 305092242, 432193773, 449095750, 180776628, 923500261, 873161043, 57375992, 255281551, 174975664, 635375937, 426676640, 314553745, 994609240, 187767806, 65499253, 527395169, 655802119, 964339998, 873570362, 236228239, 607173609, 992410823, 254974603, 858087702},
{244812915, 938931203, 681133687, 901223827, 608571348, 787184552, 717686918, 377000300, 186799300, 681525108, 740598635, 37048369, 492943490, 334366799, 199143729, 474993845, 658001089, 556180984, 542902187, 452759254, 714035318, 498885606, 236848543, 435787456, 852612916, 857227247, 35555045, 698630692, 614405567, 221973246, 57495261, 545637525, 207436728, 940697619, 980600009, 236658538, 942457345, 473300474, 736140300, 910731313, 663507692, 611666819, 716777013, 231711677, 941017541, 540284076},
{480432768, 545206003, 274489230, 888008154, 40016066, 286928972, 238248176, 895449176, 412768093, 792910405, 874666753, 965359532, 967728067, 24886601, 940823039, 236054152, 500750413, 25397091, 461999638, 434555123, 287413486, 98386808, 623604775, 18033343, 846491635, 912669600, 787437173, 975508943, 426723587, 759444260, 796695213, 160749914, 11907755, 73188549, 567676337, 30884957, 499921643, 134258019, 631738486, 882693811, 778206365, 299760079, 594217913, 978568397, 440410986, 534649902, 514254014},
{847128810, 212389525, 701125998, 878805956, 115467622, 74755813, 100644985, 530421200, 182735886, 614925233, 67333991, 799685484, 567460175, 615115005, 139139456, 620109355, 403304959, 330113757, 626045136, 733425560, 50269669, 336179821, 647216785, 669852199, 334540102, 745975904, 714496935, 513825878, 626746162, 520059267, 521330495, 854923299, 222036870, 183204082, 543557199, 94720918, 960388135, 106094531, 746463768, 958544561, 282013067, 784592361, 461090063, 389098502, 617861627, 525489702, 703863826, 647209774},
{404411734, 728831000, 895960345, 171639292, 4098612, 164413669, 43613252, 641923519, 440294586, 620902939, 310001661, 201402176, 603515327, 906750839, 585087174, 246651304, 274236792, 388068862, 769008901, 113416358, 442080910, 941669620, 609332642, 774190365, 949899374, 546017909, 458137232, 883253904, 658406874, 805180048, 890491819, 63398634, 807608514, 222659727, 394529753, 255999445, 807370194, 942520995, 899082442, 584860525, 919337909, 152026270, 340145783, 919995375, 101170347, 670726107, 786221920, 663152489, 900185117},
{530951103, 320231646, 171461192, 366194650, 539280267, 504756026, 75657390, 807857553, 204518178, 130503978, 116515680, 747413429, 80971414, 384948985, 611517293, 200525391, 294768673, 1189058, 949466871, 907630916, 167410801, 272715777, 171390713, 224092672, 212315849, 509317518, 108431119, 829257018, 86840730, 678768073, 874259830, 502172134, 688129860, 214134655, 506914172, 171381415, 599297269, 566555238, 5146156, 711710883, 238462641, 478929291, 813577858, 290416284, 513228366, 357361210, 403220045, 263206858, 745787657, 348985796},
{953833279, 146403010, 968776570, 455031343, 220517136, 140249895, 346732359, 332889981, 89935741, 873633645, 15800166, 347202277, 914786180, 528825537, 966225620, 514843928, 780718526, 641940303, 395603325, 845486768, 429952850, 552487795, 221814204, 770616412, 178550683, 12780771, 262877139, 541795941, 259616376, 255569226, 6289163, 211253547, 255820472, 721689992, 378527996, 873568389, 548799467, 795754141, 170736523, 731303770, 703417691, 265584637, 843712157, 277961548, 633548726, 345496464, 274305959, 359680267, 317178762, 222355131, 609459762},
{39719753, 565918053, 528500387, 310816367, 176461152, 701039462, 426323816, 422491593, 958637038, 280521790, 103563541, 64538997, 642658918, 115481581, 784820562, 69474941, 536049054, 400532166, 736376542, 362104609, 675179924, 74362414, 582124785, 767944775, 873727308, 723000024, 205538381, 489080802, 239624810, 727241771, 335592781, 289077990, 853464117, 37207227, 569991934, 806023175, 721172136, 784247461, 77489895, 889138062, 486426776, 319276118, 876627164, 748185113, 424430907, 890280278, 160671391, 264014932, 580547911, 900138137, 653067994, 781824096},
{547851185, 770441641, 275870840, 525902814, 636078442, 789597827, 907397451, 823685641, 215792168, 362250943, 218589388, 750994190, 133561221, 927020335, 4813109, 951926403, 908556818, 168827029, 598783649, 32113990, 959735642, 773128448, 676194190, 135815973, 493803418, 505109528, 976760223, 223589907, 761669512, 559129228, 83700659, 907083508, 719458021, 304845221, 48668041, 523011959, 90699905, 527159135, 998606992, 996172513, 404523805, 139310018, 111259600, 761670572, 164355617, 906261838, 351221445, 311694888, 915843992, 852491527, 935991763, 296706692, 756600466},
{40192184, 377470164, 887789046, 207633902, 578113363, 910247976, 698410198, 262394399, 628599584, 772563211, 444995351, 671122724, 224063543, 96493319, 455305313, 403589973, 736773000, 660928961, 906997999, 942116239, 318896816, 644957472, 860494889, 797082447, 116597898, 722565332, 911067719, 892632157, 112564449, 326809748, 154128889, 604000554, 730199518, 957953788, 851516898, 668743340, 754546423, 58189080, 623619074, 382209352, 356189162, 387999517, 948187716, 274900110, 211945210, 792742775, 496428969, 604897775, 686331624, 214795137, 468832620, 907831347, 116487128, 654591160},
{772146975, 741980249, 856075632, 33414036, 573684311, 462292629, 514658095, 447619932, 799988357, 469310748, 455488000, 170814848, 243437314, 613754480, 668617558, 684363024, 829026258, 476143602, 325728596, 611433941, 808009918, 976405493, 456939548, 960521016, 242295040, 521172533, 761610032, 930571612, 96162122, 62242435, 629883189, 300225191, 71807426, 159913051, 294211488, 521569762, 609309106, 480789456, 735918547, 84077229, 305774589, 391279029, 294160396, 927785928, 29867252, 727268859, 791964963, 666298430, 83745092, 619158573, 865294313, 773518650, 442105499, 366552145, 171792186},
{235389640, 455110592, 548252593, 343281204, 558598762, 976682110, 557125871, 575066079, 37143992, 639232446, 232009640, 364887090, 240197954, 994986016, 364000945, 757266836, 751545792, 625909324, 52718765, 237153610, 624299417, 757755004, 823278369, 18270469, 10663347, 771130400, 767540777, 671496315, 435343173, 428018887, 407941015, 994357188, 265272775, 166544960, 394870201, 426494380, 805902072, 624024006, 8739209, 461673323, 330624131, 545271809, 268452630, 527797286, 667199197, 742180077, 537638513, 729221360, 17647860, 723537031, 207516152, 730339756, 430766231, 798593808, 32331343, 748630189},
{96561979, 505908931, 52100765, 510455227, 313617197, 113594177, 17655225, 902194173, 334081273, 63478654, 590414975, 926140895, 436740530, 725928278, 809088339, 552086514, 226385357, 888596468, 998239251, 538554464, 204041286, 659988814, 288984091, 677926558, 407830132, 985387964, 386180875, 629712267, 754556041, 802302987, 370244185, 254505837, 833239005, 258076765, 184454256, 20472969, 36609323, 928139799, 410421880, 862630552, 537238617, 906166381, 781180137, 568581916, 822569882, 785821816, 200546960, 736642017, 940220825, 814401067, 294182048, 447253036, 695370431, 583540996, 951800142, 724762428, 848074470},
{724522059, 164316848, 761574260, 840900766, 149991564, 195958169, 193500946, 81539605, 961030930, 337929124, 783630826, 105600702, 245429671, 110114522, 293340585, 41382985, 510337517, 617286638, 224411711, 303088802, 763497555, 870646400, 782404965, 15458987, 120194255, 858920236, 422878080, 73654600, 194704924, 741890346, 772508718, 35284254, 567677402, 776119182, 847964884, 101454043, 379825760, 913756107, 659429082, 436266638, 380391839, 140348468, 757024795, 570912867, 351653844, 130004, 754234496, 22472290, 703616683, 805844572, 655786593, 447614736, 703481016, 319894113, 320087535, 629057333, 108495550, 75742990},
{99758008, 866280637, 600757825, 916210416, 363982886, 155752048, 668360643, 720362222, 188289516, 84779572, 492686470, 253516304, 716168991, 643612498, 756317149, 146925815, 203554837, 782902766, 332809378, 957962239, 34827168, 139206187, 618142267, 509728364, 424475857, 122493345, 724562140, 358251449, 402153198, 262483936, 4978645, 197460301, 346965220, 537205482, 632866592, 887366992, 712855082, 466659166, 417372989, 32956918, 169665155, 597886062, 909856795, 426944843, 501761443, 859857543, 834449962, 695985655, 686232592, 129399855, 483538289, 264828846, 307320437, 623404413, 422675975, 73223097, 553984775, 935346011, 352494923},
{590658781, 785793032, 542605548, 530332577, 138165788, 251694346, 438057949, 185382506, 757268296, 693773890, 285528242, 804057758, 263484260, 118774967, 923721402, 737831219, 939946240, 8722902, 327785550, 133875690, 775015671, 582112060, 914037976, 547950896, 222973765, 475324792, 421430604, 739600742, 676179078, 62164054, 352352369, 272988641, 591205276, 740232373, 897587887, 394111683, 493306392, 617893053, 355859621, 348734420, 478771928, 375112633, 352053971, 453141398, 427593179, 412248276, 34715181, 472379379, 817514080, 949075961, 677719211, 94642965, 351518121, 631850493, 116788265, 46196683, 632702798, 466961748, 719372237, 278101098},
{483755255, 571265061, 929805531, 262802600, 538652866, 834217393, 156585994, 369800066, 54623574, 134068760, 590017288, 843761676, 586617744, 437925431, 243900232, 482034426, 93064335, 193701178, 755600258, 340838688, 75069178, 693146942, 18735829, 697629222, 286234366, 870839054, 211651426, 223635410, 323223526, 233083989, 822045640, 685479807, 933881234, 556935706, 534238857, 926706653, 638975202, 807370464, 875190733, 681222255, 283441550, 613530257, 290472375, 156799281, 782007577, 358178236, 230920911, 574639427, 211876742, 551160936, 756347345, 568121742, 229032431, 845262999, 266994999, 747800242, 13665211, 269818438, 252347993, 535688360, 462072300},
{757236145, 393623266, 933074069, 607958434, 885340520, 971359262, 894796163, 250615781, 42732871, 405926222, 923586775, 312429882, 370287692, 155175889, 50715155, 570512715, 302415631, 138377526, 65478823, 71337697, 545363521, 353594740, 159667304, 110614793, 229089005, 65873840, 890903348, 483289732, 607004240, 692343315, 425188452, 436652838, 571391646, 341207693, 330793828, 394217606, 574687983, 890225392, 939814414, 308566566, 20464145, 459405930, 18784884, 428815851, 806458012, 99519806, 228375152, 526850464, 330183574, 390710797, 70608735, 873476735, 684575818, 224621591, 985285261, 592241984, 597534954, 605614617, 471078457, 458575386, 57022287, 334907097},
{74370708, 728237123, 31517647, 698486056, 793453748, 909026713, 470033512, 153708156, 940306987, 703834984, 50218200, 402851006, 796635515, 315665629, 533451649, 206679390, 370577816, 731363905, 853693417, 687094443, 207398679, 292645507, 155116125, 908955227, 272198425, 208826494, 545152518, 895102060, 507007269, 164985381, 909472429, 928544992, 497328771, 866196173, 140346900, 41877849, 767953789, 530957651, 70164369, 488703645, 750789288, 983627939, 439842623, 265886544, 446539108, 309100463, 296859931, 623952346, 664527190, 92776512, 825658286, 202280270, 297385629, 415624477, 943640040, 238617327, 215028795, 536262419, 915666887, 986146883, 361766110, 652834093, 10474572},
{967838085, 994420980, 314815639, 742317606, 713796321, 267621954, 121015925, 361307650, 792002014, 314094041, 949928551, 44530471, 149173890, 854127017, 33926563, 867460808, 357940733, 722483746, 268366632, 513153271, 656628963, 336816029, 330474457, 362918925, 1995465, 577091806, 735338629, 810653897, 718749045, 66078053, 71763525, 32084689, 251907687, 902985647, 738367785, 515989656, 773261840, 983953343, 795687899, 802918663, 734540747, 284279438, 572068337, 598595772, 415736566, 385907103, 433625984, 370340891, 704247903, 445018741, 377232420, 526992500, 566826465, 11575969, 522618771, 943302284, 114152110, 447330356, 12955677, 917856315, 978594450, 490260095, 380650685, 495625635},
{784320876, 14277399, 491376956, 988559613, 192811225, 362473380, 678089058, 897905630, 82309036, 110234243, 697183816, 946053452, 931728856, 250941141, 928431098, 336863323, 141705846, 783540762, 126760507, 330513743, 116278311, 960351780, 108341119, 700032999, 449410127, 969979707, 901023137, 457674810, 648619879, 149947527, 408816835, 86301583, 348077372, 60414327, 205961852, 663055028, 690160195, 582426219, 485741639, 608712261, 196451482, 464155657, 974986521, 941623678, 539601776, 945825059, 256055618, 707713673, 599704396, 248292888, 263562267, 859139604, 59129864, 455702441, 503761571, 543879020, 415651630, 45770159, 155928046, 72480865, 972914175, 795113128, 550933339, 181038837, 586051441},
{290699095, 997482681, 476634938, 687089530, 625755413, 994025794, 137654557, 35059557, 113120521, 952046855, 157013742, 643024171, 555347441, 778526683, 561484450, 742065738, 452557325, 603724821, 607441168, 167132016, 826116408, 943488548, 938826998, 191083964, 97918479, 118860402, 899757466, 510933051, 849383407, 645932050, 740253141, 144753281, 407921830, 531651008, 38844454, 354359496, 638446984, 336736184, 390914915, 3778283, 613344236, 17772525, 952986992, 966848228, 387526868, 800348606, 994814059, 234403778, 257035177, 626836969, 90687931, 664397142, 954090129, 643773993, 245392543, 56276593, 973515112, 329888459, 796695563, 187982810, 93835402, 668260978, 885619983, 507765566, 589520607, 159996073},
{838529277, 880289418, 535626390, 427847410, 842535497, 454452052, 945816247, 299788476, 441656423, 717687261, 421782848, 618936792, 661740236, 991069603, 374680690, 968182316, 85688713, 404068007, 865946525, 821318004, 509099896, 94751468, 622265340, 241413368, 94973148, 32968457, 834522216, 904413331, 253460625, 768786826, 346450519, 294165233, 726633643, 121522642, 441251871, 539219003, 19337519, 47562508, 106885953, 603099799, 62232073, 685871563, 933855504, 781430573, 254050846, 818547857, 645136869, 674680128, 317617310, 252059119, 104309372, 91948947, 353181941, 420803309, 41688583, 256967809, 92043859, 514252258, 502640306, 392253526, 748827812, 159764155, 162253683, 601812756, 177919689, 926887986, 479379757},
{301338962, 684315685, 525170643, 886078238, 228767585, 129218287, 127372233, 974385558, 852695120, 680129236, 568090336, 510403297, 352725479, 411378382, 364971157, 828132262, 301220321, 656620741, 983878034, 68345779, 344739955, 638128084, 216038799, 659495834, 180142452, 450365153, 593937049, 469018261, 858200201, 364924894, 843011862, 763540741, 898779460, 861109681, 524026842, 172623009, 214961004, 199419320, 119066391, 96108059, 309580492, 31903662, 534065064, 849686215, 567461483, 368778901, 571490190, 976004393, 758627443, 947463311, 461722690, 452234911, 318368588, 750008711, 481196488, 847670200, 151891152, 93759106, 989508121, 10390794, 962477722, 279278171, 560214022, 255477311, 962687713, 655560919, 29521392, 707597945},
{354073061, 356339804, 621250698, 254568000, 54951701, 143347978, 731515872, 603838201, 430664109, 52819884, 48710874, 252889245, 95273031, 618848619, 544984651, 199516276, 940944069, 334067965, 716423665, 199208030, 949507652, 134469367, 185627209, 155904314, 982088845, 562287766, 713483638, 592426916, 372761848, 589661219, 610648625, 311907151, 31916974, 330016612, 191596078, 350410113, 799765451, 529388016, 977361187, 560225836, 734792729, 844162222, 345329501, 108127169, 610157461, 102422770, 729625403, 181265753, 719037032, 560185604, 24828047, 548329644, 401928684, 608258498, 847939664, 904554069, 987779904, 272440049, 210984066, 66646574, 220635808, 855057054, 451291853, 778658893, 157187935, 274376780, 953863463, 260569635, 561063550},
{387555520, 331460811, 288670552, 475872614, 374590935, 322653045, 826258413, 890200759, 610395692, 421930713, 8027791, 202995227, 841840285, 944876400, 663424395, 774157427, 54379204, 730355359, 197951353, 160865915, 206406375, 765798932, 740484953, 288267649, 120829198, 515436769, 621070797, 510669846, 800349357, 714643291, 744881633, 566845392, 824262813, 102970232, 744114220, 383130127, 316333575, 109810837, 804384662, 460730115, 52062015, 265854910, 406824074, 413851284, 755686707, 964442743, 948601414, 376279463, 842962236, 638409360, 426937562, 408651929, 215696769, 897737086, 92881006, 179071422, 129213402, 46937642, 791598095, 699511911, 832807657, 83271299, 649705555, 27581889, 994583226, 10036537, 89183569, 95505398, 978680484, 974840072},
{303671272, 790419570, 715243749, 308877502, 657738364, 404025454, 60938031, 245451227, 4800989, 336859859, 913979974, 581473532, 915004304, 463175964, 873901758, 53800595, 571998238, 338552253, 91575888, 971192560, 404401627, 551322092, 334446898, 910302161, 413079813, 292029749, 294248641, 46682564, 453791492, 789462321, 709911403, 486571206, 734438761, 206302937, 312256920, 271618375, 747002024, 950784431, 517479270, 841852445, 602140776, 499801567, 989879709, 296594825, 56488603, 399230097, 18724073, 989856148, 839600435, 895652, 127374673, 646295336, 217797127, 140775147, 913712892, 511159971, 327580780, 110468238, 39921169, 742274118, 738766762, 242834869, 603661721, 272066876, 615440638, 67668832, 194964989, 516166203, 162389935, 676828712, 209152841},
{435210570, 743671681, 925377009, 588885346, 31274994, 508829161, 18627053, 919497815, 560287690, 108774592, 95986232, 140430010, 670367902, 697132221, 449921855, 909173154, 325912915, 455065350, 17093438, 667953734, 711676716, 319849400, 603906380, 489923598, 494804319, 183418875, 182160650, 729577691, 945276869, 745074058, 248651297, 429179325, 362872862, 615090111, 887005086, 743284090, 159617430, 699560784, 77132809, 305480434, 635023294, 24289121, 626150902, 422319674, 211684576, 638582136, 47115323, 592682729, 906133600, 80753779, 239658180, 208526837, 308976275, 214978999, 994173497, 982132756, 747147466, 628009153, 784532960, 468457235, 354087891, 776789836, 602508197, 174689507, 896953442, 297205104, 226423682, 133334558, 163453555, 894880977, 251157559, 906106015},
{109593449, 19294252, 685922207, 566060658, 968532493, 515960641, 990419698, 106841901, 108076450, 911872856, 863979369, 173095484, 337066093, 893370510, 392569547, 280567008, 73775619, 813694364, 65337609, 48901202, 921538874, 118180599, 23703021, 787850811, 606933366, 333965593, 908334502, 686080819, 645974924, 562592032, 985397088, 742272163, 975741144, 84692724, 414914949, 854689261, 643607961, 772052195, 994866816, 684471865, 638499321, 658700814, 122170560, 572403889, 808871973, 124789444, 105994613, 957697341, 848733720, 173141377, 987211185, 637173643, 844345448, 648643957, 854655484, 201778202, 554164652, 687807860, 33477997, 449784879, 925538967, 574116883, 790164454, 778847355, 21832411, 398129408, 203505110, 884943992, 308965168, 543641397, 684034260, 293754111, 467465396},
{980730052, 602727474, 353558184, 191329079, 239925020, 192287980, 217538035, 656858841, 66083580, 476601142, 567114189, 496298378, 953820382, 828647035, 456045181, 476129598, 416112903, 430657997, 779536704, 460954037, 646507482, 901248774, 766318870, 994737807, 237339734, 286520772, 190941094, 945821828, 626974785, 581606733, 975198058, 373665622, 562523121, 707277925, 57095540, 64584175, 362206155, 941870035, 716570409, 513449599, 902875709, 37328276, 100937014, 763443815, 50372715, 49658819, 333880469, 722933168, 572160474, 665387137, 834266493, 78341161, 25933474, 238061250, 315238107, 957821203, 946342985, 473152267, 390154340, 773082120, 116199832, 870574256, 128786648, 103416367, 63369212, 498676089, 159482156, 441988948, 919921817, 708190002, 16620502, 52136169, 445214134, 82034048},
{934750343, 364768337, 793206125, 136997469, 804661845, 22833200, 567648818, 836868376, 907351882, 908161400, 946465139, 805373391, 855947505, 474891536, 411802282, 212372451, 259668836, 529439915, 383990748, 478184396, 619130341, 82189165, 542588203, 623148753, 313380133, 921218788, 42096393, 938459820, 239375700, 555084107, 592803445, 130041546, 144255968, 840954884, 421681138, 481790921, 655690827, 746280162, 944456901, 800266190, 884907091, 920182619, 867715565, 618884249, 220412327, 855160967, 164116390, 801290349, 103112274, 836481348, 939592258, 504309615, 953738801, 745803504, 352638883, 218899532, 228831540, 45860460, 102341319, 585992280, 330060580, 349971983, 614025228, 219486644, 976715774, 308195105, 274477264, 849320393, 465684038, 610848059, 910660648, 686847951, 897360021, 486870164, 392794164},
{448644733, 697423318, 712751206, 433552712, 58578124, 739372058, 298746764, 626086905, 456499124, 811355904, 293129883, 224818269, 417369620, 164528222, 532966517, 707050362, 142838833, 76451415, 464285832, 137097011, 201471343, 509512154, 685151133, 590597480, 555022180, 84813659, 105728121, 163123905, 961354244, 540789472, 213616617, 558751220, 129540892, 833496193, 927944968, 958620033, 365326254, 677275294, 804089589, 970937494, 632547162, 625648011, 247426219, 684283397, 603847483, 698321168, 36233388, 923676122, 154233305, 696976846, 367764586, 481526821, 952186054, 681271034, 998165402, 174143304, 14884836, 514311865, 684002470, 593850666, 275110762, 106101231, 587189423, 836847603, 722668352, 281692166, 672800522, 217962556, 133045402, 619698910, 947863832, 594835504, 251523615, 938956123, 495813386, 700950185},
{315387740, 642012598, 280321939, 777534166, 5238791, 630254217, 778911392, 936108166, 183895284, 170223054, 354347581, 246157245, 54071767, 244493750, 460230709, 643073427, 705840120, 620189306, 894718618, 210641196, 716397790, 859094827, 578208985, 308424099, 267625445, 991661966, 951588145, 632450968, 979910007, 10128652, 793457265, 678618785, 488180757, 378901344, 615102634, 517521416, 922662853, 764929849, 466458357, 170085510, 510027599, 472450248, 130932807, 81482101, 844929934, 175774537, 21764795, 415568844, 428896280, 995134335, 861930552, 164267772, 358280808, 593407459, 903447187, 186404851, 90714625, 223882813, 355400449, 416512939, 912392910, 311310465, 624051785, 326588960, 958570085, 530794767, 536705527, 746539829, 805400310, 415718710, 175600478, 665854382, 204514455, 968798768, 431898287, 205847744, 344807921},
{852448876, 306161793, 696551611, 705904047, 455147993, 577848222, 399303983, 752467668, 20301887, 41098139, 747053328, 80768708, 527881581, 526001620, 602944706, 380204696, 429727421, 600790813, 64203366, 811028197, 245915411, 752632163, 116841341, 619271212, 315541099, 743627361, 362465499, 716237611, 123254245, 210315444, 989660591, 359823187, 6000597, 50953802, 980943579, 854503625, 322567693, 350470653, 814180253, 549080210, 375778471, 97442943, 938035072, 330144412, 642445365, 553523901, 134726473, 64208364, 4822835, 670903902, 836392797, 210133030, 900700581, 352901022, 12238919, 281266657, 649225676, 40495941, 186245284, 195090724, 123247464, 99294358, 861474960, 826312920, 848421498, 941867585, 241461977, 789544127, 640640880, 866301619, 872848105, 874362873, 9073924, 486061055, 642789215, 789117093, 383218332, 475335490},
{325603801, 345746047, 26360098, 675125076, 506012109, 609026389, 872122080, 86829575, 751528017, 447855580, 729992255, 874799958, 96411938, 167395567, 963332587, 366153907, 617374617, 123643725, 210055288, 645657083, 548108486, 974037348, 91031125, 359914889, 822515295, 168985034, 643193139, 448960181, 196087326, 382906874, 487487688, 360074745, 306301319, 62460100, 392995729, 505271922, 146522980, 428760891, 89069960, 106987538, 408065484, 189419858, 291815046, 791925413, 770733571, 692442756, 588469690, 202023892, 87148907, 865578399, 640112711, 179405014, 440204964, 637068971, 939522305, 281848351, 127718377, 724844069, 214345190, 521836688, 74850961, 48661510, 319482628, 948381685, 127648829, 272601295, 822285123, 351551459, 21357000, 848949157, 73764974, 216837572, 989425864, 654459410, 481693295, 893858406, 228557733, 489858737, 496881113},
{446253865, 186451840, 534677391, 590482279, 803045702, 502820876, 932395829, 331799956, 378024041, 276513468, 631110653, 584429568, 504968996, 23567256, 750044691, 718635797, 765264965, 937841655, 920011081, 97503747, 555532175, 51303455, 144957142, 564734040, 826143037, 213933254, 736106984, 640580544, 16158371, 654652632, 169327840, 7023808, 666751884, 466630685, 435194099, 441873677, 826861652, 329940809, 418564826, 738883171, 722801627, 553410963, 349759407, 476536817, 314852916, 930898361, 401083981, 182843415, 529476614, 748589757, 524529188, 947328363, 143115469, 633744886, 349976053, 433168139, 208445558, 117356587, 792808484, 45632610, 728489218, 4412394, 774094901, 980658550, 299812616, 474812697, 520385968, 996896725, 152818933, 887470812, 159197829, 146301105, 984136308, 923545670, 229607877, 874788154, 488602713, 695877184, 101845182, 358229039},
{345804959, 622515219, 397317811, 760333217, 451764308, 504005544, 261393336, 327999999, 862287424, 771266686, 286931252, 747991372, 621014661, 696071656, 172785499, 778403057, 768525186, 106563348, 101226411, 347618399, 632381853, 723508887, 897806648, 172682082, 357428819, 264497370, 488428974, 74187395, 552155514, 414209334, 732063617, 448466615, 33746274, 269064251, 711547967, 289498946, 112438683, 788333688, 835848151, 287888826, 796503521, 566477855, 440158378, 708351453, 684687830, 148729930, 945663334, 379707009, 900140283, 343155679, 802785577, 609119898, 31462282, 131479817, 340417694, 751253007, 13208530, 737561752, 752896468, 286666928, 296624739, 860549921, 130358212, 769992910, 63886353, 602728395, 542876394, 118723350, 643590499, 507990239, 99948951, 792311601, 600061642, 799560162, 81838706, 233496847, 739384858, 141719906, 647771733, 165850381, 519104519},
{853226491, 678867560, 316328292, 325163325, 303356087, 154013384, 689395148, 274604039, 722884815, 456338728, 268851433, 477400053, 385121291, 974659285, 856878903, 170993441, 116160735, 670695572, 695440585, 973290934, 127117245, 961930838, 253751283, 766857529, 510124730, 764860437, 934833731, 633394595, 501973261, 759600830, 930246077, 609428367, 432911182, 356583510, 162930408, 699344253, 370734519, 413154748, 610208333, 541679255, 733198518, 143378327, 544877583, 993741119, 986676491, 869462309, 240602206, 794333832, 231238857, 372003323, 858170812, 816202861, 467406403, 619705510, 931004086, 306527407, 55239842, 877703328, 921572606, 368787402, 257439124, 317720488, 570978284, 816223180, 668654522, 324943297, 772613099, 445858862, 886527859, 199487590, 164849059, 380561526, 767448168, 984157308, 193948438, 144247840, 44057241, 718164342, 844089939, 836645280, 329365014, 784488542},
{404416244, 553971473, 853164524, 235816804, 978129652, 836460081, 396729836, 130538121, 338514894, 739175510, 938260395, 959988628, 271891574, 938045629, 955868279, 856522628, 75154701, 528932990, 422138870, 834947158, 230484764, 826739407, 787855898, 33911945, 480288294, 768572001, 934039594, 852173152, 485377692, 278473153, 641219890, 348819813, 625830808, 461363987, 291955770, 470376723, 140702209, 404139992, 743022673, 821361765, 523161084, 708255420, 335144386, 450479139, 170757255, 758861176, 756860336, 53256497, 616933922, 574154314, 838965432, 6085561, 103410854, 995480976, 694809432, 361592030, 737385966, 826379367, 259766931, 112255563, 198698339, 24174754, 686986743, 222601927, 704020426, 993692457, 899475278, 116915374, 356382738, 113457980, 95431432, 557376513, 727424166, 526096130, 572860287, 381556372, 610587288, 9733385, 972058571, 858820329, 358697963, 988899727, 665151655},
{194919836, 769101506, 896912896, 50946406, 156724767, 302624845, 286890461, 685219155, 182098915, 641327741, 195043207, 644233624, 290452022, 117008570, 11873063, 336520814, 245149286, 898170031, 209296418, 154711004, 460243115, 923903396, 941311222, 430555685, 653877825, 684757261, 133120727, 814954951, 99317634, 145216197, 11009971, 606993403, 684070614, 552761481, 17270430, 63283303, 198075016, 729524806, 782666973, 230491043, 947021067, 309767173, 957312904, 239341439, 607621197, 292637495, 797526893, 677601353, 751731535, 541161985, 936313608, 544038971, 648687762, 1198959, 342290706, 872645689, 341394073, 687512724, 399466901, 773825200, 913786066, 306544983, 816819662, 54209995, 151650284, 8021785, 540462174, 195804966, 85100879, 924965945, 72425981, 900364347, 576271687, 894692420, 376339218, 239307955, 506827335, 304277804, 803766133, 13695493, 966761623, 980662220, 678859516, 307919717},
{56132623, 163816561, 469329692, 182964470, 280546996, 168284089, 834415511, 564056141, 48699663, 740837645, 227167225, 953665785, 217827448, 60071589, 923720753, 373652682, 695366774, 728198575, 528294833, 95885439, 978495822, 163296233, 14193506, 772545116, 118167820, 166862397, 318995648, 593989101, 85570675, 327323955, 132262601, 324054290, 351422778, 342206590, 871168401, 513669026, 177633950, 800292399, 382097887, 719063585, 862805609, 612394647, 457026820, 262168832, 434005298, 776943739, 297660467, 232300466, 909390337, 300924081, 165916479, 894300055, 303530385, 483934245, 776717199, 980642752, 346966630, 445073134, 927956560, 436982416, 259452175, 82985262, 864349397, 327349936, 529003526, 117057863, 528820570, 938590412, 693218317, 805423145, 349349990, 981059732, 660997238, 698346260, 15891961, 373257720, 843955231, 193843075, 714962768, 267260919, 17970218, 954952644, 323719829, 151275784, 591199688},
{924253322, 456217755, 628950625, 379997707, 27190561, 63214604, 104348059, 260108884, 66267727, 925616609, 286736069, 976653430, 544035231, 273405779, 372295830, 946604454, 650881138, 968857836, 436875364, 824760209, 348317131, 742980357, 499770104, 900560177, 170294785, 446895067, 898439335, 601954728, 197069189, 696156750, 473403712, 414775180, 968697217, 357780946, 979795731, 420326034, 529303552, 198822214, 230862006, 375035616, 690822101, 426568891, 980985311, 750351191, 506237766, 735945670, 8230380, 33851425, 349867726, 109011071, 758229243, 259120720, 81972357, 151991098, 463233683, 61842269, 329268108, 358109565, 382937723, 231674709, 442339195, 523246140, 363113848, 420944605, 855803003, 532934790, 225910880, 789237222, 891756288, 948640618, 672791977, 68382284, 178947519, 645836518, 938923708, 959019261, 259112840, 490357222, 315802794, 847117237, 317657180, 756306887, 860634149, 865444055, 881756424, 692769253},
{758769224, 912490674, 159645747, 504072664, 777710069, 226839900, 874123152, 296121594, 183866143, 700415908, 109732415, 75410161, 516378258, 880314389, 259434274, 530995976, 399192188, 857509476, 573439599, 835501675, 441999875, 271129364, 626297241, 880816728, 812005467, 317939892, 561553343, 349167256, 196064948, 977692070, 433407789, 516086657, 953369713, 187922652, 920273445, 509609567, 105141382, 340650534, 349100641, 610440088, 446439596, 576206404, 100085089, 494661020, 412411683, 306979208, 148583664, 136649468, 927466074, 134059445, 391430433, 626928992, 930005347, 237698043, 269967976, 785310227, 557436242, 377223888, 427899742, 746789849, 992672898, 46032267, 572266926, 158030916, 725101704, 206638082, 527460937, 525460996, 767707003, 889226941, 818047864, 68173335, 979981350, 308273296, 189630454, 856755976, 705756567, 562589468, 753221532, 319959030, 186822655, 418189175, 124434995, 796390405, 270303833, 939048604, 335414677},
{51090665, 318279309, 607048015, 495494281, 35920527, 954324472, 559474227, 439123501, 606086289, 816103086, 68176041, 737019245, 183362135, 481412835, 198960744, 748642253, 190501174, 38096853, 270889653, 163088778, 452462397, 827934568, 345234345, 120800246, 852947985, 154385834, 314491124, 558122313, 174569721, 664007631, 892879499, 479862888, 342055287, 64651452, 398681959, 339909184, 205359685, 403652263, 866824569, 567919040, 398858828, 944214872, 31370239, 815148518, 727525716, 526535801, 490272831, 548770541, 318795415, 52610045, 325851310, 339501231, 735823889, 235614990, 158259909, 787077408, 901771650, 571840300, 102739569, 210506076, 822886874, 736289716, 351944596, 536596092, 333360997, 232297011, 717455432, 259704174, 722142336, 543927531, 113193385, 79172065, 803559831, 640727532, 946489002, 440587989, 852968592, 579121610, 241321533, 414323585, 514042816, 629555939, 697611503, 772450102, 228165259, 180684935, 828647019, 884560880},
{211778367, 812676739, 134946853, 792031414, 914490223, 318479870, 61247664, 481726062, 80350757, 504023331, 652594255, 712273533, 142776411, 378715045, 712568320, 851697133, 10322234, 338936679, 502091221, 716622755, 336652770, 998419018, 876607862, 597778398, 778796991, 581903925, 853451010, 94159690, 776854476, 574823381, 180691801, 274545226, 121357206, 630356050, 775278101, 632210636, 532409998, 708556310, 597807478, 927546812, 106544347, 452226180, 949917329, 672802758, 411694744, 848856082, 736178686, 29172395, 743239833, 574767128, 267742292, 517669865, 614825896, 984446559, 715148792, 969129282, 61797062, 140948881, 291419321, 374001861, 222524402, 552381020, 243461923, 964331781, 689187541, 870096723, 191386753, 336834953, 68513974, 255940044, 999390644, 288364848, 582516047, 390209492, 766803298, 112083595, 545202755, 599294617, 784634820, 250664977, 719140059, 385189329, 107240608, 246173252, 409024449, 923522066, 783630102, 644011234, 847374378},
{761200096, 965447894, 40635190, 173588654, 61365529, 659350384, 907557776, 585172053, 260184293, 602917891, 854680835, 888717311, 78833086, 956194642, 743751845, 523413438, 239078623, 912124698, 793226555, 50585322, 116354142, 141934313, 87559308, 944870696, 421597727, 90764591, 203965244, 669545579, 137367238, 858592763, 341171983, 415850496, 788426992, 145796108, 616008324, 649809499, 459803069, 12190243, 921265079, 377852648, 644953611, 316754564, 694486900, 366984479, 493323492, 857143242, 859754173, 62795553, 749992057, 181124589, 470522316, 337453165, 14210120, 962916076, 726803270, 70570950, 911030127, 983343389, 444163610, 813784582, 969503605, 90606011, 390440019, 740756410, 305297528, 558526149, 649060640, 928212219, 876495898, 271549897, 931943245, 897221457, 656434626, 564720453, 881490306, 968638803, 885754373, 755590154, 801772112, 20710065, 990717238, 129460718, 342392901, 635073597, 725304477, 255981652, 24010501, 601692254, 8035980, 791103220},
{214194897, 390774043, 892316708, 225040171, 174446866, 426349630, 729045072, 781117309, 856862381, 360673608, 652592761, 461756618, 503163947, 31023920, 414856709, 967194670, 612981539, 951401477, 652275149, 524579741, 265652561, 189823170, 914708281, 269535799, 987957328, 23301553, 302506442, 465516428, 816879865, 970054518, 201007385, 350758021, 290808850, 838969979, 309703923, 515585378, 106423467, 585213359, 427069592, 3602726, 768234511, 208825087, 10550363, 281974575, 875488087, 125860937, 847120068, 922704627, 65914, 561103286, 288468019, 253923925, 752317192, 471707946, 519486053, 104711705, 347007898, 915270829, 973910756, 309674060, 263448820, 260002713, 915107671, 247781369, 21867246, 541418628, 760692958, 711208292, 872856810, 465735088, 173446077, 742151066, 564753171, 829674573, 969462311, 407141983, 191948190, 21526998, 383964956, 608064751, 246443535, 239874230, 515647733, 390629660, 732415136, 480001577, 783399394, 575058787, 421596920, 759277827, 200350027},
{623398829, 915536870, 567545964, 956553305, 572800793, 490812887, 181716417, 167670537, 202760097, 536168901, 985689258, 840351251, 993167768, 221739203, 924641823, 326235251, 513256492, 428518883, 574896913, 898363002, 168251439, 708265836, 439185158, 493237280, 995945537, 824914932, 604945334, 701311625, 695394311, 24604881, 358136046, 302114858, 940045343, 756967183, 520349750, 925603397, 550992966, 848360533, 824764614, 388280496, 495632591, 875846194, 290919477, 298187897, 159517934, 434888278, 223630840, 170684588, 296773741, 735425177, 280152509, 880481271, 179570313, 418884622, 797290814, 822057765, 935717876, 340900169, 947676731, 655830472, 381737824, 142136724, 300187578, 724501160, 494025423, 629302707, 706056448, 378106122, 936470943, 844294544, 392337875, 445724768, 763257275, 37330460, 713123643, 31296379, 689373643, 612249201, 980460573, 499334683, 973329058, 466214244, 615553477, 186709778, 738876812, 174858214, 424743823, 982083129, 343375781, 701391225, 542393076, 485480275},
{188432705, 614370559, 974202640, 173744071, 836006517, 659455230, 863286148, 248944869, 75261406, 492713295, 91701738, 83182141, 83326188, 892356989, 812187248, 448633173, 674295945, 165329842, 556179052, 735244739, 136527054, 879004837, 492809255, 135393, 428467230, 168559406, 330152640, 286695857, 454145149, 523461165, 597603077, 555082536, 116720942, 643238536, 863198698, 470289760, 634599288, 418834168, 851813880, 679330781, 332906759, 98770007, 249607396, 71512068, 851241121, 659992506, 641040607, 704410113, 2515560, 8324332, 396316585, 945637540, 508961982, 792752885, 15302071, 731922266, 619737213, 844920988, 473896940, 328158439, 617713143, 63650868, 677661564, 219582711, 710074089, 718852400, 147352690, 917701742, 364631328, 814759227, 565748612, 928499016, 54675259, 228422133, 330744656, 622543462, 192295761, 305655363, 860218331, 19329433, 927665554, 228319086, 959856947, 19297338, 726277380, 765019894, 758120358, 24943709, 437026394, 380864597, 75195437, 264197826, 557337842},
{461050839, 940095719, 726216008, 370988394, 399089981, 640594532, 372985216, 390221328, 190078391, 164271251, 546203583, 708503399, 735832329, 438853502, 840502079, 936108685, 998851297, 1285938, 997814540, 640413046, 647317270, 757249392, 207146488, 348197975, 792773978, 927354999, 394163842, 826558043, 772025056, 584654757, 310298507, 422051327, 543902884, 715187389, 123431846, 787601113, 407996216, 790504841, 131859886, 367437351, 371547775, 46859685, 627211019, 868631227, 587052443, 164077700, 228371808, 957270988, 702709932, 591102317, 951700422, 47370593, 462436951, 190876167, 292299840, 364850753, 781293168, 905551105, 272170497, 477853986, 936586130, 249735298, 657129234, 316480537, 711916138, 625450869, 353820638, 752930531, 714001215, 856226101, 637649031, 36049433, 719925093, 401513001, 983353068, 880850233, 97425104, 909889728, 195458178, 756959696, 667000778, 235263021, 328999692, 583731731, 747343913, 185790091, 64663825, 220767428, 468745707, 750282455, 115624377, 431292339, 478404921, 434181960},
{437294226, 765252649, 399388056, 929465150, 468398487, 127669538, 31276744, 223627240, 265496232, 342258280, 809154039, 237770677, 306207496, 533085090, 366916207, 416999932, 393797032, 759212787, 885718216, 748564753, 451856769, 683110789, 286270416, 793829869, 811495413, 996361911, 709241376, 39000374, 602377191, 982844092, 710715904, 770330444, 486781639, 754166121, 282235824, 574981633, 368730171, 221846652, 575833487, 284674124, 926201604, 453734800, 771138352, 993117488, 68361997, 264004557, 109457789, 433615448, 516349103, 548872217, 777946072, 16826878, 597948768, 302030376, 649093574, 582600027, 788952227, 650868897, 668613902, 238442422, 761062327, 651632512, 25080207, 723756599, 174137856, 675736940, 929239830, 122254348, 978562090, 543364101, 827141365, 800830784, 556827061, 417331262, 534148197, 481941256, 462842813, 757385436, 365793473, 712589087, 432755404, 248866647, 990067622, 893057642, 630231135, 542198549, 280584843, 513153357, 892941873, 863452059, 242846784, 71998978, 762727079, 741220030, 73976309},
{943343284, 347864794, 774528575, 668469657, 655065169, 210045655, 522363699, 623662987, 31353394, 524059945, 627900743, 276661418, 194826, 298598305, 129142053, 797990107, 965900405, 667686485, 380211356, 13621558, 977082824, 270374371, 561026104, 46362787, 366598987, 158666786, 22287696, 685591452, 511250698, 355550396, 12326827, 117615796, 579929984, 782815320, 166584270, 945663410, 803248548, 114758374, 644451416, 989266035, 269621448, 963892031, 721699686, 44357018, 261896831, 58518171, 319915356, 545327272, 468551244, 153053080, 747061691, 863718316, 962366083, 192553250, 343120372, 479234765, 873318173, 950393081, 552942447, 286868051, 553273465, 333513824, 229370006, 734077851, 723792426, 852331821, 983592572, 488135902, 562199658, 225565657, 473497838, 1740428, 604239796, 209344613, 22205863, 77072602, 509011612, 277322022, 175949414, 786762381, 498031554, 511975535, 810321629, 303366939, 888624946, 304205176, 595904302, 363493563, 810258402, 28163663, 467775145, 23568228, 300087824, 27478086, 159229755, 792463021},
{373369594, 524259497, 964207184, 780262034, 575325289, 861118758, 532427241, 113814064, 308892552, 774060602, 910481944, 507199459, 611620657, 641676728, 602570830, 209509300, 817224582, 795650896, 239610809, 401378406, 91060378, 22184166, 771017002, 341735514, 246333807, 131714134, 265887866, 653845526, 784814442, 295053746, 15820202, 625612605, 135371064, 412904880, 30792197, 197771288, 370518954, 298204958, 320034928, 33873696, 205280711, 904811578, 466514278, 746378449, 766352191, 421469026, 864688638, 672766165, 369303717, 71516839, 472803254, 63766905, 520846686, 381608201, 964751681, 736885465, 105481912, 882736519, 560609778, 947106264, 685563661, 558936624, 926079453, 428348087, 515197816, 305245599, 805113740, 177686195, 543886394, 354189455, 639578566, 97616943, 895245640, 71705670, 667174255, 513191573, 53606975, 180545758, 172736035, 482219949, 965871803, 132582981, 741511383, 892527288, 759436432, 217594004, 56853153, 346386164, 975524870, 672564734, 497713390, 663502018, 516810488, 903754642, 358996755, 640573914, 462067202},
{357617306, 867153068, 41751851, 36460497, 125330880, 203595267, 255531916, 991131397, 165141306, 144072712, 859396779, 666578529, 584239051, 569211894, 842100169, 547853235, 358018723, 777644250, 112572367, 129296717, 816034800, 713304948, 821180616, 532497068, 344657698, 589877288, 721813239, 80739703, 991345606, 494539507, 546058540, 297908515, 34072793, 556988496, 45439520, 888490218, 67933181, 818288152, 391950699, 574894420, 23528451, 738222293, 558274900, 751686440, 465664488, 435213906, 950827114, 692428501, 805529961, 137262326, 862240362, 177808348, 17702752, 580727488, 475796247, 188011572, 463094318, 897414874, 692025787, 668933326, 663093212, 978951435, 881389232, 568004816, 471983944, 482272272, 684399283, 265728887, 547938618, 776363816, 775383319, 385026371, 674531456, 346104265, 774376290, 149931685, 605188283, 357370384, 80624597, 297452041, 751717861, 136697939, 20920222, 543883249, 409509551, 794219942, 381021142, 624479568, 519375082, 255658155, 985313869, 976702782, 967015301, 959565313, 222404620, 29894017, 477397415, 677783523},
{519160922, 352921658, 387853762, 185400053, 431960061, 189363247, 995883735, 976218245, 780440508, 514981334, 802442109, 78222683, 52732441, 672311049, 108812665, 821815750, 668628100, 851170036, 361084268, 764465877, 434072852, 407564139, 16494063, 874761566, 839709168, 897953563, 45427142, 665536927, 525709947, 623302998, 276584723, 607168467, 119485401, 600506996, 857174719, 880779385, 344934599, 900583553, 124144752, 951496535, 833345122, 305137726, 112977496, 509917999, 153095409, 430756896, 242746593, 132100680, 442417292, 211360541, 979196542, 60134591, 533073591, 707339379, 875276282, 881419089, 225277219, 21755095, 903162570, 535190895, 111203511, 302262973, 559116292, 637879630, 119366999, 845171845, 231811970, 369652158, 398424871, 290143224, 119066689, 484948564, 47256744, 742149647, 74955485, 667478109, 277868588, 458579818, 725889487, 786901432, 709318060, 176012489, 692225773, 468161400, 641564147, 719492414, 565334737, 563687307, 665346034, 857407559, 53686682, 87931260, 412562127, 985066059, 707621405, 241064115, 581376026, 732930030, 295755371},
{746667025, 988230280, 578857395, 943173280, 23604671, 609159282, 77472710, 209042115, 129444948, 809436586, 733155375, 553132986, 165858348, 517314464, 182707694, 321308973, 148879948, 272054159, 453293220, 118007503, 586789153, 589740011, 555141252, 848810118, 493258309, 885969006, 227477067, 496186334, 639293482, 552525595, 737960751, 184729160, 509192821, 972157554, 157170470, 83322787, 580419690, 525213566, 498884762, 922810517, 379441293, 405175652, 51775494, 913077450, 605380073, 942108469, 698582616, 265143343, 325602376, 131368951, 698399735, 533027689, 691072374, 916310164, 138815047, 228002188, 789670994, 278352790, 787446480, 993755127, 544791674, 985067779, 471551591, 162213585, 635614967, 449752557, 619966203, 274491156, 638711664, 481182769, 441677306, 98703039, 721084233, 456074841, 720861820, 369766918, 653247416, 10978275, 819090107, 57678777, 130923380, 417256721, 994085211, 231518716, 193054665, 760293158, 969362083, 410706882, 962996742, 443951997, 195700389, 509173481, 693173338, 307013209, 853551581, 525816193, 966638345, 224676430, 194209718, 435431099},
{281603733, 138407398, 86019269, 423308164, 628795846, 196796182, 753173513, 211764797, 295659241, 103252080, 288984637, 771817728, 16686897, 911761734, 806397108, 707831875, 367736611, 552407519, 611427745, 718194558, 336182887, 810354363, 887085822, 909120864, 176944207, 791461859, 781904784, 510230751, 5315151, 713990472, 643061399, 514126877, 586617380, 141247706, 717662001, 515959429, 921071412, 887143166, 111509430, 677896109, 927611633, 470842496, 323293107, 483632474, 358769673, 592995655, 738389897, 604489119, 683802635, 357484946, 492249407, 408062292, 680778048, 518340476, 587555941, 439454013, 349031703, 958250869, 501459390, 781878478, 357327972, 241401516, 821549611, 688310064, 604285228, 247863808, 577392423, 986288040, 510121040, 810270456, 705782997, 135408659, 222045211, 109164359, 546498796, 735527859, 499665364, 920156496, 454090236, 45419401, 872538891, 937602773, 873764254, 498024959, 825571197, 183796880, 486598130, 830745106, 971488731, 968532926, 653339758, 85583050, 60685446, 991118276, 960698403, 525607421, 217367693, 585600641, 639945593, 481066808, 193120002},
#endif
};
// clang-format on
constexpr int binpow(int a, int b, int mod = ::mod) {
int res = 1;
a %= mod;
while (b) {
if (b & 1) res = static_cast<long long>(res) * a % mod;
a = static_cast<long long>(a) * a % mod;
b >>= 1;
}
return res;
}
namespace gen {
const int n = 100;
int c[N][N];
int g[N], h[N][N];
void main() {
// === Init ===
for (int i = 0; i <= n; i++) {
c[i][0] = 1;
for (int j = 1; j <= i; j++) {
c[i][j] = (static_cast<long long>(c[i - 1][j]) + c[i - 1][j - 1]) % mod;
}
}
// === calc g[] ===
g[0] = 1;
for (int i = 1; i <= n; i++) {
g[i] = binpow(2, c[i][2]);
for (int j = 1; j < i; j++) {
g[i] = ((static_cast<long long>(g[i]) - static_cast<long long>(g[j]) * binpow(2, c[i - j][2]) % mod * c[i - 1][j - 1] % mod) % mod + mod) % mod;
}
}
// === calc h[][] ===
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
h[i][j] = static_cast<long long>(g[j]) * binpow(binpow(2, j) - 1, i) % mod * binpow(2, c[i][2]) % mod;
}
}
// === calc f[][] ===
f[0][0] = 1;
for (int i = 1; i <= n; i++) {
f[i][0] = binpow(2, c[i][2]);
for (int j = 1; j <= i; j++) {
for (int k = 1; k <= j; k++) {
f[i][j] = (static_cast<long long>(f[i][j]) + static_cast<long long>(f[i - k][j - k]) * c[j - 1][k - 1] % mod) % mod;
}
for (int k = 1; k <= j; k++) {
for (int l = 1; l <= i - j; l++) {
f[i][j] = (static_cast<long long>(f[i][j]) + static_cast<long long>(f[i - k - l][j - k]) * c[j - 1][k - 1] % mod * c[i - j][l] % mod * h[k][l] % mod) % mod;
}
}
}
}
}
__attribute__((noreturn)) void print() {
for (int i = 0; i <= n; i++) {
cout << "{";
for (int j = 0; j < i; j++) {
cout << f[i][j] << ", ";
}
cout << f[i][i] << "}," << endl;
}
exit(EXIT_SUCCESS);
}
} // namespace gen
int main() {
std::ios::sync_with_stdio(false);
cin.tie(nullptr);
// === Generator ===
#ifndef ONLINE_JUDGE
gen::main();
gen::print();
#endif
// === Answer ===
int t;
cin >> t;
while (t--) {
int n, m;
cin >> n >> m;
cout << f[n][m] << endl;
}
return 0;
}