Statistics

Problem Statement for "DominoPlacement"

Problem Statement

For each positive integer k, you have an infinite supply of dominos of shape 1 * k. Each domino can be placed either horizontally or vertically.

You have a rectangular board. Some cells of the board are already covered by 1 * 1 dominos, the rest is empty. You are given the description of the board in the String[] T . The character '.' represents an empty cell, the character '#' a cell that is already covered.

Find the number of different ways in which the entire board can be exactly covered, modulo 109 + 7.

Definition

Class:
DominoPlacement
Method:
countWays
Parameters:
String[]
Returns:
int
Method signature:
int countWays(String[] T)
(be sure your method is public)

Notes

  • A board is exactly covered if each cell is covered by exactly one domino, and each domino is completely inside the board.
  • Two coverings of the board are different if there are two (not necessarily distinct) cells P and Q such that in exactly one of the two coverings there is a domino whose ends cover P and Q.

Constraints

  • All strings in T will have the same length.
  • Each character of each string in T will be '.' or '#'
  • The total number of characters in T (i.e., the area of the board) will be between 1 and 300, inclusive.

Examples

  1. {".."}

    Returns: 2

    One can either use a single 1 * 2 domino or two 1 * 1 dominos, giving 2 different ways.

  2. {".#", ".."}

    Returns: 3

    If we keep a 1 * 1 domino at the top left cell, we have 2 ways to fill the bottom two empty cells like in the last test. If we place a vertical 1 * 2 domino instead, we must place a 1 * 1 domino at bottom right cell. The total number of ways is therefore 2 + 1 = 3. All three tilings are shown below (with different letters representing different dominos). A# A# A# BC AB BB

  3. {".#.", "#..", "..."}

    Returns: 20

  4. {"#######.#####", "...#....#....", "...#....#....", "...#....#....", "...#....#####"}

    Returns: 426089093

  5. {"#.##..##..##.#..#..#.##..###...","##...##..##..#.#...#####...###.","..#..###..#.....##.####...##..#","#..#.###.#..#...#....##...#####","..##....#.##.#.#.###..#.#.####.","#.##..##..##.#..#..#.##..###..."}

    Returns: 886860454

  6. {".#..#####",".#.##..#.","##..#####",".##....#.","..#.##.#.",".##.###.#",".##.#.#..","####.#.##","####.#.##","####.##..","##.#...#.","##..#..#.","#.###....",".#..#####"}

    Returns: 843386712

  7. {".###.#..###..#.#....##...###...#.###.",".........#.#.#...##.....#..#.#.#.##..","#.##..##.#..#.....#.#.##..#..#.##....","...#######..##...#.##......###..#....",".###.#..###..#.#....##...###...#.###."}

    Returns: 116253651

  8. {".","#",".",".","#","#","#",".","#","#","#",".",".","#","#",".","#","#","#","#","#",".",".","#",".","#","#",".",".","#",".",".",".",".",".","#",".",".",".","#",".",".",".","#","#","#","#",".","#","#","#","#",".","#","#",".","#",".",".","#","#","#","#","#","#","#","#","#","#","#",".","#","#","#","#","#",".","#","#",".","."}

    Returns: 16384

  9. {"####..#...","...##...##","..#..#..#.","##.###..##","#.####...#",".##..####.","......#.#.","..###.##..","#.#.......","####..#..."}

    Returns: 159225652

  10. {"##.##.......##...","...#...#.#...#...","...##....##.#.#..","##..#...#......#.",".##..#.....####.#","#.....##..#.....#","..##..##.#.#....#","..#.#####.#.#..#.",".....##..#......#",".#...#...#.#...#.","#.......#...#..##","....##.##.....##.","#.##..#..#.###..#","##.##.......##..."}

    Returns: 635406564

  11. {"#..#.....#.#.#....##","#....#..........#.##","#.#..####.####.#....",".......#.#..##..#.#.","#.##.##........#....","............##..#.#.","##..#.#..#...#.....#","#........#.##...#...","...#...#....##.##.##","...#....###.......#.","#..#.....#.#.#....##"}

    Returns: 131736292

  12. {".##..","#...#","..##.",".#..#","#...#","###..","##.#.",".#...","...#.","..#.#",".##.."}

    Returns: 4492800

  13. {"..##.#..#....#",".#.#...#...##.",".##..........#",".###........#.","#.......###...",".#....#..#..#.","###.#.#####...","....#.#...#...",".##.......#..#",".##.###...#...","....#.......#.",".##.#.##......","............##","....#.##......","....##.#..#...",".##.....###.#.","..#....#....#.","....#..##.#.##",".####...#...#.","#..#....##.#..","..##.#..#....#"}

    Returns: 672540306

  14. {"...#.#............#......#....###.........###.######.#..##...###...#."}

    Returns: 179869065

  15. {".#....#.#.#..",".###....#....","..........###","#.#....#..#..",".......#.....","..##.#.....#.","....#........","..#........#.",".....#...#...",".##.....#..#.",".............","#........##..","#.##.##..#...","..#..........","........#....",".#....#.#.#.."}

    Returns: 163078873

  16. {"......#....##.#.#..#......##.....#.#","#...##..#....#...#.#......#...#...#.","..#........#...........#...#..####.#","......#....##.#.#..#......##.....#.#"}

    Returns: 22985525

  17. {".....#..##","#.#...##..",".........#","#.........",".....#..##"}

    Returns: 104322938

  18. {".",".",".","#",".",".","#",".","."}

    Returns: 16

  19. {"..#..#.#...###.#.","...#...#.##..#...","#................","......#.......##.","..#.#....#...#...","..#..#.#...###.#."}

    Returns: 66380185

  20. {"#....#...........","......#.#........","#....#..........."}

    Returns: 693496844

  21. {".............#..##...#....#....#......#.#.....#...#..##....#..",".##.##....#.....#...#.#....#...#....#.....#..###....#.#.#..#..","..#.#.....#.#.......#..#......#.....##...#.#..##.#..#.........",".............#..##...#....#....#......#.#.....#...#..##....#.."}

    Returns: 584201107

  22. {"....#.#......",".#..#........","##....#......","....#.#......"}

    Returns: 685675491

  23. {"....#...#.#.............",".......#........##......",".....#.#................","..........#....#..#.....",".....#.##..#........#.#.",".#.....#.#............#.","....#...#.#............."}

    Returns: 953339831

  24. {"..##.....",".........","..##.....",".........",".#..#...#",".......#.",".....#...","#...#....",".........","..##....."}

    Returns: 126738837

  25. {".........#.#..","......#.......",".....#..#.....","..............","..............",".#...#........","..#...........",".#..##........",".....##.......","..#.....##....",".........#.#.."}

    Returns: 831888675

  26. {".",".",".",".",".","#","."}

    Returns: 16

  27. {"............#.......#..#...#........#...#..................#.......#......#.....................#........#........#.......#........##."}

    Returns: 621940455

  28. {"...................................","...................................","............#.....##......#........",".#..........#............#.........","............#...........#.....#...#","#............#........#...#..#.#...","..................................."}

    Returns: 33170905

  29. {"..#....#.##.","............",".......#....",".#..........","..#........#","#.......#...",".........#.#",".#..........","#..#...#....","....##......",".#....#.....","..#.........","......#.....","#...........","............","............","..#....#.##."}

    Returns: 143643148

  30. {".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".","."}

    Returns: 33554432

  31. {"....","....","....","....","....","....","....","....","....","....","....","....","....","....","....","....","....","....","...."}

    Returns: 536126084

  32. {".......................",".......................",".......................",".......................",".......................",".......................",".......................",".......................",".......................",".......................",".......................","......................."}

    Returns: 138810801

  33. {".......................",".......................",".......................",".......................",".......................",".......................",".......................",".......................",".......................",".......................",".......................","......................."}

    Returns: 138810801

  34. {"...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","...","..."}

    Returns: 523514052

  35. {"...#..##.##.###.#","..#...#.####...##","#..########...###",".#..#.#.##.###.##","##.........###.#.","####.#####.##....","...#..##.###.####","#.#...#....#..#.#","###.#...#.###....","#....##...#....##","#####....##..#...","...#..#..###.####","..##...#.#..#..##","..#..#.##.#.#.###","#.#.##....##..#.#","..###..##..##.#..","...#..##.##.###.#"}

    Returns: 466605518

  36. {"##...##...##...##","##...###...##....","##.##..#..#....#.","....####.#.####..","##...#.#######.#.",".#...#..#..##.###",".....###.#.......","#..#######.###...","#..#.###.....##..","##.....########.#","##.#.#.#..####.##","#....#.##...##...","#...#.#.#####....",".##.#.....#..#..#",".##..#######.....","#..##..#..##.####","##...##...##...##"}

    Returns: 120556781

  37. {"...###..#####...#",".#..##.#.#..#..##","#..#...#.#..#...#","....###..###...##",".#..#####.#...##.","##..#..#......#..","#.#..##..#....###","..#..##.####..##.","..##.#.###.####.#","#....#...##.#..##",".#...#...#.#...##","###.##.###..#....","#...#.#.##..##.##",".#..##.####..##.#",".#.#.###..#.#..#.",".#.##...###.#..#.","...###..#####...#"}

    Returns: 306626254

  38. {"##.##..##.##.###.","###..#...#..##.#.",".#..###.#..#..##.","..##...##.#...##.","#..###.#.####.##.","##..##.###..#..#.",".#.#..#...#..#...",".#.#.###..####...","#..#...##...#..#.","..#..#....#.....#","#.#.#..##.#.#..##","#.##.##..#.##.###",".#.#...#...#.....","##.#####.......#.","##..#..#..#.##.#.","..#.....##.#..##.","##.##..##.##.###."}

    Returns: 660068704

  39. {"..#..###.#####...",".###.....#.#.###.",".#####.#.##.#.#.#","#.#.#.#.##.##....","###.####.##.#..#.","##..##.#.#.##.##.","..#####.#.##.#.##","####..##..##.###.","...##.##.#..##...","#..#.#.#.##....##","#..#..#.#.#.####.",".#.....#####.....",".#.#.#.#.#.#.##..",".#.##.##.##.#.###","#...#..#.#...#.##","....#.####.#...#.","..#..###.#####..."}

    Returns: 541721477

  40. {"#.##..#.#...####.","#.##..#.###..####",".###.##..#..#.###","..####.###....#.#","##.#..#..#....##.","#..#######..#.###","#.....#...##.....","#.##..#.##..#.#..","#.#.#.##.####....",".........#.#.#...","#..##.#.#...##.##","...#####.#.##..##",".#.##.#.#.##.####",".#.#......######.",".##.....######.#.","..#..#.#.####.#..","#.##..#.#...####."}

    Returns: 707414333

  41. {"###.##....#.#....",".###.#...###.#..#","###.#.###..#...#.","#.#..##..##......",".#####.###..###..","..###.#.##.#..#.#",".###.##..#.#..###",".#...###.#.##....","##..#...##.##..#.","..##..##..##....#",".#..#.#.#.#..####","#..##.#.##..#.#..","#.####.######.#..","#........###..###",".#.......#...#...","#.....###..###...","###.##....#.#...."}

    Returns: 560810718

  42. {"#.#.....#.###.##.","##.#...####......","#####...##..###.#",".#.......##.#####",".##.....#...#.##.","...#.#.#.#......#","#.#..##.#...#.#..",".###.#####....##.",".#..#.##.##.#....",".############.##.","..#.#####...#.##.","#..##..##.##.#.##",".#.##.#.##..#....",".#.#.#.#....##..#","##.##.#....##....","##........##...##","#.#.....#.###.##."}

    Returns: 967072024

  43. {"###.#.####..#.##.","..##...#.###..#..","#.###.#.....####.","#.#.##.#.##.....#","#.##.#.#...##..##","#.##..##..#.##..#","..#####.#..#....#","..##.######.###..","###......#.....#.","...#..#.#...####.","#..#.#.#.#.....##",".#.####....##.#..",".##.#......#.#...","##.#.####...#####","##..##.####.####.","...#...#####.#..#","###.#.####..#.##."}

    Returns: 336999139

  44. {"#..##.#.##.#...##",".#.#.......#.###.","##.##.##.####.###","#.#.##.###....##.","#.##.##.#.....#..",".####.##.###.#..#",".#..#####..#####.","..#..#.#.##....#.",".#.#.#...##.##..#","...#.##.##.#.....",".....##....#.###.",".#.#.###.#..##..#","....#..#.......##","#...#.#.##..##...",".#....#####.##.#.","#####.###.##.#..#","#..##.#.##.#...##"}

    Returns: 475323904

  45. {"..#.#...#####.##.","##...#.#########.","##...##.####.#...","#.##..##.#..##.##","..#...##..###..#.","##.#...#.##...#..","##.....##.#.#.###","##.###.##....#...","...###...#####...",".#.#....#.#..#...","....#.##..#..#...",".#######...#.#.#.",".#.#...##...##.#.","#.#..###...#.#..#","..#.##.######.###","#.#.#...#.###.###","..#.#...#####.##."}

    Returns: 55978255

  46. {"#..#........###.#",".##..#.#####...#.","##..#####..##...#","....#.#.##....#..",".##.#..##.#....##","#..##...##....#.#","###.########.####","...##.##.#..##.#.","#.#..####.#.##.##","#.#.##..#..#.##.#",".#.###.##.#.#....","..##.###...###.##","###..##..#.#.....","##.#.###......#.#","#.....#....#..##.","....##.#####.##..","#..#........###.#"}

    Returns: 695193577

  47. {"#####..###.....#.",".####.##..#.##...",".##..#.##...###..","#.#..#....##.##.#","#.#.#.#.....##..#",".#....#.##.##.###","..##.#.##.#####..",".###.#.#.##..###.","##.##..#..#..####","#.#..#..##..####.","##.#..##..#...#.#",".......###.....##","#..#.#....#.##..#","#.#..##.....###.#","....#...##..##...","#..#..#.#.#..##.#","#####..###.....#."}

    Returns: 74075695

  48. {"..#####...#.#.###","#.#.##.#...#####.",".#.#.##.##....###",".###.###.#.######",".#.#..#...###.###","....#...#.####...","##..#.....##..#.#","..####..#..#..##.","...##..#.####....","#......##...##..#","#.....#..#####..#",".#.#.#.#..#.#..#.","##.#..#....####..","#####.....##..##.","..######..#.##.##",".###.....###.##..","..#####...#.#.###"}

    Returns: 168830230

  49. {"#..#####.#..#..##","..##.....####.##.","####.#.#.#.#.#.#.",".#.#.#.###.###.##","....#...#####.##.","..##.###..#...##.",".###..#...##..###","###.#....#.#...##",".#..#..#...#....#",".....#.........#.",".#.#.#..###.##.##","####.#.##.....#.#",".##.....#..#..###","........####.#.#.",".#....#.#.#..##.#","..##.##.#........","#..#####.#..#..##"}

    Returns: 761190794

  50. {"#.#.##..#.#..#..#",".#...#.#...#.....","......#.#......##","..###...#...#...#","#....##.##.##...#",".....##..#....#..","..#.....#...##...","..#....##...#.#..","..#...#...#....#.",".........###..###","...#.......##.#.#","...#.#..###.##...","#.......#..##....","##.#....##..#....","#....#.#.#.......","...#..#..#.###.#.","#.#.##..#.#..#..#"}

    Returns: 33155118

  51. {".###..#.#.....#..",".#..#...#...#....","##.....#..#.####.","#......##..#.....","#....###.......##",".#.#...#...#.....","..........#..#..#","#....###.#..#.#.#","..#.#.##.#.#..##.",".........##.####.","..#..#...####.#..","....###....##....","#.##..#..#.#...#.","...#.#####.#..#..","....#....##...#..","#...#....#.......",".###..#.#.....#.."}

    Returns: 357463056

  52. {"##..#.......##...",".....#..#...#.###","......#...#.###.#","..##.#....#.#..#.","#..#...##........","..##............#","...#.....###...#.",".##.###.#...#.###","##.##......#..#..","...##...#.....#.#",".#.#....###.#..#.",".#....#..##...#..","..#........#.....","..#...#.#..#.....","##.#..#.#...#..#.",".###......##...#.","##..#.......##..."}

    Returns: 625720896

  53. {"...#...#......#..",".....#.#.#####..#","##.##.....#....#.","#.####..#.......#","....#..#.#...#...","#...#.....#......",".##...#...#......","..#.###...##...#.",".###.......#..##.","#...#.##..##..#..","....##..#......#.","#....##.##...###.","#..##.##..#.##.##","..##.....#.#....#","#.###.##.....#...","#....##..#.....##","...#...#......#.."}

    Returns: 270797425

  54. {"#..#.###..##.#...","..#.##..#.##.....","...#..#..##.....#",".....###......##.",".#...#.###...##..","....#....#.#.....",".###......#.##.#.","......#.....##...","#.#.#..#........#","....#....##..#.#.","##..##.#...#.#..#","#..##..#.##......",".#..#..#...#..##.","#.....####.#..#..","#.##....###.#...#",".....##..#.....#.","#..#.###..##.#..."}

    Returns: 958775587

  55. {"..........#..##..","#.##..##.#....#..",".##.#.##.........",".##.##....#....#.","#...###.#.#....#.","#..#.##...#...###",".#..####..##..#..","...##..##.#.##..#","...#............#","#.##....##......#","####.#.#.###.#..#",".#.####.##.###...",".#...#....##.#.#.","..#.....#........","#....#..#.#....##","#.......##....#.#","..........#..##.."}

    Returns: 521758034

  56. {"....##...##.##.##","..#.....#.#..#.#.",".#..##.#.....#...","..#......##.#.##.","#.......#........","....##.#.##.#....","..###..#..#..#..#","######.....#.#.##",".#.#..#..##...#.#","#.....#.##.##.#..",".#.#.#...#......#","#.##...#...#.#...",".#.......#.#.##.#","....#.#....##....",".#....#.#..#....#","###...##....#....","....##...##.##.##"}

    Returns: 543889464

  57. {"#.###..##...##.##","#.#.....#..#.#...","...#.##....####..","...#...#..#....#.",".#.##.###.##.#...",".#.....##..#.##.#","..#.#.#..#.#.###.","#.##.......##..#.","##....#....#..##.","#.#..#..#..##..#.",".##.......#......","##.##............","....###........#.","..####...#####..#","#....##..#.....#.","......#..#..##...","#.###..##...##.##"}

    Returns: 395404613

  58. {".#...###..##.#...",".#..#...#.......#","###....#...#.#..#",".##....#.##..#.#.","#.....###.#......",".##.....####...#.","#...#.##.#..#...#",".##.#.#.###..#...",".####.##......#..","###.###....##...#","#...#...#........","#.......#.#.###..","###.#......#.....",".....#....#.###.#","#...##...........","#.#.##.##.#.#..##",".#...###..##.#..."}

    Returns: 866273226

  59. {"#....#....##..##.","...#....#..#.#...","....###.....#....","#....#.#...#.#...",".....#..#....#...","....#...##..#....","...#.#..###.#.##.","#.............#..","......#..........","#.##...#...##.##.",".##..........#..#",".#...#...##.###.#","#..##..#.#...####","#...#.#...##...#.","##...#......#.##.","#.............#..","#....#....##..##."}

    Returns: 230658952

  60. {".#...#.....#.##.#",".....#...##...#.#","##..#..#......###","##.##.........#..",".....##.##.......","..#.....#.#.#....","...###.......#.#.",".#.#.....##....#.","#.#.####......##.","..##.#.#....##...","....#....#.#..#.#","#....###.........","..##.#.#......#..","..##....###.#.#..",".#...#....#......","###.##.####.#.#.#",".#...#.....#.##.#"}

    Returns: 276879956

  61. {".##.............#","#...#..#...#.....","#...####.#.......","..#.....#....#.#.","....#...#.#......",".#.##.###...#..#.","...#........#.#.#",".......#.#...##.#","#....#.#....#.#.#","##.....##.##.#.#.","##..##..##...#..#","..#..#...##.....#","...#......##..#..",".###....###...#..","..#........##....","#.#...###.#...#.#",".##.............#"}

    Returns: 955078269

  62. {"##..#...#....#...",".##........#.###.","#....#.......##..","##...#.#....#.###","###...#...#.##.#.",".##.#...#......#.","..#.#....###.#.##","...#...##.#.#....",".........##.###.#","...#......#.##.##","....#####...###..",".#.#####..#..#..#","..#..#..#..#...#.","....#....##.#....",".#...#..#.#.#..#.",".#....#...#.....#","##..#...#....#..."}

    Returns: 765494971

  63. {"#.###.##.##.##..#","###.....#.#....#.","....###..#...#...",".......#....##..#","..#..#.#...#.#...","#..#..#.#........",".##.#.#.#.#.....#","...###..#..#..##.",".#.......###.##.#",".##...#..###....#","..#......#.###.##","...#.###......#..",".##..#.#.#.#....#","#.#..#.........##","......##.#.......","......#..........","#.###.##.##.##..#"}

    Returns: 331350785

  64. {"....#..#.#...#.#.","..#.##.....##..#.",".#.......##.##...","#..##...#....#...","....#.......#.##.",".#.##.........#.#",".......##.#...#..",".#..##..#..#..#.#","..##...#.#..#....",".#....##..#..##.#","#........##.#....","#....#...........",".....#.......#.#.",".......#.........","....##....#......","#...##..#..#....#","....#..#.#...#.#."}

    Returns: 399246334

  65. {"#..#.##....#.#...","....###.......#.#",".#...#.#...#....#",".#.....#.#.#...#.",".##....#....#..#.",".....##........##","......##.........",".#....##.....#.##",".#.......##......","...###.##.#.....#",".#......#..#.##..","#...###..#...#...","....##...#.....#.","..#....#.#.......",".#...#........#..",".......#........#","#..#.##....#.#..."}

    Returns: 953937438

  66. {".......#.#......#",".#......#...#.#..","##...#...#..#....",".#.......##.#..#.","......#......#.##",".#.............#.",".#...#.#.....#...","##...##..........",".....#....#..##..","#.........#......",".......#...##....",".#...#.....##....","#..##.#.......#.#",".#....#...#......",".............#...",".......#..#...#..",".......#.#......#"}

    Returns: 455778101

  67. {"..#..............","...#...###.#.#...","#..#.#....#......","...#.#......#....","..#.........#..##","#.......#..#.....","..#.#..#.#.......","..#............#.",".#......#........","......#..........","#......#....##.#.",".#.....#..#.##...","....##..#..#.....","....##...#.#.##..","...#......#.####.",".#.#.......#..#..","..#.............."}

    Returns: 116226925

  68. {"..#............##",".........###...#.",".#....#..#....#..","........##...##.#","..#..#.#.........","##..#.#.##.....#.",".#...#...#.#.....",".#........#....##","##..#............","..#.###..#.#...##","..##..#........#.",".#.##...#......#.","...#.......#.....","#.#.###.......#..","..#......##..#.##","..###...........#","..#............##"}

    Returns: 858630756

  69. {".........##.....#",".........#....#..",".##......#....#.#",".###..##.#.##....",".....#......#..#.","#.#...#.........#",".....#.....##....",".###.#.......#.##","##.......#.#.....",".#......##..##...","#.#....##........",".....##..#....#..",".#..###....##.###",".......#..##....#","...##.#..##.###..","#.#..#....##....#",".........##.....#"}

    Returns: 688669305

  70. {".#.#......#..##..","#...............#","..#.##..##...#...",".......#....#....","..#.....#........","....#....#...##.#",".#..##......#.#..","#.#.#..##.......#","#..#.##..........",".#...#.##.#......",".....#....##.#...","......#.#..#.#.##",".#....#...#..#...","...#..#......#...","#..#.##.....#.#..","...#....#.#......",".#.#......#..##.."}

    Returns: 211303695

  71. {".#...##...##.#...","....#....#.#...#.","....#.#..#..#....",".#..#............",".#..#............","...##..#..#...##.","##.##....##......",".##.......#.##...","....#.#...##...#.","........#...#...#","....##.........#.","###..........#..#","#.....#.#...#.#..",".#.#...#.....#...","##...##.......###","...##..#....#..##",".#...##...##.#..."}

    Returns: 475449139

  72. {"..#....#.........","........#...#....",".####.#.#.###...#","......##....#....",".....#.........#.","...#...........##","#............#..#",".#..##.#..###.#..","#.##..#.....#.#.#","........#.##.....",".##...###..#.....",".#.##...#........","#.#......##.##...","...............#.","...#.....#..##...","....#####........","..#....#........."}

    Returns: 659799268

  73. {"##...#.#.........","......#.....#...#","#.........###.#..",".##...##.#.##..##",".##...........#..","..#..#.#.##...#.#","#........#..#.#..",".##...##.....#..#","#........#....###","#..#.##.......#..","....#..#...#...#.","#....##...#..#...","......#..#.......","..#..#...........",".......#..#......",".#.#...#...#..##.","##...#.#........."}

    Returns: 700850599

  74. {"..##.##..#.......","...##....#.#..#..","#..#....#..#....#","#.....#.....#....",".....#.#.#.#....#","....##.###...#...","..#........#.....","............#....","#...#..#.....#...","#..#...#...#.#...","......##.#....##.","#......#.#..#....","...#.##...#..#...",".....#...#.......","....#.#..#.......",".#.....##...####.","..##.##..#......."}

    Returns: 250475099

  75. {".......#.........","#...#...#....#...","...#....#...##.#.",".###..#....#...#.","..###.....#.#....",".#.#.###.#.....#.","...#...#..#..#...","..##...#....#..##","#.#.........#.#..","......#..........","#.........##...##","#....#......###..","..#...#....###..#","#..#.#...#.#.#...","...#..#..........","....#....#.......",".......#........."}

    Returns: 120645246

  76. {".......#...#.....",".......###.#.#...","..##........##...","......#...#..#...","#....#.....#.#..#","...#....###......","#..##.#.#........",".#...#.##..###...","....##.#...###...","...#.......#..#..",".............#...","###..........##..","..#.....#.###..##",".........#.##..#.",".#.......#.....##",".##...#.#..#..#..",".......#...#....."}

    Returns: 949683703

  77. {"#......##.......#","...#...##........",".#..#...#.....#..","......#..#.#.....","#....#......#....",".#..##.##.....##.",".............#..#","...#.##......#...","..#..#.#.##...#.#","...#.#.#...#.....",".#.#..#....#..###","####..#...##.##..","#...#...#........","..##.#..#...#...#","##..#...#..#..#..","#....#...........","#......##.......#"}

    Returns: 491230300

  78. {"...#.#.........##","...###...#.#..#..","..##.....#...##.#","........#.....#..",".#..#......#....#","#....#.#.#.#.....","#..#.#.#.........",".#.#..##......###","......#.#........","#.##........##...","#.....#...##..##.","..#.....#......##",".........#..#..#.","#.#....#.........","...##............","...###..##...####","...#.#.........##"}

    Returns: 434338811

  79. {"#...........#..#.",".....#......##..#","##....#...#...#.#",".#.....#.........","#..#....##...##.#",".##....##..#..#..","#...####..#.#.#..","##..............#","#..#.........#...","#..#..##.#......#","#...##..#.......#",".....#..#.##...#.","...#.#.#......#.#","#.......#.#.#..#.",".#..#......#....#",".............####","#...........#..#."}

    Returns: 707310325

  80. {"....#....##..#..#","........#........",".#......#..#....#","###..#.#..#.....#",".#......#.#..#...","##...#.#.....##..","#.........##.....","#................","..........#.##...","....#....#...#.#.",".......#....#..##","...#..#..#.......","#...#...###..#..#","...##......#....#","#.#.#...#........",".......#.....#.#.","....#....##..#..#"}

    Returns: 922246514

  81. {"..#.#.#...#.#....",".................","...###..#.#......","..#......#.....##","#....#..#.#.#....","##..##...........",".#........#......","#.#....#....#....",".....#.....##....","..##.....#.#..#.#",".....#.#.........","..........#...##.",".......#........#",".#...#..#.#.#...#","......#.......#.#","#...........##...","..#.#.#...#.#...."}

    Returns: 166731456

  82. {"........#........","....#........##..",".........#.......",".............#...","...#.......#..##.","..#.#.#.....#....","........#.....##.",".......#......##.",".............#...",".#.#..#..#..#....",".###...#.......##","##....#..........","....#............","#........#.#.#...",".....##....#...#.",".................","........#........"}

    Returns: 869720392

  83. {".......#.....##.#","###..........#..#","................#","........#..###.#.","#..........###...","...#...##..#..#..","#.#.....#....##..",".................",".......##...#.#..",".#....#.#.#......","..........##.#...","##........#.##...","......#...#......","......#.....#....","...#.......#.....",".........#......#",".......#.....##.#"}

    Returns: 132155034

  84. {".....#..##...#...","....#............","..#...#......#...","..........###....","#..#...##.......#","......#......#...","....##..#.#......",".......#..#..#...","..#.......#.....#",".......#.........","##.#....#.#...#..","....##.....#....#","..............#..","..............#..","....#.#.#........","...#......#.#....",".....#..##...#..."}

    Returns: 626224380

  85. {"....#..#..#.##.#.","..#....#..##.#.#.","##..#...#..###...",".......#........#","#..#.....#.#.#...","#.....#..........",".#.....#......#.#","......#..........","....##.#..#..#...","....#..#..#......","....#............",".......#...#.....","...##..###......#","...#.#..#.#...##.","...........#.....",".#..#............","....#..#..#.##.#."}

    Returns: 142891928

  86. {".#....##....#.#..","....###..........",".#.#.........##.#","...##............","##.......#.......","...#.....#.#...#.","#.#.#............",".##...#..........",".#...............","...#.........#...","...#...........#.","........#...#...#","......#.#....##..","........##.......","...#..##.#.#..#..","#.....#...#.....#",".#....##....#.#.."}

    Returns: 671786159

  87. {"..##............#","..#..#....#.....#","#.##..#......###.",".#..#............","........##.....#.","##...#...#..#...#","...#......#......",".#.#..........#..","....##...........","#.#..##....#.##..","....#.#.#..#.....",".................","##.....#....#..##","..............###",".#.#..##.#......#","........##.......","..##............#"}

    Returns: 215731712

  88. {"..#..........#...","...#...#.#.......",".#.....#....##...","#...#.##.........","....#....#.#.....","...........#.....","......#....##....","....#...........#","...........#.....","......#..........","..........#......",".........#...##..","............#..#.","....#.##.#..#....","...........#.....",".................","..#..........#..."}

    Returns: 118896097

  89. {"...#..#..........","..#.#.......#....",".#...#...........","#.......#........",".#....#..#.#.....","....#.....#.....#","...##.....#..#...","...#....#..##....",".....#...........","...........#.#.#.","..###.......###..","..........##.#...",".........#..#....","....#.........#..",".#........#.##..#","..........#.###..","...#..#.........."}

    Returns: 227029805

  90. {"#.......#........","....#...#.##.#...","....#.#....##...#","...#..#.#.....#.#",".#...........#...",".#...#..#........","...........####..","#..#....###......","...#...#....#...#","........#........","..#..............","..#.#............","......##..#......","...#.............",".##.#........#...","...#...#.#.......","#.......#........"}

    Returns: 896162596

  91. {"........##.....#.","......#.#...#..#.","#.##..#.....##...",".....#......#....","#............#...",".............#...",".................","....##....###....",".#.........##....","..##....##..#....","#.........#......","##.........#.....",".........#.###.#.",".#..#....#...##..","..##.....#.......","...#.............","........##.....#."}

    Returns: 668787388

  92. {".##.....#.#....#.",".#......#........","...........#....#","..#.............#","#..#..#....#...#.",".........#......#","....#.#..........","##.#...#.........","..#..............","..#......#.......",".#.............#.","....#.#...#.#....","...........###...","#.#..............",".....#....#..##..","#.##..#.#..#.#...",".##.....#.#....#."}

    Returns: 635430847

  93. {"...#...##.......#",".........#..#.#..",".#....#..........","..##...#.....#...","...#..#.....#..#.",".#...#.#.....#...",".................","...#...#..#......","#..#..#....#.....","......#...#..#.#.","....##...#..#....","...........#..#..","#...#.......#....",".#.............#.","..#............#.","##......#...#....","...#...##.......#"}

    Returns: 391324665

  94. {".#......##..#....",".................",".#............#..","..#.###....#.#.##","..#...#......#..#","..#.........#....","..#..#.....#.....","......#.....##.#.","..#.....###...#..","......#....#.....","#.........#......","#...........##..#",".#...###.....#...","#...........#...#","....#.........#.#",".........#....#..",".#......##..#...."}

    Returns: 34069727

  95. {"..#..............",".................","....#............","...#.............",".............#...","#....#...........",".....#...........","...........#.....","..........#.....#",".................","...#.............","#..#.............",".................","......#..........","...#............#","..#......#.......","..#.............."}

    Returns: 325664328

  96. {"..#..............",".................","...##.......#....",".#..#....#.....#.","#................","#.......#........",".................",".........#.#.....",".................",".......#.........","..........#.#....",".................","..##.............",".................","...............#.",".#..#............","..#.............."}

    Returns: 203224955

  97. {"............#....","............#....",".............#...","................#","................#","...............#.","....#.....#......","#........#...#..#","......#..##......","...#.#.....##....",".........#.......",".................","...............#.","..............#..","..............#..",".................","............#...."}

    Returns: 887243187

  98. {"#................","....#.#..........","...#.............","....#..#.........",".##.#......#.....",".#........#....#.","..#..#...........",".#.#.#...........",".................","................#","...........#..#..","..#..............",".....#...#...#...",".#...#...#.......",".....#.#..#.....#",".........##..#...","#................"}

    Returns: 223895326

  99. {".................",".........#....#..","#................",".#.#.#...........",".................","......#.#....#...","......#.#....#...","................#","....#......#.....","..#.#..#...#..##.","#.....##.....#...",".....#..#........",".##...#..........",".#...........##..","..........#......","...#........#.#..","................."}

    Returns: 501699010

  100. {"....#...........#","........#........",".................","#......#.......#.","#................",".#..........#..#.",".................",".....#...........","#...#.....#....##","....#.#..........","...#.......#...#.",".##....#....#...#","...............#.","..............#.#",".................","#...............#","....#...........#"}

    Returns: 643605683

  101. {".....#...........",".#...#.....#.....",".........#.......",".....#......#...#","........#........","#....#...........",".................","............#....","...#.#......#....",".................",".................",".....#.#.........","..........#......",".................",".................","..........#......",".....#..........."}

    Returns: 654932597

  102. {"#.....###........",".#.......#...#.#.","................#","..............###",".................",".............#...","..#..............","...#.#...........",".............#..#","..............##.","................#","..#.....#........",".................","....#.........#..",".......#.........",".................","#.....###........"}

    Returns: 405487068

  103. {"....#..#.........","................#",".......#.......#.","...#.##..........","#................","...#....#..#.....","........#........",".#...............",".................","....#.....#.....#","......#..#......#",".......#.........",".................",".................",".....#...........",".#...............","....#..#........."}

    Returns: 646955261

  104. {".................",".###.............","............##.#.",".................","..#.........#....",".................",".........#.......","..........#......","..#.........#....","..........#......",".....##......#...",".................","..#......#.....#.",".................","#.##.............","......#.........#","................."}

    Returns: 108360004

  105. {"..#..............",".#...............","....#............",".................","........#........","..............#..",".................","..#..............",".........##...#..","..#.........#....","#................","..............#..","..#..............",".#...............","...#.........#...",".........#.......","..#.............."}

    Returns: 942027630

  106. {".........#...#...",".................",".................","...##..#.........",".........#.......","...........#....#","#......#......##.",".....#...........","..#..............",".#..........#....",".................","#..............#.","....#............","#..............##","....#......#.....","....#.#..........",".........#...#..."}

    Returns: 460285289

  107. {"..#..............","#.....#..........",".......#.........",".......####.....#",".........#.......","...#.............","...#.............","............#....",".#.......##....##",".................","........#.....#..",".........#...#..#","..........#......",".#...............","...............#.",".....#...........","..#.............."}

    Returns: 796768940

  108. {"............#....",".....#...###.#...","......#..........","....#............","....#............",".......#.#....#..","..............#..","#......#.....#...",".........#...#...",".#.....#.....#...","..#..#.......#...",".....#........#.#","..#.........#....","#..........#.....","............#.#..","..#...#.........#","............#...."}

    Returns: 247031419

  109. {".....#....#......",".................","..#...#.......##.",".........#.......","..........#....#.","......#..........","..##....#........","...............#.","........##.###...","..............#..","...#.......#....#","......#..........",".................",".................",".........#.......","..............#..",".....#....#......"}

    Returns: 206848855

  110. {".................",".......#.........","......#.....#.#..","............#....",".................",".................",".#....#.#.......#",".................",".................",".......#..#...##.","...............#.",".................","........#......#.",".................",".......#.#.......","........#........","................."}

    Returns: 753004263

  111. {".................",".................",".................",".............#...",".......#.........",".#.............#.",".................","....#............","..............#..",".................","...............#.",".................",".................",".................",".....#...........",".................","................."}

    Returns: 56189175

  112. {"#................",".................",".#...............","............#....","...........#..#..","..............#..",".................",".............#...","........#........",".................",".....#....#......",".................","..........#......",".................",".................",".....#...........","#................"}

    Returns: 531607743

  113. {".................","....#........#...","..........#.....#",".................","........#........",".................",".................",".................",".................","...........#....#",".................",".................","............#....",".................",".................",".................","................."}

    Returns: 788565325

  114. {"...#..#.....##...","..#.......#..#...",".................",".................",".........#.......","............#....",".................",".................",".........#.......","...#..#..........","......#..........",".................",".................","..........#......","........#........","#..#..........#..","...#..#.....##..."}

    Returns: 463155967

  115. {".................",".................","..........#......",".......#......#..",".#...............","....#.........#..",".................","#.....#..........","........#....#...",".................",".................","..............#..","...#......#......","..........#......","#................","..#....#....#..#.","................."}

    Returns: 447625909

  116. {"...............#.",".................","....#............",".............#...","........#........",".................",".#...............","...........##..#.",".#...............","..........#......",".#.#...#.........","...........#.....",".......#.........",".................",".................",".................","...............#."}

    Returns: 479873879

  117. {"...#....#..#.....","...#.............","........#........","...#.............",".................",".................",".........#.......","..#....#........#",".................",".................","......#...#......","............#....",".................",".................",".................",".................","...#....#..#....."}

    Returns: 150551315

  118. {"..#.......###....","............#....",".#....#..........","..............#..","#................",".................",".................",".................",".................","..............#..","..............#..",".................",".....#.....#.....","..#........#...#.","................#",".................","..#.......###...."}

    Returns: 91119026

  119. {".................","....#............",".................","...........#.#.#.",".................",".#...#...........",".................",".#.#.............","#................",".........#....#..",".................","............#....","......#.....#....",".................","......#..........",".#.....#.........","................."}

    Returns: 22879168

  120. {".................","........#........","...#.............",".................",".................",".#............#..","#........#.......","..............#..",".................",".................","...............#.",".................","..#...#..........",".................",".................",".....#...#..#....","................."}

    Returns: 665393791

  121. {".................",".....#...........",".................",".................",".................",".................",".................",".................","..#..............",".............#...","..#......#.......",".................",".........#.......",".#.............#.",".................","#........#.......","................."}

    Returns: 279607877

  122. {"............#....","................#",".............#...","..#..#...........",".................",".....#...........","#................",".................",".................",".................",".................",".................","......#..........",".................","....#...#........",".........#.......","............#...."}

    Returns: 382413535

  123. {".................",".................","....#............",".................","#................","......#.#........","........#........",".............#...",".................","....#........#...",".................",".................",".............#...",".................",".....#...........","..#...#..........","................."}

    Returns: 767493574

  124. {".........#.......","........#........","...............#.",".................",".................","......#..#..#....",".................",".................","...#.............","...#.....#.......",".............#...",".................","....#.........#..","....#....#.......","...............##",".................",".........#......."}

    Returns: 35838147

  125. {"...........#..#..",".................",".................",".................","#................",".................",".................",".................",".................",".................",".................",".................",".................","...............#.","...............#.",".................","...........#..#.."}

    Returns: 425993055

  126. {".................",".................",".................","...............#.",".................",".................",".................",".................",".................",".................",".................",".................","...........#.#...",".................",".................","..............#..","................."}

    Returns: 436272254

  127. {".#...............",".................",".................",".................",".........#.......",".................","................#","....#............",".................",".................",".................",".................",".................",".................",".................",".................",".#..............."}

    Returns: 953420257

  128. {".................","....#............","...........#.....",".................","#................",".................",".....#...........",".................","..............#..",".................",".................",".................","......#..........",".................",".................","##.......#.......","................."}

    Returns: 127383798

  129. {".................",".................","......#..........",".................",".................","....#............",".................",".................",".................",".................",".............#...",".................",".................","........#........",".................","...#.............","................."}

    Returns: 933070925

  130. {".................",".................",".................",".................","....#............","............#....",".................","........#........","............#....",".......#.........",".................",".................",".................",".................",".................","...........#.....","................."}

    Returns: 457334257

  131. {".................","......#..........",".................",".................","#................",".................",".................",".................",".#...............",".................",".................",".................",".................",".#...............",".................",".................","................."}

    Returns: 485165447

  132. {".................",".................","..#..............",".........#.......",".................","...#.............",".................","......#..........",".................",".................",".................",".................",".................",".................",".........#.......",".................","................."}

    Returns: 412218182

  133. {".................",".#.#.............","..........#......",".................",".................",".................",".................","#................","...#.............",".................",".................",".................",".#...............",".................",".................",".................","................."}

    Returns: 710384942

  134. {".................",".................","........#........",".................","..............#.#",".................",".................",".................",".................","......#..........",".................","..........#......",".................",".................",".................","................#","................."}

    Returns: 276413261

  135. {".................",".................",".................",".................",".................",".................","...#.............",".................",".................",".................",".................",".................",".................",".................","....#............",".................","................."}

    Returns: 78018183

  136. {".................","....#..........#.",".................","..........#......",".................",".................",".................",".................",".................",".................",".................","..#..............",".#...............",".................",".................","..#..............","................."}

    Returns: 182017448

  137. {".................",".................",".......#.........",".....#...........",".................","..#..............",".................",".................",".................",".................","...............#.",".................",".................","....#............",".................",".................","................."}

    Returns: 276299645

  138. {"............#....",".#...............",".................",".................",".................",".................",".................",".................",".................","........#.......#",".................",".................",".................",".................","..#..............","..........#......","............#...."}

    Returns: 626837801

  139. {".................",".................",".................",".................",".................",".................","................#",".................",".................",".................",".................",".................",".................",".................",".................",".................","................."}

    Returns: 570597158

  140. {".................","........#........",".................",".................",".................",".................",".................","............#....",".................",".................",".................","....#............",".................",".................",".................",".................","................."}

    Returns: 63222409

  141. {".................",".................","........#........",".................",".................",".................",".................",".................",".................",".#...............",".................",".................",".................",".................",".................",".................","................."}

    Returns: 494865772

  142. {"...............#.",".................",".................",".................",".................","#................",".................",".................",".................",".................",".................",".................",".................",".................",".................","#................","...............#."}

    Returns: 182349425

  143. {".................",".................",".................",".................",".................",".................",".................",".....#...........",".................",".................",".................",".................",".................",".................",".................",".................","................."}

    Returns: 77153053

  144. {".................",".................",".................","........#........","..........#......",".................","......#..........",".................",".................",".................",".................",".................",".................",".................",".................",".................","................."}

    Returns: 892464673

  145. {".................",".................","........#........",".................",".................",".................","........#........",".................",".................",".................",".................",".................",".................",".......#.........",".................","..#..............","................."}

    Returns: 623696244

  146. {".................",".................",".................",".................","...........#.....","..#..............",".....#...........",".................",".................",".................",".................",".................",".................",".................",".................",".................","................."}

    Returns: 703723313

  147. {"....#............",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................","....#............"}

    Returns: 602114693

  148. {".................",".................",".................",".................",".................","....#............",".................",".................","................#",".................",".................",".................",".........#.......","..#..............",".................",".................","................."}

    Returns: 268818515

  149. {".................","....#............",".................","..........#......","...#.............",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................","................."}

    Returns: 506895837

  150. {".................",".................","#................",".................",".................",".................",".................",".................",".......#.........",".......#.........",".................",".................","...#.............","...........#.....",".................",".................","................."}

    Returns: 762345243

  151. {".................",".................","...............#.",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................","................."}

    Returns: 986392096

  152. {".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................","................."}

    Returns: 484752458

  153. {"........#........",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................","........#........"}

    Returns: 244479003

  154. {".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................","#................",".....#...........","..........#......","................."}

    Returns: 675097200

  155. {".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................",".................","................."}

    Returns: 484752458


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: