Problem Statement
Cat Taro likes strings.
He is currently constructing a string S of length N.
Each character of S will be either 'A' or 'B'.
Taro has already chosen some of the characters.
You are given these choices as a
To Taro, the ugliness of a string is the number of pairs of equal consecutive characters. For example, the ugliness of "ABABAABBB" is 3: there is one pair "AA" and two (overlapping) pairs "BB".
Taro now wants to finish S by filling in the remaining characters. His goal is to create a string with the smallest possible ugliness. Let X be the number of possible strings Taro may produce. Return the value (X modulo 1,000,000,007).
Definition
- Class:
- TaroFillingAStringDiv1
- Method:
- getNumber
- Parameters:
- int, int[], String
- Returns:
- int
- Method signature:
- int getNumber(int N, int[] position, String value)
- (be sure your method is public)
Constraints
- N will be between 1 and 1,000,000,000, inclusive.
- position will contian between 1 and 50 elements, inclusive.
- value and position will contain the same number of elements.
- Each element of position will be between 1 and N, inclusive.
- All elements of position will be distinct.
- value will consist only of characters 'A' and 'B'.
Examples
3
{1, 3}
"AB"
Returns: 2
Currently, Taro's string looks as follows: A_B. He can either produce the string AAB or the string ABB. Both have the same ugliness.
4
{2, 1, 3, 4}
"ABBA"
Returns: 1
All characters of S have already been chosen.
3
{2, 3}
"AB"
Returns: 1
2
{1, 2}
"AB"
Returns: 1
6
{5, 4, 3, 2, 1}
"ABAAB"
Returns: 1
5
{3, 2, 1}
"BAB"
Returns: 1
9
{1, 7, 9, 6, 4, 3}
"BAAABB"
Returns: 2
6
{6, 4, 3, 2}
"AAAB"
Returns: 1
5
{4, 2, 3}
"BBA"
Returns: 1
6
{6, 1, 2}
"ABA"
Returns: 1
6
{1, 5, 4, 6, 2}
"ABBBB"
Returns: 1
4
{2}
"B"
Returns: 1
25
{23, 4, 8, 1, 24, 9, 16, 17, 6, 2, 25, 15, 14, 7, 13}
"ABBBBABABBAAABA"
Returns: 1
29
{27, 9, 13, 19, 1, 10, 5, 7, 14, 26, 16, 22, 3, 21, 25}
"ABBBAABBBABBBAA"
Returns: 12
32
{17, 26, 11, 22, 29, 7, 30, 4, 24, 32, 9, 6, 23, 2, 5, 21}
"BABBAAABAABABAAB"
Returns: 12
42
{42, 24, 19, 8}
"ABAB"
Returns: 18
39
{26, 32, 11, 9, 2}
"BBABA"
Returns: 2
35
{15, 29, 23, 6, 33, 13, 19, 1, 27, 34, 3, 25, 7, 14, 24, 5}
"BAAAABABBBABAAAA"
Returns: 96
15
{7, 1, 6, 3, 11, 5, 9, 2, 14, 10, 15, 12, 4}
"BBAABABBBABBB"
Returns: 1
31
{1, 14, 16, 25, 19, 17, 10, 29, 21, 31, 27, 13, 23, 5, 24, 9, 18, 6, 2, 28}
"BAAAABAABBBBBBBABAAA"
Returns: 24
20
{14, 17, 1, 20, 19, 10, 11, 5, 13, 12, 4, 3, 8, 16}
"BBBABBBABBAABA"
Returns: 4
9
{4, 7, 6, 9, 5, 2, 8, 1, 3}
"ABAABBABA"
Returns: 1
295
{112, 215, 73}
"BBA"
Returns: 103
683
{515, 298, 216, 499, 214, 491, 447, 572, 553, 93, 627, 527, 419, 17, 506, 552, 521, 334, 526, 497, 220, 300, 29, 109, 554, 586, 503, 455, 262, 383, 393, 350, 366, 351, 650, 639, 104, 95, 603, 264, 378, 156, 489, 337, 597, 212, 382, 273, 135}
"BBABBBBABAABBBAABBBBBAABBBABAAABAABBABAAABABBAAAB"
Returns: 385569372
217
{1, 60, 160, 170, 51, 53, 73, 57, 167, 98, 151, 162, 176, 74, 83, 121, 129, 203, 199, 141, 192, 67, 45, 56, 90, 181, 189, 145, 210, 48, 70, 91, 106, 20, 96, 171}
"BAABAAABABAABAABBBBABABBAAABBAABBBAB"
Returns: 262428743
305
{183, 115, 250, 1, 188, 193, 163, 221, 144, 191, 92, 192, 58, 215, 157, 187, 227, 177, 206, 15, 272, 232, 49, 11, 178, 59, 189, 246}
"ABAABBABBAABABBBBAAAABBABBBA"
Returns: 43068480
152
{78, 9, 21, 34, 41, 107, 23, 98, 120, 139, 33, 73, 130, 145, 74, 117, 91, 122, 65, 7, 36, 138, 116, 42, 87, 152, 16, 115, 63, 106, 71, 105, 85, 102, 136, 149, 62, 142, 109, 64, 35, 134, 112, 108, 95, 45}
"BBAABBBBAAAABABBABBBAAABBBBAAAAAABABBBBBBBAAAA"
Returns: 967680
866
{109, 794, 308, 804, 817, 413, 389, 656, 613, 677, 141, 122, 660, 825, 475}
"ABAAAABABBAABAA"
Returns: 907075547
636
{60, 85, 146, 61, 595, 589, 269, 624, 429, 352, 242, 587, 409, 599, 476, 78, 73, 498, 206, 275, 617, 265, 516, 616, 264, 593, 49, 20, 454, 135, 199, 323, 332}
"ABBAAAAAABBBABABAAABBBABABBBABBAB"
Returns: 744675864
440
{267, 178, 46, 143, 377, 285, 76, 337, 425, 439, 68, 415, 301, 212, 51, 176, 132, 75, 129, 352, 186, 185, 386}
"BAAAABBAABBAAABBABABBAA"
Returns: 570078011
750
{390, 255, 47, 429, 257, 23, 302, 15}
"AABBABAA"
Returns: 74880
83
{12, 14, 40, 19, 18, 16, 43, 73, 65, 10, 46, 61}
"AAAAAABAAAAA"
Returns: 315
320234376
{119095695, 237315919, 198415970, 30365441, 113511082, 124820933, 72805990, 153790745, 214627113, 217999834, 81503601, 4580446, 18400701, 156918930, 202392980, 15278425, 33325973, 53985304, 142538754, 126637423, 1063578, 18891163, 211670384, 242385663, 271256232, 118603169, 152604307, 243294131, 1786862, 30143710, 202608483, 81570350, 125758315, 248661316, 207878184, 197017207, 81533586, 31738565, 211544078, 48316708}
"BBAAABBBBBBBAAAABBBBAAABBABBAAABBABABABB"
Returns: 845860010
6187172
{1624279, 4516340, 1754594, 1369464, 472636, 4192971, 4589645, 301736, 4760883, 1573951, 4953392, 494761, 681209, 1417488, 3392641, 4167870, 5361986, 2250092, 3264417, 2947995, 2392073, 782454, 5708839, 1505512, 2904834, 3017626, 5239076, 2067293, 2406720, 1132727, 1713876, 1014011, 1473659, 3646953, 4469669}
"AABAAABABBBABABABAAAAABABAAABABAAAA"
Returns: 781681470
864697780
{625366864}
"A"
Returns: 1
915444397
{596118361, 909469362, 630752796, 316958388, 143570179, 516991130, 304632896, 81857048, 342540250, 638891933, 608803125, 552982901, 742634362, 412926099, 520740926, 582468318, 725085307, 36295994, 308143427, 654820983}
"ABBBABAAAABABBBABAAB"
Returns: 407485079
406242067
{130898417, 304041246, 315453448, 25898723, 31361084, 132149625, 221900953, 171316531, 18120527, 232863753, 142606321, 25015247, 49252863, 100578206, 164748113, 9292909, 1153018, 25010735, 118790593, 203470019, 118833593, 345906246, 39392626, 310546082, 338300841, 64322859}
"AABBBBBBBABAAABABBBBABABBB"
Returns: 924010708
121433220
{73338243, 74797888, 57674918, 55681097, 108620393, 121356016, 85322680, 111177541, 112391423, 41965398, 44055217, 16649695, 11441431, 82285128, 96336274, 28117020, 16670250, 1766959}
"BBBBBBAAAAABBBBABB"
Returns: 827113627
215316731
{190795185, 194408739, 93357365, 185661922, 138474320, 150279469, 113524840, 173277307, 97801846, 56718981, 95174032, 11471065, 155095167}
"ABBABBABAAABA"
Returns: 609546958
270823013
{84875756, 248049542, 208199465, 171785158, 102099513, 138021323, 205043269, 156238912, 140225967, 141977448, 127722436, 177240811, 80730251, 27900642, 129706364, 224686456, 190671339}
"AAAAAAABAAAABBABB"
Returns: 674190042
791301831
{279365465, 196299525, 76944703, 489201560, 750901414, 195097681, 769224694, 341801690, 763821455, 120553713, 186610154, 134692938, 496236719, 134848855, 101210206, 108705255, 429856611, 166531463, 167777058, 33731518, 41930809, 106385495, 580858116, 629170543, 682795819, 2281265, 147679906, 632608705, 181387896, 175653451, 278805100, 336538393, 659149875, 272720982, 227483985, 77456927, 737096923, 161559647, 268692885, 79984116, 732088932, 610152221, 271833497, 322652246, 238578111, 37967888, 523166422, 728282608, 418610790}
"BABAAAABAABBAAAAABBAABBBBAAABABAAAABABAABABAABBBB"
Returns: 489734666
184164758
{128146070, 32857055, 55624007, 116144704, 141287127, 182976225, 5483916, 132012496}
"AAAAABAB"
Returns: 325637960
791382473
{321091579, 173787466, 199972603, 100109842, 95243002, 80320304, 596055855, 363762797, 508507367, 517037255, 460675789, 692238212, 478682372, 179407935, 178435745, 369316489, 110369697, 163460214}
"BABBAABBABBABBBBAB"
Returns: 888090473
316069204
{66646571}
"A"
Returns: 1
110349704
{4991166, 108613619}
"BB"
Returns: 103622453
599752271
{356025095, 13778347, 243712582, 163044725, 166633166, 89162434, 554752981, 52837716, 1386883, 371668711, 56781293, 570103732, 496021989, 151151455, 357790115, 595647681, 86783383, 385670612, 350386597, 106262372, 226879294}
"BBBABBABBBBBAAAAABBAA"
Returns: 464530208
606688674
{442491372, 381415027, 73720086, 312880720, 149838051, 221388493, 134062666, 290706374, 59112221, 188127551, 208720974, 17240660, 58713580, 578946343, 569852900, 370630168, 32374984, 110638875, 302876575, 83871828, 602427637, 38620025, 216326063, 255924814, 515717481, 34875892, 492177777, 521796157, 11358900, 133895643, 194345250, 287015040, 49838709, 286486758, 150058983}
"AABAAAAABBAABAABBABBAAAAAABBBBBBABA"
Returns: 20506226
763580108
{86609933, 75526096, 745560891, 9954535, 151548131, 650975794, 75027858, 736033994, 118388209, 608515964, 181417708, 307544533, 11685907, 186569463, 210508978, 214380788, 137027999, 487359787, 101751756, 731752503, 503875325, 85337506, 281363187, 213709131, 96677637, 264548342, 78874279, 216622368, 70054345, 61458040, 47709578, 89384907, 83022672, 105233479, 268717323, 155671383, 363475693}
"AABBBABABAAABAABAABBBAABABBBABBBAAABA"
Returns: 350356507
241685445
{92830146, 154687494, 144995766, 78211782, 159478996, 227184110, 95085086, 77761168, 85396948, 172791806, 1858148, 120175914, 207103411, 32870541, 169972894, 116898612, 119672156, 185392029, 112393061, 22627488, 199850218, 171697795, 182148797, 134182602, 104177913, 55647686, 86522586, 13687347, 95313550, 237767080, 77402155, 210963362, 240682309, 168273341, 211431764, 176467892, 49378875, 152007554, 18200619, 5389107, 72978390, 171306321, 70397849, 68957236, 45362766, 141339712, 171701338, 3013257, 22767540, 175532966}
"ABBAAAABABBBABBBABAAABAABBAABABAAABBABBBBBABAAAABA"
Returns: 115783455
424503425
{15984740, 5472963, 272782834, 106999747, 109985130, 25890860, 276220892, 310981990, 346311357, 386500287, 120423330, 91317035, 86576332, 296444094, 312577887, 370491505, 308333660, 310127800, 106305321, 13115941, 402355668, 181931174, 113955220, 362905168, 358629096, 192891749, 242031323, 195308344, 77203322, 102420219, 511253, 156368931, 10578670, 406546636, 50360868, 194463635, 283434618}
"AAABBBBAAABAAAAAAAAAAAABBBAABBABBBABA"
Returns: 682733025
1980822
{838713, 291444, 96967, 625886, 1191100, 1226445, 1532643, 413877}
"BAABAABB"
Returns: 372400205
642669034
{234716369, 245230229}
"AA"
Returns: 1
310445123
{247949164, 267643613, 90372680, 123297906, 123072033, 24571805, 43287547, 122386489, 135693004, 113208390, 75410719, 285999365, 1799214, 232063975, 110590574, 172662480, 14930858, 15961992, 309977381, 76517244, 18761715, 239833005, 71731739, 261387291, 101277805, 200865126, 38830663, 184760626, 128444389, 292909511, 250619718, 48983045, 62574034, 57318188, 206907044, 50933909, 48962749, 42470455, 37095140, 35395817, 14088210, 251400922, 212974443, 169910801, 246000429, 262123444, 296787147, 154524835, 47139913, 11890902}
"BBBBBBABABBAABABBABBBBAABABBBAABAABAABABBAABAABBBB"
Returns: 52479913
626106656
{244922356, 302384540, 247024984, 144532147, 569075073, 305297485, 134480087, 185807586, 509415572, 71548812, 527138493, 496172537, 392829079, 166485156, 264018940, 245100070, 94493885, 83180841, 19363113, 263488829, 591454052, 165903648, 346272016, 350972976, 514828252, 385426583, 58378699, 480912861, 372619901, 154617540, 186447502, 540867521, 224612980, 84603573, 167205963, 323585758, 423434994, 189565623, 193730246, 71118939, 81750468, 551855441, 293754528, 160349251, 213090790, 106155936, 143023098, 177465626, 207070233, 111219030}
"AABBBBABBAABBAAAAAABABAABBBBBABAABAABAABABBBABBAAB"
Returns: 926895074
380404073
{2575063, 195465624, 14732158, 98538374, 45209601, 100458245, 125415235, 17814101, 30256973, 198159879, 366207650, 251177502, 333813459, 107302747, 179008885, 8536907, 229684831, 262735376, 107752169, 163472640, 10874245, 17291530, 1294999, 107924662, 161189561, 216054001, 340298265, 51961446, 79426815, 213082792, 109945577, 278140620, 142427977, 33991698, 66619856, 348065533, 121659065, 60264443, 273840962, 227964408, 242300544, 176228420, 83143495, 60945378, 221819830, 18315070, 59370022, 221315864, 262836969, 12438274}
"ABABAAAABBBAAAAAABBAABAAAAABBABABBBAABABABAABBAABA"
Returns: 119363265
137955521
{23947984, 84510810, 28323348, 76921846, 3030900, 97557108, 68705303, 94208484, 7966192, 48795058, 25470001, 86392228, 35246687, 11138792, 123958350, 98882021, 20982589, 18087286, 15038051, 118992165, 79441272, 7536538, 106900992, 3809931, 37867680, 128057502, 111432574, 111768203, 135139856, 24265804, 86730200, 23827488, 130139113, 20200038, 101439630, 40506089, 35418174, 14456332, 19566007, 87990578, 128389723, 102030564, 129294658, 5783528, 73829021, 67574598, 104697442, 11486522, 108538635, 106223201}
"BBAABBAAAABABBAAAABABBBBBBAABABBAABAABAABAAABAABAB"
Returns: 404971766
329568003
{127933189, 87089602, 105502164, 265595165, 4007935, 226426426, 257452420, 118955715, 192752276, 220526620, 113591125, 132090232, 173608164, 244508778, 78418455, 48767754, 173915379, 138855989, 75107124, 270287720, 93376003, 127697187, 145155086, 176213622, 212744351, 11285553, 57166742, 292597538, 187596505, 306168189, 174242757, 126690180, 36496421, 42300844, 116975591, 7836445, 93158064, 314328541, 244211727, 133198037, 220649043, 175487459, 157010211, 180437016, 250289053, 45504226, 37883098, 279317170, 79988274, 135057157}
"ABBABAAAAABBBABAABAABABAAABBBBABBABBBBBABBABBBBBAA"
Returns: 981839235
888963864
{852792108, 34542731, 61025519, 48513798, 97728174, 155987590, 1222260, 195753754, 397225559, 513061561, 273737198, 207257287, 867410988, 541480974, 482549694, 279905470, 582726386, 145186005, 109482765, 81578658, 604172230, 288389777, 334488610, 740223954, 482929124, 581752182, 547647954, 364028768, 57082911, 329909905, 282819719, 700767934, 70303824, 498195616, 69035285, 343715830, 9479954, 878568106, 54505088, 613062733, 842955840, 718273725, 340638777, 45486813, 696355759, 664710852, 452967900, 58873476, 779241198, 465483744}
"AABBBAAABBAABABABBABBAABBAABBABABBBABAABAABAAABABA"
Returns: 676413904
479263170
{372431964, 255269665, 415479095, 65130325, 463835969, 387783176, 422201690, 88779659, 408282774, 26754418, 450275238, 294521011, 443612618, 474195776, 139054464, 352891626, 405202069, 176481914, 446248793, 289010376, 442790998, 321941951, 224932457, 452944645, 345532342, 45554375, 469124861, 286104062, 145241676, 103009022, 304176087, 170343795, 60455831, 27782388, 351919601, 310801487, 198436980, 21207672, 388351309, 134396673, 378100589, 133623505, 276265192, 299369881, 96642304, 16161974, 116876285, 340193082, 212159032, 31872556}
"AABAABBAAAABBBABBABBBABAAAABBBBBBAABBAABAABABBBAAB"
Returns: 675519615
341427073
{56799305, 257336041, 136919150, 252808159, 44650188, 255526890, 128035885, 305296678, 188094038, 338020995, 81593796, 219943777, 129014896, 286728920, 50397794, 214358977, 190422209, 315412138, 64594631, 105158900, 106015283, 129380597, 79667263, 43435612, 106499482, 47658217, 184483251, 114185634, 214112862, 340833102, 193159902, 53744700, 170716421, 207082146, 198860545, 59742181, 235953712, 324906109, 151936785, 254054120, 267153234, 186008910, 252856477, 193665120, 251898839, 255097776, 241997469, 38680909, 107941893, 177776063}
"BBBABBABAAAAABBBABBBAABAAABAABBAABBAABABABBABABBAA"
Returns: 320313734
465348635
{150386674, 63607527, 246233297, 253968436, 324321091, 41339589, 369073329, 116887438, 44575920, 240388074, 322681615, 184702519, 145188040, 230388565, 269786848, 419237759, 101725593, 260584487, 384113310, 344588141, 197014091, 7904269, 91483312, 315041313, 260465819, 380080061, 249204304, 72586052, 87157060, 171920600, 230565464, 352133377, 267999689, 248274126, 315708599, 10552713, 364022968, 67169044, 124507790, 25458789, 292186699, 346318152, 185040979, 72077224, 126276054, 186753696, 423705287, 414190807, 178526621, 346926066}
"BABABABAAABABBABAAAABBBABBBBABBABBBAABABAAAAAABAAA"
Returns: 158230579
660296476
{571831017, 267151389, 294264626, 70498169, 17016337, 196533567, 53935933, 126622305, 639600838, 31856008, 431970280, 406797884, 83757324, 457213934, 69793129, 274235322, 121554245, 315439047, 90994579, 472182807, 191479274, 650174740, 49471965, 253633169, 399409293, 274372000, 264332464, 292587655, 102229367, 92263084, 232373140, 627646553, 12720478, 296840164, 73846167, 164896013, 189598804, 199910264, 527390720, 101694710, 190783359, 334610643, 245063931, 237134131, 145413792, 289475453, 32525061, 448967477, 256750345, 245949232}
"ABBBBBABBABABABAAAABAABABBBABAABAAAAAABABBBAABAABB"
Returns: 225531052
1000000000
{517092011, 489003272, 271403766, 170615214, 765355061, 627919390, 445263878, 454186492, 886606358, 769647578, 681506133, 443092010, 403212602, 954482641, 835962443, 594970334, 946573950, 775246575, 911151624, 754643679, 623323012, 807168421, 148614871, 247748929, 673751635, 26662934, 378257263, 30814820, 875764663, 172987296, 163780356, 813020803, 831217376, 118498394, 533019207, 920937956, 41122678, 737609074, 658765365, 10826793, 81806346, 492064306, 182944435, 953416061, 84965417, 361716035, 707321105, 880495127, 411033624, 418835900}
"BBAABABAABBBAABBAABABBAABAAAAAAAAAABABABAAABAAAAAA"
Returns: 762325815
1000000000
{525785606, 529602084, 945986225, 613433603, 653390000, 66135378, 412958991, 611517857, 965144006, 160144397, 60223289, 168419135, 854250858, 170271793, 136802015, 912254918, 309393131, 571207756, 934643741, 803576776, 784060982, 809990497, 982806330, 633195715, 348869152, 835820355, 455525780, 45741293, 312686621, 720838902, 12866612, 351932949, 835635601, 411954372, 162852737, 825765060, 47685483, 381650964, 509499293, 299222761, 781269606, 932910036, 946776887, 766594486, 353318285, 732497912, 554354853, 788519219, 269935442, 416215912}
"BAAAAAAAABABBBAABABBBAABBBBABABBABABBAABBBAABABAAB"
Returns: 211379004
1000000000
{834917290, 693642977, 427540141, 984155976, 470033287, 638264139, 476510634, 496532157, 647186368, 315214763, 638858785, 81471778, 778209974, 483214415, 257055424, 244978223, 353869996, 862472297, 292850462, 167228611, 825007778, 294221159, 311121123, 79038187, 642514788, 427765796, 726293191, 898232890, 6173499, 276025702, 175686094, 794232010, 394686045, 263209206, 735142920, 705431036, 921709417, 86414227, 953128148, 310429172, 401027543, 293262367, 488539129, 216928872, 507021413, 477700368, 897371586, 112867521, 371853299, 130223825}
"AAABABABBABABBBABAABBBBAABAABABABBABBABBBBBBBBBAAA"
Returns: 402325993
1000000000
{499152934, 754768905, 766947314, 292712041, 635733975, 487629292, 131158503, 63184995, 831431317, 797971515, 702625695, 207883533, 736418317, 863724506, 856795272, 851044934, 614600718, 935298247, 130552661, 659427623, 271918669, 588962856, 514380969, 457191379, 738860531, 698543874, 866839270, 896181462, 350100808, 939634534, 668175567, 917403922, 492546609, 41239039, 597526362, 277444708, 447202780, 483565960, 625400721, 598120565, 822422791, 942854539, 481158146, 145390107, 278737489, 334540592, 127088817, 57635391, 115644164, 983962737}
"ABABAABABABBABBBBAABAABBAAAABBBBBBABAAABBBAAABBBAA"
Returns: 314796287
1000000000
{715417099, 224519290, 523582873, 133214885, 48288638, 468917238, 138484677, 124150782, 304147587, 337601923, 705012544, 663138488, 176333181, 63528891, 645778451, 919647846, 8020221, 203968138, 297856573, 892851596, 59059215, 187968558, 688178341, 361495692, 614468133, 915448287, 687141986, 602688507, 355689659, 826050948, 447871839, 867483686, 87502108, 100079444, 239073247, 846203014, 449755229, 721052437, 599490633, 392571285, 265903898, 693546746, 659253393, 637054750, 634553223, 417359946, 444324631, 440819366, 535347460, 151696197}
"BBAAABABBAAAAAAAABABAAABABABABABABABBBAABBBBABAABB"
Returns: 429275451
821219580
{203579236, 372047413, 7112772, 112328655, 460580904, 268909010, 502214549, 595615865, 105812944, 139691806, 338319175, 101204073, 247389383, 616411976, 130082658, 39300740, 555085952, 529774418, 363872056, 91856540, 565808704, 466963901, 313008094, 362391157, 404704796, 783861144, 398006595, 792756660, 131611523, 597148590, 131563937, 398416105, 157592452, 123795570, 475847493, 287848770, 575164179, 33343779, 736888653, 546276208, 49459738, 436564150, 130167235, 3235671, 140717359, 8096564, 384633062, 635613411, 500118650, 135047671}
"BBBBBBBABBBBBBBBABBBABBBBBBBBABBBBABBABABABABBBBBB"
Returns: 62741143
244316589
{135260273, 1070676, 227264888, 210206948, 49335650, 15100435, 108540440, 81586193, 143776945, 160764457, 238586867, 148763161, 85854458, 169900468, 48546708, 227322653, 22542950, 198219570, 192795847, 16399530, 94088822, 192806530, 5105162, 150154822, 51847360, 59991887, 147020513, 200732080, 46400, 145604011, 135527446, 88714282, 118529560, 13549009, 57361226, 27824560, 16382389, 55540825, 61088010, 40902587, 159785634, 188683057, 70037395, 140821613, 19236959, 217182692, 32095354, 232721778, 62817531, 179939598}
"ABAAAAAAAAABAAAAABAABAAAAAAAAAAAABBAABBAAAAAAABAAA"
Returns: 470915233
645912840
{162400449, 634279468, 237711933, 348944364, 321684945, 86640619, 333976971, 33940696, 615468336, 55110443, 31286813, 81344855, 623638043, 190336762, 339974535, 156194761, 476071913, 92000467, 287018112, 152623412, 642058980, 350789047, 152831857, 629247602, 481166259, 35330834, 356096053, 67603201, 282037790, 18374668, 37244434, 298767599, 607125146, 80034815, 237408342, 536305970, 200783891, 126399299, 505943160, 249751969, 200961783, 418932344, 115089638, 139035910, 449756653, 120566322, 22187404, 453289711, 144536984, 299751679}
"AABAAAAAAAAAAAAABBBABAAAAAABAAAAAABAAAAAAABAABAAAB"
Returns: 556512952
671641021
{343682443, 535015295, 587940826, 257183806, 460022931, 561620065, 264001026, 285365975, 498771247, 661388268, 147041309, 4346407, 72306344, 291773229, 613724820, 36621492, 390398140, 492451257, 584011940, 263665066, 421542743, 131534422, 76208874, 161788749, 229393742, 501543983, 85264020, 217933838, 33351266, 184986444, 110950590, 434300189, 156096655, 243060029, 238639463, 248463020, 182705466, 381099857, 201201841, 205303136, 546778922, 66086279, 289696451, 269163686, 343278029, 163109056, 565247551, 334478466, 217742900, 137410499}
"BBBABBBBBBBBBAABAABBBBBBBABABBABBBBBBBBBBBBBBBBBBB"
Returns: 691301306
534435074
{375565286, 99210212, 281158196, 431092763, 6514861, 260368694, 369836674, 134538532, 139878248, 187158592, 215556472, 274940176, 90631764, 320343533, 269031772, 336531345, 204771193, 134778596, 466452136, 75931898, 85812866, 208623352, 497733003, 315840618, 233438088, 79771720, 150771338, 305925533, 48290230, 129735500, 252578076, 105200793, 102499691, 49736482, 123842978, 221942868, 1926837, 147206613, 294870017, 403805009, 450966732, 119270266, 475549962, 163617674, 239780893, 449441272, 219138079, 216679591, 81159366, 187520430}
"AABBBBBAAABABBBBAABABBBBBABBBBBAABBBBBBAABBBBAAABA"
Returns: 223976758
694781277
{321848742, 590264640, 337167294, 229604190, 244734653, 115122206, 186564983, 396751055, 142846777, 457525682, 71198310, 21474143, 402613324, 100187285, 573701020, 381353065, 155583449, 172522078, 141931154, 643595397, 373816470, 96850137, 193982064, 209539005, 378657501, 400036852, 455732967, 535401716, 138936725, 204005642, 329251908, 550543674, 165930020, 76981238, 386081110, 18598943, 106627491, 169177757, 633567317, 166500489, 12291514, 281529394, 240074212, 71889462, 255976237, 187734786, 269273565, 44227882, 267482061, 92932357}
"AABBABABBBABBBBBBBABBBABBBBBBABABBAABBABBABABBBBBB"
Returns: 866681551
776991419
{92951399, 435247544, 772036716, 207697597, 231801853, 104227147, 274112986, 703749337, 776092422, 389837001, 698758116, 389037352, 718495832, 60070601, 617575360, 175065109, 179956060, 633843396, 274900128, 612664327, 321526371, 157803757, 250872343, 310239603, 68984427, 358302199, 117699105, 176072992, 42232586, 253505003, 108651634, 387283161, 212925482, 251088560, 439281666, 204583685, 687628333, 695372690, 774162908, 38181737, 191714545, 48436578, 87866315, 151981300, 485466025, 453323725, 193859886, 739428129, 94590199, 111304893}
"BBBBBABBBABBABBBABABBBBBBBBBBBABBBBABBBBABABBBBBAB"
Returns: 748238240
79798979
{9317696, 72200344, 27430849, 55122990, 77025078, 9075227, 21954580, 13432539, 46876573, 75952746, 72961746, 35884365, 17939560, 52130485, 38037406, 70632058, 18681361, 30937829, 55902119, 47417361, 24316806, 27598913, 12093554, 61748388, 22163275, 185032, 72309067, 18442081, 60738061, 2646967, 14827085, 73563286, 38787222, 59440207, 5536212, 64242944, 2771563, 71106105, 37633138, 78295760, 46549632, 53809151, 17769479, 64217338, 5212118, 40606466, 50555920, 30468267, 14020497, 55041836}
"AAAAABABABBABAAAAABBAAAAABAAABAAAAAAAAAAAAAAAAABAA"
Returns: 654315280
191704801
{154650737, 156989677, 7661136, 107418984, 155816197, 180764978, 39012860, 153603402, 107610621, 154577000, 128572709, 112237918, 140327523, 106208235, 150462533, 116393411, 73257662, 57839320, 176938781, 89337395, 37042857, 175558245, 32780172, 141750738, 48033061, 148618832, 101728758, 85067784, 5581092, 124337402, 7944158, 42077373, 105416290, 69878750, 11210473, 103896836, 49045438, 91472246, 11922021, 26874559, 83236144, 13002011, 63875539, 130663506, 168986021, 94055071, 43751996, 162816835, 162721903, 175834431}
"ABAAABAAABABBBAAAAAAAAAAAAAAAAAAAAAABAABAAAAAAAABA"
Returns: 740991053
913005517
{743263155, 167569255, 390099841, 131921633, 885901156, 750513087, 568926366, 830423004, 445861423, 335604686, 592049538, 496152302, 196873394, 503099048, 79431083, 746721027, 734604824, 206564475, 332155019, 799772474, 579485390, 137451780, 361954091, 896563928, 42450453, 85955558, 92888954, 564113281, 900327584, 818756932, 151785817, 659050374, 331104094, 502204786, 526996257, 461062009, 821661270, 297542183, 64985894, 132001409, 196453707, 820167457, 485371087, 183745129, 233016828, 67330168, 291461530, 887964686, 4173144, 840121561}
"BBBABBBBABBBABBBABBBBBBABBBBBBBBBBBBABBBBBBABBBBBB"
Returns: 54224946
726129956
{629736771, 49281044, 486045217, 267780836, 159245849, 23852464, 234258645, 309096015, 614329552, 200755635, 66509624, 311942542, 52257371, 5099340, 675022345, 10755209, 681342262, 504506514, 195390075, 659735954, 492938442, 588736669, 6229088, 283281559, 344576326, 161367150, 648378242, 234717249, 343130345, 639739354, 231466759, 151001754, 257218938, 207809782, 232736975, 38394608, 69127149, 701797771, 157590201, 10741461, 80131611, 4937403, 420918775, 308781117, 165055837, 235777979, 18605552, 243433456, 45500921, 17552370}
"BBBBABBABBBBBBBBABBBBBBBBBBBBBBBBBBBBBBBAABBBBBBBB"
Returns: 579670453
996926943
{565217267, 898581537, 14003868, 788147694, 57904083, 337179967, 150723347, 503033443, 81993513, 744591785, 668458487, 715616327, 10848702, 704065986, 763609521, 200716069, 357331488, 668885957, 358352179, 60949852, 178181230, 902804343, 372781889, 381222286, 818647298, 638313422, 891313239, 419851227, 217509969, 768278237, 938575632, 847319822, 762379582, 774773466, 892479886, 943729370, 616823892, 228800187, 90371340, 648231900, 51507829, 647828091, 532233724, 282612313, 588612490, 172009505, 51652666, 955292388, 709936734, 864265877}
"BBBBABBBABBBBBBBBBBABBBBBBAAABBBBBBBBBBBBBBBBBBBBB"
Returns: 646147384
397054162
{29540271, 40224947, 2327455, 278199081, 282563926, 344387413, 334000410, 192863968, 360805746, 11360884, 184735684, 395398274, 32686950, 21942827, 110766144, 273996375, 177234864, 368605160, 170295619, 179555700, 144975528, 38450396, 251042038, 61528485, 80910346, 36194824, 200294413, 314770032, 208225941, 84444794, 177671152, 249413914, 52285837, 171434200, 158329596, 127104463, 373400271, 194076644, 131267486, 81322691, 298976694, 77823875, 120910451, 175612296, 263501522, 52880864, 172511324, 16685196, 97094058, 305116223}
"AAAAAAAAAAABAAAAAAAAAABAAAAABABAAAAAAAAAAAAAAABAAB"
Returns: 40588747
690983945
{224165725, 686003951, 34576920, 431228902, 187228959, 254216597, 116002911, 58459562, 88336296, 12386672, 77765467, 547523482, 136820311, 125973273, 98873541, 35634757, 317708275, 639192096, 675187851, 8277017, 317922213, 108247403, 180143271, 89459813, 74934044, 2343813, 282996294, 591316126, 204155444, 107626589, 111156433, 10773826, 1896141, 514428197, 310066936, 627176429, 2380995, 68296645, 623125026, 10342205, 373223644, 31947018, 118540643, 25786124, 171452405, 500572661, 129237275, 279679177, 243761991, 263606209}
"BABAABAAAAABBAAABABBAAAAAABAAAAAAAABBAAAAABAAAAAAA"
Returns: 182108529
510200742
{421886993, 385089106, 149272829, 227876685, 247490628, 465968532, 266434088, 53661641, 432045489, 40068430, 19189366, 508603188, 447129521, 504238653, 169286616, 207071565, 227602832, 235183888, 291138983, 314771996, 38021877, 451880016, 374826325, 40745162, 370537733, 173362277, 267483154, 379141178, 137110675, 45519044, 460426161, 60225517, 339063199, 467873777, 219796397, 314559284, 114325434, 477523621, 450193766, 194167712, 68574673, 42882413, 290635794, 169417752, 391654068, 257659818, 315242391, 315072231, 264738712, 39605876}
"AAAAAAAAAAAAABAAAAAAABBAAAAABABAAAAAAAAAABBAAAAAAA"
Returns: 794155255
635323936
{327693407, 363686704, 40470545, 298533489, 350981581, 350834741, 90287958, 221989696, 597572856, 223387449, 106739553, 100082275, 552718325, 583386806, 260636416, 123348684, 331679617, 159335498, 572825173, 49183542, 311575413, 330396232, 40815923, 429612632, 314314051, 391278949, 175297000, 64337314, 143763386, 599419508, 281919411, 170731707, 301813333, 76982442, 320927719, 214773515, 271137788, 258965687, 518264543, 148525690, 291828425, 219637954, 530853667, 196642648, 378649521, 587069679, 278426115, 330672961, 86477499, 379315685}
"AAAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAABA"
Returns: 52306373
548221584
{27367975, 210428039, 292029877, 80138340, 165095832, 133846804, 370362819, 61198595, 420718082, 530105416, 114912810, 266074783, 456777795, 178664795, 30967305, 230655293, 190505072, 419061295, 268688702, 200049887, 340478780, 400817403, 172390025, 491296848, 408770624, 266609003, 43269164, 312754867, 134303055, 429309986, 491735497, 90474284, 118660728, 219241260, 32837243, 105014124, 360781774, 342479929, 201583563, 162812243, 20322220, 397820994, 279084698, 468606969, 315949608, 130803919, 529790030, 309451545, 696277, 87929632}
"BABBBBBBBBBBBBABBBBBBBBBBBBBBBBABBBBBBBABBBBBBBBBB"
Returns: 722516714
350656437
{19404489, 139786278, 307741856, 27313628, 119733273, 46384005, 3835914, 336545767, 306049037, 301582626, 168580389, 27188999, 172406635, 160597145, 182833655, 10568411, 222046400, 311284250, 107743769, 1223902, 107317063, 176766731, 269465365, 222255900, 122485303, 217291863, 146701857, 304548786, 289789230, 65867981, 3128919, 314300974, 216570350, 45010196, 23321643, 15264679, 102685489, 2681910, 71347852, 183468398, 277417076, 191786488, 215277516, 263646161, 202086136, 22310748, 82412409, 327635956, 309858214, 127999396}
"AAAABAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAA"
Returns: 595283636
986361947
{608479464, 174439753, 730051029, 716531466, 541305222, 745957014, 837221162, 811939256, 178836942, 810734046, 718750081, 280844793, 74310594, 367661731, 821034325, 66464728, 889057813, 562360874, 304927332, 784901261, 104641411, 387934486, 454470258, 325238050, 908902126, 262713354, 305639883, 138657011, 20041208, 590709777, 141749829, 3541129, 611164576, 552533138, 122555350, 471164415, 471268683, 422957470, 490608602, 537237316, 12836899, 645998454, 223685086, 563844873, 780177365, 381176609, 176775744, 874470774, 645307441, 920627902}
"BBBBBBBBBBBBBABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBABBBB"
Returns: 977249998
226372198
{16697199, 69636159, 125280809, 210952004, 91546687, 114469294, 151051742, 15114804, 109589662, 94445420, 148878569, 54811118, 45038606, 163996455, 84843982, 28407110, 108512577, 45126017, 26819428, 98626377, 144340564, 30836554, 187899302, 37823060, 198508062, 22230770, 143814272, 115106355, 80914749, 34122183, 49502346, 55574356, 49888266, 19630028, 177996648, 47327013, 32687586, 78167654, 32283821, 63477103, 73745828, 4915319, 25664005, 219945172, 60149073, 23642814, 194930186, 118002876, 126286284, 179734646}
"BABBAAAAAAAAABAABAAAAABBAAAAAAAAAAAAAAAAAABAAAAAAA"
Returns: 231561902
66865945
{64553273, 3483469, 10489479, 10105102, 29699801, 2234049, 20635584, 50364488, 14944532, 45876816, 1777371, 136725, 61854120, 8995103, 11408646, 5542083, 41874702, 12660277, 29805568, 5904445, 33107506, 33111550, 56942548, 34368348, 35345040, 24053526, 36016374, 65264818, 37460732, 38238526, 61173001, 1243756, 43291399, 948292, 27596307, 3777695, 19441194, 11455313, 49436965, 37225969, 46223491, 630829, 2162045, 22340663, 66697594, 56578200, 6963905, 5440321, 10404267, 18413909}
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: 234928377
400695411
{124431584, 37220045, 334803631, 244160645, 391572863, 293309153, 54427407, 4692324, 352935870, 90204235, 182992504, 81401366, 295041206, 234594188, 69933939, 183807993, 140646722, 63362297, 67856271, 94885390, 59263356, 42506761, 18275394, 13579473, 192656704, 15156291, 57313969, 368456645, 18516561, 373347520, 239591352, 13231814, 84574408, 263262904, 274128530, 314359829, 158626062, 96805875, 16134031, 95762454, 82321293, 204274970, 326376390, 59335586, 14535396, 55086663, 100883757, 246851049, 29651990, 267244116}
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBABBBBBBBBBBBBBBBBAB"
Returns: 471198248
397111288
{99526153, 88643871, 362561918, 127338740, 65401589, 162405214, 52723504, 80573469, 287098323, 383154134, 343182562, 266399736, 338006960, 125589552, 32025643, 305147052, 323684132, 200509619, 203398190, 321577066, 36944655, 171974747, 100697822, 340209695, 102252646, 1170541, 302544617, 90829291, 347558173, 360271943, 193689888, 200718436, 80327994, 856801, 88397577, 141196724, 211717306, 197460826, 67864297, 114449851, 110300550, 127230426, 73659400, 246552214, 277413267, 353734472, 145643316, 395697826, 180485584, 374891628}
"ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBABBBBBBBB"
Returns: 430590527
22043863
{12275368, 20813599, 17478967, 7051124, 19818564, 8149325, 18123683, 1954627, 13076441, 11273064, 3316119, 13899312, 16038963, 21337879, 19979848, 8111684, 10198785, 17500688, 18477628, 3360430, 287887, 20668532, 11969794, 14608349, 15716207, 19570147, 104092, 8674473, 9723414, 3821730, 18917049, 20564540, 12844961, 2835804, 6486050, 9299506, 20207809, 6967336, 18567051, 13053623, 3880369, 10483218, 6991720, 7823451, 13027999, 16895729, 3109691, 21197815, 19844785, 16658084}
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 947844445
844176597
{74259114, 266309242, 328820828, 636564234, 80443605, 799015174, 749918764, 65024609, 608271212, 726019101, 466222283, 94643791, 385507293, 465130755, 451067432, 478797190, 265092565, 406099431, 842982348, 80513015, 141996027, 199929388, 841754649, 165882314, 812340459, 634312398, 1411780, 202093501, 331896137, 484281273, 383283317, 540225065, 23115322, 68640819, 447425781, 142216190, 7967612, 35665798, 70166162, 68244707, 262590057, 313728300, 386597836, 547199931, 586091636, 812894105, 520962013, 544456529, 242889559, 567121223}
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: 570265605
1000000000
{1 }
"A"
Returns: 1
1000000000
{1, 4, 9, 666666676, 666666695 }
"AAAAA"
Returns: 999998772
999999937
{1, 100, 199, 298, 397, 496, 595, 694, 793, 892, 991 }
"AAAAAAAAAAA"
Returns: 813000932
1000000000
{144864215, 606890938, 515186394, 619166931, 137829291, 476482188, 546028738, 65328853, 141317675, 252027797, 617175580, 735032056, 339076268, 429405437, 318109230, 92687459, 57085071, 201605398, 989558526, 301530161, 730824538, 821402287, 292637569, 500548581, 728991265, 918038794, 291601593, 207175922, 783456723, 136734878, 264826313, 621450441, 448412726, 140268827, 455061338, 819488683, 897175352, 899025075, 480485532, 651391635, 419920439, 878539121, 485361168, 265282063, 358561077, 145571076, 387894123, 754385905, 391938827, 246505362 }
"ABBBBABBBBBBAAAAAABAAABAABBBAABABAABBAAAABBAABBAAB"
Returns: 122613046
100000000
{1, 1000000, 10000001 }
"AAA"
Returns: 991937006
10000000
{1, 1000001, 2000001 }
"ABA"
Returns: 999993007
4
{1, 4 }
"BB"
Returns: 3
1000000000
{1, 1000000, 2000000, 3000000, 4000000, 5000000, 6000000, 7000000, 80000001, 90000001 }
"ABABABBAAB"
Returns: 730011746
1000000000
{3 }
"A"
Returns: 1
1000000000
{1, 3 }
"AB"
Returns: 2
1000000000
{1000000000, 750000000, 500000000, 304289384, 181692778, 457747794, 219885387, 96516650, 25202363, 283368691, 44897764, 365180541, 304089173, 35005212, 294702568, 336465783, 278722863, 145174068, 101513930, 315634023, 369133070, 59961394, 128175012, 131176230, 359484422, 108413785, 234575199, 149798316, 129566414, 412776092, 411759957, 137806863, 482906997, 11702306, 437477085, 72660337, 305750847, 100661314, 141616125, 439819583, 498898815, 110515435, 374344044, 477171088, 445117277, 280695789, 491705404, 252392755, 53999933, 411549677 }
"ABBABBABBBAAAABABBAABAABBBAAAABABBBBBBBBBAAAAABBAA"
Returns: 572228088
1000000000
{1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 85, 88, 91, 94, 97, 100 }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: 527642103
990000001
{1, 20000001, 40000001, 60000001, 80000001, 100000001, 120000001, 140000001, 160000001, 180000001, 200000001, 220000001, 240000001, 260000001, 280000001, 300000001, 320000001, 340000001, 360000001, 380000001, 400000001, 420000001, 440000001, 460000001, 480000001, 500000001, 520000001, 540000001, 560000001, 580000001, 600000001, 620000001, 640000001, 660000001, 680000001, 700000001, 720000001, 740000001, 760000001, 780000001, 800000001, 820000001, 840000001, 860000001, 880000001, 900000001, 920000001, 940000001, 960000001, 980000001 }
"ABABABABABABABABABABABABABABABABABABABABABABABABAB"
Returns: 412084628
1000000000
{33333333, 44444444, 888888888 }
"ABA"
Returns: 844444444
305
{183, 115, 250, 1, 188, 193, 163, 221, 144, 191, 92, 192, 58, 215, 157, 187, 227, 177, 206, 15, 272, 232, 49, 11, 178, 59, 189, 246 }
"ABAABBABBAABABBBBAAAABBABBBA"
Returns: 43068480
1000000000
{1, 20000001, 40000001, 60000001, 80000001, 100000001, 120000001, 140000001, 160000001, 180000001, 200000001, 220000001, 240000001, 260000001, 280000001, 300000001, 320000001, 340000001, 360000001, 380000001, 400000001, 420000001, 440000001, 460000001, 500000000, 520000001, 540000002, 560000003, 580000004, 600000005, 620000006, 640000007, 660000008, 680000009, 700000010, 720000011, 740000012, 760000013, 780000014, 800000015, 820000016, 840000017, 860000018, 880000019, 900000020, 920000021, 940000022, 960000023, 980000024 }
"ABABABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: 927752114
1000000000
{1, 500000000, 999999999 }
"AAA"
Returns: 250000022
1000000000
{2, 1, 3, 4, 500003, 999999998 }
"ABBAAA"
Returns: 994501769