1. def solution(m,n,matrix,in3,begin):
    2. a = [] # 标记已经参观过的是热门还是普通
    3. ans=[]
    4. hashtable = []
    5. def route(i, j,k):
    6. hashtable.append((i, j))
    7. a.append(k)
    8. if matrix[i][j] != k:
    9. return
    10. if len(a) == n * m:
    11. ans.append(1)
    12. return
    13. dd=in3[len(a)]
    14. for x, y in ((i+1,j),(i-1,j),(i,j-1),(i,j+1)):
    15. if 0 <= x < n and 0 <= y < m and (x, y) not in hashtable:
    16. route(x, y, dd)
    17. hashtable.pop()
    18. a.pop(-1)
    19. return
    20. for i in (0,n-1):
    21. for j in range(m):
    22. route(i,j,begin)
    23. if hashtable!=[]:
    24. hashtable.pop()
    25. if a!=[]:
    26. a.pop(-1)
    27. for j in (0,m-1):
    28. for i in range(1,n-1):
    29. route(i,j,begin)
    30. if hashtable!=[]:
    31. hashtable.pop()
    32. if a!=[]:
    33. a.pop(-1)
    34. return len(ans)
    35. in1 = input().split(' ')
    36. n = int(in1[0])
    37. m = int(in1[1])
    38. matrix = [[0] * m for _ in range(n)]
    39. for i in range(n):
    40. in2 = input().split(' ')
    41. matrix[i] = in2
    42. matrix=[[int(x) for x in matrix[i]]for i in range(n)]
    43. in3 = input().split(' ')
    44. in3=[int(x) for x in in3]
    45. begin = in3[0]
    46. if sum(sum(matrix[i]) for i in range(n))!=sum(in3):
    47. print(0)
    48. else:
    49. ans=solution(m,n,matrix,in3,begin)
    50. print(ans% 11192869)