Problem Statement
Manao is currently working on the background which should be filled with N mountains (1 <= N <= 10). The mountains are numbered from 0 to N-1. The contents of the screen are stored in an array of characters pix where pix[x, y] gives the contents of the pixel at column x, row y. Both indices are 0-based. Columns are numbered left to right and rows are numbered bottom to top. The parts of the screen where the i-th mountain is visible are denoted by digit i. Character '.' means that the corresponding pixel is not covered by any mountains.
The i-th (0-based index) mountain is described by its peak position (X[i], Y[i]), 0 <= X[i] < W, 0 <= Y[i] < H. In order to draw the mountains, the following pseudocode is used:
Fill all elements of pix with '.' characters.
For 0 <= i < N:
For 0 <= x < W:
For 0 <= y <= Y[i] - |x - X[i]|:
pix[x, y] := i + '0'
For example, consider three mountains with peaks at (1, 1), (2, 2) and (4, 1). Once these mountains are drawn on a screen with H = 3, W = 6, the resulting picture will look as follows:
..1... .1112. 111222
Manao has recently filled the background with N mountains as described above. After that he wrote down the height of each mountain. Also, for each column he wrote down which mountains were visible at that column. You are given a
Count the number of sequences of exactly N mountains that match the information given by heights and visibility. Return this number modulo 1,000,000,009. It is guaranteed that there exists at least one such sequence.
Definition
- Class:
- Mountains
- Method:
- countPlacements
- Parameters:
- int[], String[]
- Returns:
- int
- Method signature:
- int countPlacements(int[] heights, String[] visibility)
- (be sure your method is public)
Notes
- The value of H is not directly given in the input parameters. For the purposes of this problem, you can assume that H is equal to the largest element of heights.
Constraints
- heights will contain between 1 and 10 elements, inclusive.
- Each element of heights will be between 1 and 50, inclusive.
- visibility will contain the same number of elements as heights.
- Each element of visibility will be between 1 and 50 characters long, inclusive.
- All elements of visibility will be of the same length.
- Each element of visibility will consist of 'X' and '-' characters only.
- At least one sequence of mountains matching the given information will exist.
Examples
{2, 3, 2}
{"------", "XXXX--", "---XXX"}
Returns: 4
The given information corresponds to the three mountains from the problem statement. Mountains 1 and 2 are uniquely determined. Mountain 0 can have the peak in each column from 1 to 4.
{4, 3, 4}
{"XXXXX--------", "----------XXX", "----XXXXXXX--"}
Returns: 4
The four possible mountain sequences are: (2, 3), (10, 2), (7, 3) (2, 3), (11, 2), (7, 3) (3, 3), (10, 2), (7, 3) (3, 3), (11, 2), (7, 3) After drawing these sequences, the following pictures are obtained: ..0....2..... ..0....2..... ...0...2..... ...0...2..... .000..222.1.. .000..222..1. ..000.222.1.. ..000.222..1. 000002222211. 0000022222111 .00002222211. .000022222111 0000222222211 0000222222211 0000222222211 0000222222211
{13, 2, 3, 2}
{"XXXXXXXXX", "-XXX-----", "----XXXXX", "-----XXX-"}
Returns: 9
{8, 2, 9, 3, 10}
{"X------", "-------", "------X", "-------", "XXXXXXX"}
Returns: 98
{20, 20, 20, 20, 20, 20, 45, 50, 49, 50}
{"-------------------", "-------------------", "-------------------", "-------------------", "-------------------", "-------------------", "-------------------", "------------XXXXXXX", "XXXXXXX------------", "XXXXXXXXXXXXXXXXXXX"}
Returns: 973726691
{19,17,16,17,16,16,16}
{"-------XXXXX---", "-------------XX", "-----------XXXX", "XXX------------", "XXXXX----------", "--------XXXXXXX", "XXXXXXXXXXXXXXX"}
Returns: 16
{18,19,19,19,18,17,18,18,16}
{"XXX------------", "---XXXX--------", "-------------XX", "----------XX---", "-----------XXXX", "XXX------------", "---------XXXXXX", "-----XXXXXXXXXX", "XXXXXXXXXXXXXXX"}
Returns: 32
{42, 40, 47, 49, 48, 50, 48, 48, 47, 50}
{"--------------------------------------------------", "--------------------------------------------------", "XXXXX---------------------------------------------", "--------------------------------------------XXXXXX", "XXXXXXXXXX----------------------------------------", "XXXXXXXXXXXXXXXX----------------------------------", "--------------------------------------XXXXXXXXXXXX", "--------------------------------------------------", "-----------------------------XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 2147405
{48, 47, 49, 45, 48, 47, 47, 47, 46, 48}
{"--------------------------------------------------", "--------------------------------------------------", "XXXXXXX-------------------------------------------", "--------------------------------------------------", "XXXXXXXXXXXXXX------------------------------------", "XXXXXXXXXXXXXXXXXXXXXX----------------------------", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-------------------", "---------------------------------------------XXXXX", "-----------------------------------------XXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 496271
{50, 47, 48, 49, 49, 49, 49, 49, 50, 49}
{"----XXXXX-----------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------XXXXXX", "------------------------------------XXXXXXXXXXXXXX", "----------------------------XXXXXXXXXXXXXXXXXXXXXX", "----------------------XXXXXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXX------------------------------------------", "---------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 74907
{1, 1, 1, 1, 1, 1, 1, 1, 1, 50}
{"--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 121093759
{50, 46, 43, 38, 34, 31, 28, 22, 18, 14}
{"XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX"}
Returns: 191234210
{50, 50, 50, 50, 50}
{"XX-----------------------", "---------------------XXXX", "XXXXXXXXX----------------", "-----------------XXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 29
{50, 50, 50, 50, 50}
{"XX-----------------------", "---------------------XXXX", "XXXX---------------------", "--------------XXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 1
{50, 50}
{"--------------------------------------------------", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 50
{50, 50, 50, 50, 50, 50, 50, 50, 50, 50}
{"XX------------------------------------------------", "XXXX----------------------------------------------", "-----------------------------------------------XXX", "XXXXXXX-------------------------------------------", "XXXXXXXXXXXXX-------------------------------------", "XXXXXXXXXXXXXXXXXXX-------------------------------", "--------------------------------------------XXXXXX", "-----------------------------------XXXXXXXXXXXXXXX", "-------------------------XXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 384
{11,45,28,19,3,28,37,25,50}
{"---------------------------------------------","---------------------------------------------","---------------------------------------------","---------------------------------------------","---------------------------------------------","---------------------------------------------","XXXXXXXXXX-----------------------------------","---------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 619801388
{45,38,32,4,22,19,7}
{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXX---------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX---------","-------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXX---------------","-----------------XXXXXXXXXXXXXXXXXXXXXXXXXX","---------------------------------XXXXXXXXXX"}
Returns: 1032
{26,6,18,5,34,2,5}
{"----------------------------------------","----------------------------------------","----------------------------------------","---------------------------------XXX----","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----","--------------------------------XXX-----","-----------------------------------XXXXX"}
Returns: 6479
{11}
{"-----------------------XXXXXXXXXXXXXXXX"}
Returns: 1
{31,42}
{"---------------------XXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 19
{15,48,21,8,39,24,16}
{"------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","------------------------------------","------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX---","XXXXXXXXXXXXXXXXXX------------------"}
Returns: 14243820
{38,45,36,21,42,32,26}
{"------------------------------------","--------------XXXXXXXXXXXXXXXXXXXXXX","-------------------------XXXXXXXXXXX","------------------------------------","XXXXXXXXXXXXXXXXXX------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----","------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 6120
{46,14,14,38,7,20,33}
{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","------------------------------------------","------------------------------------------","-------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXX","----------------------------------------XX","------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 3762612
{2,5,5,20,7,6,24,42,34}
{"-----------------------------------------------","-----------------------------------------------","-----------------------------------------------","-----------------------------------------------","-----------------------------------------------","-----------------------------------------------","-----------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXX------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 728152763
{26,12}
{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","----------XXXXXXXXXXXXXXXXXXXXXX"}
Returns: 18
{43,36,50,50,30,16}
{"XXXXXXXXXXXXXXX------------------------","XXXXXXXXXX-----------------------------","------------------------------XXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","----------------XXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 480
{10,11,27,34,30,50,49,40,25}
{"---------------------------------------","---------------------------------------","---------------------------------------","---------------------------------------","---------------------------------------","-----------------------XXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX------"}
Returns: 311531415
{9,44,21,50,20,14}
{"-------------------------------------------------","------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----","-------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX----------","------------------------------------XXXXXXXXXXXXX","----------------XXXXXXXXXXXXXXXXXXXXXXXXXXX------"}
Returns: 5929
{30,24}
{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 176
{43,29,46,27,36,38,42}
{"---------------XXXXXXX--------------------------","------------------------------------------------","-----------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","------------------------------------------------","-----------------------XXXXXXXXXXXXXXXXXXXXXXXXX","----------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----"}
Returns: 13873
{7,22,31,34,47,28,41,6,40}
{"-------------------------------------------","-------------------------------------------","-------------------------------------------","-------------------------------------------","-----------------XXXXXXXXXXXXXXXXXXXXX-----","-------------------------------------------","--------------------------XXXXXXXXXXXXXXXXX","-------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 565718445
{4,31,19,31,9,38}
{"-----------------------------------","------------------------XXXXXXXXXXX","-----------------------------------","-----------------------------------","-----------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 12186300
{23,14,49,41,15,41}
{"------------------------------------------------","------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXX-------------------","----------------------------XXXXXXXXXXXXXXXXXXXX","--------------------------------------------XXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 73728
{3,46,50}
{"--------------------------------------","-----------XXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 494
{27,21,42,1,17}
{"---------------------------------------","---------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","---------------------------------------","XXXXXXXXXXXXXXXXXXXXXX-----------------"}
Returns: 583550
{29,47,39,23}
{"------------------------------------------------","-------------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX---------------"}
Returns: 77
{26,49,5,34,13,46,35,28}
{"-----------------------------------","--------------XXXXXXXXXXXXXXXXXXXXX","-----------------------------------","-----------------------------------","-----------------------------------","XXXXXXXXXXXXXXXXXXXX---------------","----------------XXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 45704750
{35,25,45,24,40,1,16,28,15,44}
{"--------------XXXXX-------------------------","--------------------------------------------","--------------------------------XXXXXXXXXXXX","--------------------------------------------","XXXXXXXXXXXXXXXX----------------------------","--------------------------------------------","--------------------------------------------","--------------------------------------------","--------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 199451580
{45,43,30}
{"XXXXXXXXXXXXXXXXXXXXXXXXXXXX----","XXXXXXXXXXXXXXXXXXXXXXXXXXX-----","-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 4
{17,22,22,12}
{"----------------XXXXXXXX--------------------","-------------------XXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXX-----------------","XXXXXXXXXXXXXXXXXXXXXX----------------------"}
Returns: 3
{19,12,35,26,4,39,9,40,27}
{"-------------------------------------------------","-------------------------------------------------","-------------------------------------------------","XXXXXXXXX----------------------------------------","-------------------------------------------------","------------------------------XXXXXXXXXXXXXXXXXXX","-------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----------","-------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 670952247
{42,14,32,27,44,25}
{"XXXXXXX------------------------","-------------------------------","-------------------------------","-----------------------------XX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 95418
{2,9,33,43,43,28}
{"-----------------------------------","-----------------------------------","-----------------------------------","---------------------XXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----"}
Returns: 814625
{27,22,46,10}
{"----------------------------------","----------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXX----------------------"}
Returns: 30124
{17,16,40,39}
{"-------------------------------------------------","-------------------------------------------------","--------------------------------XXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 71775
{35,34,2,20,33,12}
{"-----------------------------------XXXXXXXXXXXX","-------------------------XXXXXXXXXXXXXXXXXXXXXX","-----------------------------------------------","-----------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXX-------------------------------"}
Returns: 48222
{18,32,25,43,9}
{"--------------------------------------------","--------------------------------------------","XXXXXXXX------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","-XXXXXXXXXXXXXXXXX--------------------------"}
Returns: 15995
{19,29,47,12,9,33}
{"-----------------------------------------","-----------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXX---------------","-----------------------------------------","-----------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 22690876
{38}
{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 28
{46,22,20,32,29}
{"----XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","------------------------------------","------------------------------------","XXXXXXXXXXXXXXX---------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 14534
{23,17,42,21,30,19,7,23}
{"-------------------------------","-------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","-------------------------------","XXXXXXXXXX---------------------","-------------------------------","-------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 260590698
{17,46,18}
{"-------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 4795
{28,1}
{"----XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","---------X----------------------------"}
Returns: 1
{25,2,45}
{"-------------------------------------XXXXXX","-------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 516
{23,2,31,18,46,24,8}
{"---------------------------------","---------------------------------","---------------------------------","---------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXX-----------","------------------XXXXXXXXXXXXXXX"}
Returns: 42065694
{17,10,16,23}
{"--------------------XXXXXXXXXXX","-------------------------------","-------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 4005
{47,28,3,29,37,16,1}
{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","---------------------------------","---------------------------------","XXXXXXXXXXXXXXXXX----------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--","-------------------------X-------"}
Returns: 90255
{34,43,10,23,18,21}
{"--------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXX--------------------------------------------","--------------------XXXXXXXXXXXXXX----------------","-XXXXXXXXXXXXXXXXXXXXXXXXXX-----------------------","-------------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 627
{41,41,22,4,17}
{"----------------------------XXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----","------------------------XXXXXXXXXXXXXXXXXXXX","--------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXX---------------"}
Returns: 208
{9,50,42,25}
{"------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----","-------------XXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-"}
Returns: 144
{50,22,42,11,15,42,3}
{"---------------------------XXXXXXXXXXXXXXXXXXXXXX","-------------------------------------------------","-----------------------XXXXXXXXXXXXXXXXXXXXXXXXXX","-------------------------------------------------","-------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","--------------------------XXXXX------------------"}
Returns: 1687756
{40,26,28,39,33,10}
{"------------XXXXXXXXXXXXXXXXXXX--------------","---------------------------------------------","---------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXX----------------------","----XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","-----------------------------XXXXXXXXXXXXXXXX"}
Returns: 891
{3,26,46,33}
{"--------------------------------------------","--------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 834592
{39,32,22,19}
{"XXXXXXXXXXXXXXXXXXXXXXXX-------","XXXXXXXXXXXXXXXXXXXXX----------","---------------------------XXXX","-------XXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 4
{15,9,28,38,19}
{"-----------------------------XXXX","---------------------------------","---------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXX----------"}
Returns: 3646
{5,24,20,50,33,37,6,19,8,37}
{"-----------------------------------------------","-----------------------------------------------","-----------------------------------------------","-------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","----------------XXXXXXXXXXXXXXXXXXXXXXXXXX-----","-----------------------------------------------","-----------------------------------------------","-------------------------------XXXXXXXXXXXXXXXX","-----------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX----------"}
Returns: 878342580
{23,6,10,16,46,10,34,50,32,1}
{"-------------------------------------------------","-------------------------------------------------","-------------------------------------------------","-------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX----------------","-------------------------------------------------","-------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","-----------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","-------------------------------------X-----------"}
Returns: 177325403
{9,37,22,38,5,2,19,16,20,42}
{"---------------------------------","XXXXXXXXXXXXXXXXXX---------------","---------------------------------","XXXXXXXXXXXXXXXXXXXXXXXX---------","---------------------------------","---------------------------------","---------------------------------","---------------------------------","---------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 494890282
{48,43,16,41,36,42,9,32,24,26}
{"XXXXXXXXXXXXXXXXXXXXXXXXX-------------------","------------------------------------XXXXXXXX","--------------------------------------------","----XXXXXXXXXXXXXXXXXXX---------------------","--------------------------------------------","------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","--------------------------------------------","XXXXXXXXXXXXXXXXX---------------------------","--XXXXXXXXXXXXXXXXXXXXXXXX------------------","---XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 402688
{38,45,5,34,18,17,6,45,33,38}
{"----------------------------------------XXXXXXXXXX","--------------------------------------------------","--------------------------------------------------","--------------------------------------------------","--------------------------------------------------","--------------------------------------------------","--------------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXX--------------------------","-----------------------------------------XXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 837499928
{10,44,39,15,14,12,4,20,27,20}
{"----------------------------","----------------XXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXX","----------------------------","----------------------------","----------------------------","----------------------------","----------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 7721926
{31,19,33,9,44,42,10,11,27,13}
{"---------------------------------------------","---------------------------------------------","----------------------XXXXXXX----------------","---------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXX---------------------","--------------------XXXXXXXXXXXXXXXXXXXXXXXXX","---------------------------------------------","---------------------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX----","---XXXXXXXXXXXXXXXXXXXXXXXXX-----------------"}
Returns: 241056000
{43,24,1,49,48,49,2,6,27,23}
{"-------------------------","-------------------------","-------------------------","XXXXX--------------------","XXXXXXXXXXX--------------","XXXXXXXXXXXXXXXXXXXXXXXXX","-------------------------","-------------------------","------------XXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 20703098
{7,48,32,41,6,27,34,45,29,41}
{"------------------------------","XXXXXXXXXXXXXXX---------------","------------------------------","----------------------------XX","------------------------------","------------------------------","------------------------------","------------XXXXXXXXXXXXXXXXXX","------------------------------","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 778079946
{31,40,8,36,38,43,33,30,40,28}
{"------------------------","------------------------","------------------------","------------------------","------------------------","-----XXXXXXXXXXXXXXXXXXX","XXXXXX------------------","------------------------","XXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 844019397
{44,49,48,48,48,48,48,47,48,48}
{"--------------------------------------------------","XXXXXX--------------------------------------------","------------------------------------------XXXXXXXX","XXXXXXXXXXX---------------------------------------","XXXXXXXXXXXXXXXX----------------------------------","------------------------------------XXXXXXXXXXXXXX","-------------------------------XXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXX------------------------------","--------------------------XXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 40442
{33,49,49,48,48,49,48,48,48,48}
{"--------------------------------------------------","XXXXXX--------------------------------------------","-------------------------------------------XXXXXXX","XXXXXXXXXXX---------------------------------------","XXXXXXXXXXXXXXXX----------------------------------","------------------------------------XXXXXXXXXXXXXX","-------------------------------XXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXX-----------------------------","--------------------------XXXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 45200
{20, 20, 20, 20, 20, 20, 45, 50, 49, 50 }
{"-------------------", "-------------------", "-------------------", "-------------------", "-------------------", "-------------------", "-------------------", "------------XXXXXXX", "XXXXXXX------------", "XXXXXXXXXXXXXXXXXXX" }
Returns: 973726691
{4, 3, 4 }
{"XXXXX--------", "----------XXX", "----XXXXXXX--" }
Returns: 4
{50, 46, 42, 38, 34, 30, 26, 22, 18, 14 }
{"XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX" }
Returns: 243093525
{50, 45, 40, 35, 30, 25, 20, 15, 10, 5 }
{"XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "--XXXXXXXXX--" }
Returns: 115622639