Statistics

Problem Statement for "OneBlack"

Problem Statement

Fox Ciel's room is divided into N times M unit cells. Each cell is either empty or a wall. The cells are numbered (0, 0) through (N-1, M-1).

You are given a String[] grid that describes Ciel's room. If the j-th character of the i-th element of grid is '#', cell (i, j) is a wall. Similarly, character '-' denotes an empty cell.

There is an entrance in the cell (0, 0) and an exit in the cell (N-1, M-1). From any cell (i, j) Ciel has at most two options how to move: she can move to the cell (i+1, j) or to the cell (i, j+1). Of course, she cannot step outside the room and she cannot step into a cell that contains a wall.

Cat Snuke wants to color each empty cell black or white. Additionally, the coloring must have the following property: Each of Ciel's valid paths from (0, 0) to (N-1, M-1) must contain exactly one black cell. Return the number of ways to color the cells, modulo 1,000,000,007.

Definition

Class:
OneBlack
Method:
countColorings
Parameters:
String[]
Returns:
int
Method signature:
int countColorings(String[] grid)
(be sure your method is public)

Constraints

  • grid will contain between 2 and 30 elements, inclusive.
  • Each element of grid will contain between 2 and 30 characters, inclusive.
  • Each element of grid will contain the same number of characters.
  • Each character in grid will be either '#' or '-'.
  • The first character of the first element of grid and the last character of the last element of grid will be '-'.

Examples

  1. {"---", "---", "---"}

    Returns: 5

    There are six valid paths Ciel may take: (0, 0) -> (0, 1) -> (0, 2) -> (1, 2) -> (2, 2) (0, 0) -> (0, 1) -> (1, 1) -> (1, 2) -> (2, 2) (0, 0) -> (0, 1) -> (1, 1) -> (2, 1) -> (2, 2) (0, 0) -> (1, 0) -> (1, 1) -> (1, 2) -> (2, 2) (0, 0) -> (1, 0) -> (1, 1) -> (2, 1) -> (2, 2) (0, 0) -> (1, 0) -> (2, 0) -> (2, 1) -> (2, 2) Each of these paths must contain exactly one black cell. There are five ways to do so: Color (0, 0) black. Color (0, 1) and (1, 0) black. Color (0, 2), (1, 1), and (2, 0) black. Color (1, 2) and (2, 1) black. Color (2, 2) black.

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

    Returns: 11

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

    Returns: 64

    There is no path, so all 2^6 colorings satisfy the condition.

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

    Returns: 96909591

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

    Returns: 18

    Color (0, 0) black. Color (2, 3) black. Color one of {(0, 1), (0, 2), (0, 3), (1, 3)} black, and color one of {(1, 0), (2, 0), (2, 1), (2, 2)} black. The total number of valid colorings is 1 + 1 + 4 * 4 = 18.

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

    Returns: 432

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

    Returns: 903122246

  8. {"--", "--"}

    Returns: 3

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

    Returns: 3

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

    Returns: 4

  11. {"------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------"}

    Returns: 59

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

    Returns: 4

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

    Returns: 65

  14. {"------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "---------------------#--------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------------------------------", "------#-----------------------"}

    Returns: 4160

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

    Returns: 77

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

    Returns: 87

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

    Returns: 117

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

    Returns: 295513947

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

    Returns: 9955890

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

    Returns: 301749189

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

    Returns: 225317468

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

    Returns: 33969021

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

    Returns: 414188580

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

    Returns: 936466596

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

    Returns: 542988934

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

    Returns: 975598919

  27. {"-#-------#--#-#---#---#-------", "-----#-#------#-#-#------#----", "---------#-------###------#---", "-------##----#-#---------#----", "#------#---------#-#----#-----", "---------------------#-----##-", "-----#---##-#--#------#-------", "-#-##--#---#---#-----#----#---", "####-##------##--#-#---------#", "-#----#------#--##--#---------", "--##---#----#--#--------##-#--", "----##---#--------#---##-##---", "---#-#-#----------#-#---#---##", "#--#-------#--##---#-----#---#", "----#--#-#----#-#--#--#------#", "---------#---#----##--#-##----", "-#-----##-#---##-####---##---#", "#-------#----##----#----------", "---#--------#-#---#--------#--", "-------##---#-----#----#------", "--#------#--------------------", "#----##---------#----------#--", "--#----##--##--#-------###--#-", "#----#------------#-----------", "-----#-#--#------------#------", "---#--#-----#-----#-#-----#---", "##--#-#--###-#----##-#---#---#", "--------#-##-------------#---#", "-#-#------##---#-#-----#------", "#-----#------#--#-###---------"}

    Returns: 597229950

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

    Returns: 359126101

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

    Returns: 403406780

  30. {"-#--#-#--#-----#--#-----------", "------#-####-----#----#------#", "-#----#-------------#-------##", "----##-----#-----#---------##-", "---------#------------##-----#", "-------#------##------#--#---#", "-#---------#----------#-------", "---------#--------#------##--#", "---------#--------------#--##-", "------#--#-#---------------#--", "------#------#-------#-#------", "-#------#-#----#------#--##---", "-----------#---##---#--#------", "---------------#-#-##-----#---", "----#-#--------#-------------#", "---------#--------------------", "##-#------#-#-----#-----------", "-----#--#-#-#----#---#--------", "--------------#--#--###-----#-", "--------#---------#---#-----#-", "---#-----------#------#--#---#", "----#---#------##-#-----##---#", "------#-----#--------------#--", "---#--#-------#---------------", "--------#---------#---#------#", "-----#---------#--------------", "---------------#-----------#-#", "#----#--#--#-#------#-----#---", "-------##--#-------#----------", "-----#-----------#------#-#---"}

    Returns: 876513981

  31. {"-----#------#-----#-----------", "------------------#---#-------", "--#-----#--##--#-#----#----#--", "#---##----##-----#-----------#", "#-------------#---------#-----", "#-##-#-#---#----#-------------", "-#---#------#----#---------#--", "---------#--------#--#--------", "----#------------#------------", "----------------#--#----#----#", "------------#--------#--#-----", "-----#-----------------##-----", "#----------#------------------", "----#-#---------##---#-------#", "--------------##----#--##--#--", "-#-----#-##-#---------#-------", "-------#----#----------#------", "#------##---------------------", "-------------#---#-----------#", "--#-----------------##--------", "----------#------#------------", "--------#--#--#---#----------#", "-----------------#------#-#---", "-----#-------------------##---", "---------##-----#-------------", "#-#---#--#-#---#----##--------", "-##--#--------#-------#---#---", "#--##----------#---#-#--------", "---------#---#---------#-#----", "-------#--------#-#-----------"}

    Returns: 193642193

  32. {"--#-#-----#-#---#----##----#--", "------#---#--###--#---###----#", "---#---###----#--#-#-----#-#--", "##---#-----#---------#--##--##", "-----#------#-#---#-----#-----", "---#-#-#--------------#---##--", "-----#--------#------#-----#--", "###----------#---#-----###--#-", "---#--###---#--#--#-###-#-#--#", "-#---#----------------#-#-----", "--#---#--#-------#---#---#---#", "-##-##--#-#---------#---#--#--", "------------#-#-###-------#--#", "-#--#--##--##--#-----#-#--#-##", "----#-------#-------#-------##", "###----#---------#------##-#--", "#-#-----###--##-----#--#####--", "-#--#----##-#---#-##-----#--#-", "---------------#-----#--#--#--", "--#--#----#-----#----#--------", "---#---------------#-##--###--", "##----##--#-------#--#-----###", "#--#-----#----#-##--#---------", "--##-#---#-#--#-#--#----------", "-##--#--#---#------#----#----#", "-------#----#-##---#----##--#-", "#------##--#----##--#-#-------", "---#-------#-#--#-#--#----##--", "##--#-----------###-#---#---#-", "-#--#----#------#----#--------"}

    Returns: 735864682

  33. {"--------#--------#------------", "--#--------#-#---------#-#-##-", "---------------##-------------", "-----------#---#---#----#----#", "-----#--#-#-#----##-----------", "----------------------#-#-----", "---------#--------------#--#--", "#--------#-#----------#-#-----", "#---#----------------##-------", "-----##---#-----------#---#---", "-------##-------#---#--------#", "------------------------------", "#-#------##---#-#-#---------#-", "------#-----------#-----#-----", "---#----#-#-------------------", "--#---------------#-----------", "-----##-#---------#--------#--", "-#-#----#-#--------------##---", "---#-----#--#-------------##-#", "----##-----#----#-----------##", "---------------------------#--", "---#---#-#------#-------------", "----##---#--------------------", "----#---------------#-#--#----", "--------------------###-------", "---#-----#--#----------#----#-", "----#-----#-#--##-------------", "-#--#---------#------------#--", "-#----#----------##------#---#", "-----#----#------#----#-------"}

    Returns: 289636508

  34. {"------------#--#--------------", "-------------#--#-#--#-#------", "-------#---#----#-#----#---#--", "-------#------#------#---#--#-", "-------#----##-#--#-----------", "----##--------#-----------#---", "--#--------------#-----------#", "---#----------#---------------", "-------------------#----------", "---------##-------------------", "------------#------------#--#-", "--#------------------#-#------", "--------------------#---------", "-----#-----#---#--------#-----", "--#--#------------------------", "----------#------#-------#----", "#-#-----#-------------#-------", "----------------#---#---------", "-----------#------------------", "----------#-------------#-----", "-----##--------#-------------#", "---#---#--#-------------------", "------#-----#--#--------#-----", "-#----#--#----#---------------", "------------------------------", "--#---------------#------#----", "-------------------------#----", "---------#-###-------------#--", "--##-------------#--#---------", "---#-#-#-----#----#-#---------"}

    Returns: 24631739

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

    Returns: 819583171

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

    Returns: 759377346

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

    Returns: 412059707

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

    Returns: 425858887

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

    Returns: 285948706

  40. {"---------", "---------", "---------", "---------", "---------", "---------", "---------", "---------", "---------", "---------", "---------", "---------", "---------", "---------", "---------", "---------"}

    Returns: 24

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

    Returns: 566076375

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

    Returns: 12156928

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

    Returns: 142606336

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

    Returns: 1088

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

    Returns: 732742166

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

    Returns: 2616

  47. {"--", "--"}

    Returns: 3

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

    Returns: 208896

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

    Returns: 735313221

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

    Returns: 10

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

    Returns: 2112

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

    Returns: 986906381

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

    Returns: 7680

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

    Returns: 146624343

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

    Returns: 906604960

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

    Returns: 780120965

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

    Returns: 507982897

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

    Returns: 642381515

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

    Returns: 9961472

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

    Returns: 65

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

    Returns: 272

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

    Returns: 2048

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

    Returns: 26

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

    Returns: 56


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: