빛의 왕과 거울의 미로 2

아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

어린 빛의 왕은 장난감을 좋아한다. 요즘 마음에 들어 하는 장난감은 N×MN \times M 크기 직사각형 판의 각 칸에 대각선 거울을 꽂았다 뺐다 하는 장난감이다. 거울을 원하는 대로 꽂은 다음 테두리에 있는 어떤 칸의 중심을 향해, 그 칸의 바깥쪽 변에 수직으로 레이저를 쏘면 레이저가 다른 칸으로 빠져나온다. 어린 빛의 왕은 이 모습을 신기해한다.

테두리 칸에는 다음 방법으로 자연수 번호를 하나씩 붙였다.

  • 위쪽 MM개 칸: 왼쪽에서 오른쪽으로 11부터 MM까지
  • 왼쪽 NN개 칸: 위쪽에서 아래쪽으로 M+1M+1부터 M+NM+N까지
  • 오른쪽 NN개 칸: 위쪽에서 아래쪽으로 M+N+1M+N+1부터 M+N+NM+N+N까지
  • 아래쪽 MM개 칸: 왼쪽에서 오른쪽으로 M+N+N+1M+N+N+1부터 M+N+N+MM+N+N+M까지

네 모서리 칸은 번호를 두 개 받는다. 위쪽 변으로 들어가는 레이저와 왼쪽 변으로 들어가는 레이저는 서로 다른 번호를 쓴다. 예를 들어 N=2N = 2, M=3M = 3인 판의 테두리 번호는 다음과 같다.

      1   2   3
  4   .   .   .   6
  5   .   .   .   7
      8   9  10

어린 빛의 왕은 xx에 레이저를 쏘면 yy로 레이저가 나오는 장난감에 관심이 많다. 또 특별한 배치를 원하기 때문에, 원하는 거울 배치가 길이 MM인 문자열 NN개로 주어진다. 각 문자의 뜻은 다음과 같다.

  • /: 왼쪽에서 들어온 레이저는 위쪽으로, 위쪽에서 들어온 레이저는 왼쪽으로, 오른쪽에서 들어온 레이저는 아래쪽으로, 아래쪽에서 들어온 레이저는 오른쪽으로 반사하는 거울.
  • \: 왼쪽에서 들어온 레이저는 아래쪽으로, 위쪽에서 들어온 레이저는 오른쪽으로, 오른쪽에서 들어온 레이저는 위쪽으로, 아래쪽에서 들어온 레이저는 왼쪽으로 반사하는 거울.
  • .: 거울이 없어 레이저가 아무 방해 없이 지나가는 칸.
  • ?: 위 셋 중 어느 것이 와도 되는 칸.

?가 많을수록 만들 수 있는 배치가 많아진다. 그중 xx에 쏜 레이저가 yy로 나오는 배치가 몇 개인지 세는 프로그램을 작성하라.

입력

첫 번째 줄에 판의 크기를 뜻하는 두 정수 NN, MM (1N,M81 \le N, M \le 8)과 두 정수 xx, yy (1x,y2(N+M)1 \le x, y \le 2(N+M))가 공백으로 구분되어 주어진다.

다음 NN개 줄에는 각각 길이가 MM인 문자열이 주어진다. 이 문자열은 /, \, ., ?로만 이루어져 있다.

출력

첫 번째 줄에 xx에 쏜 레이저가 yy로 나오는 배치의 개수를 1000710007로 나눈 나머지를 출력한다.

힌트

거울을 꽂은 칸 하나는 네 변을 두 쌍으로 짝지어 준다. .은 위와 아래, 왼쪽과 오른쪽을 짝짓고, /는 위와 왼쪽, 아래와 오른쪽을 짝지으며, \는 위와 오른쪽, 아래와 왼쪽을 짝짓는다. 판 전체에서 변 조각이 이렇게 이어지면 테두리 번호는 항상 둘씩 짝을 이루므로, xxyy가 같으면 답은 00이다.