소 사방치기
시간 제한1초메모리 제한256 MB
값이 달라지는 칸으로만 아래쪽과 오른쪽으로 점프해 왼쪽 위에서 오른쪽 아래까지 가는 경우의 수를 1000000007로 나눈 나머지로 구합니다.
문제
사람이 사방치기를 즐기듯이 농부 존의 소도 자기들끼리 하는 변형 규칙을 만들었다. 무게가 1톤에 가까운 둔한 동물이 하는 놀이라 소 사방치기는 거의 항상 큰 사고로 끝난다. 그래도 소는 거의 매일 오후에 놀이판을 다시 벌인다.
놀이판은 격자다 (, ). 각 칸에는 이상 이하의 정수 하나가 적혀 있다 (). 소는 왼쪽 위 칸에서 출발해 여러 번 뛰어서 오른쪽 아래 칸에 도착한다. 한 번의 도약은 다음 세 조건을 모두 만족할 때만 유효하다.
- 도착 칸에 적힌 정수가 현재 칸에 적힌 정수와 다르다.
- 도착 칸은 현재 칸보다 적어도 한 행 아래에 있다.
- 도착 칸은 현재 칸보다 적어도 한 열 오른쪽에 있다.
왼쪽 위 칸에서 오른쪽 아래 칸까지 가는 서로 다른 유효한 도약 순서가 몇 가지인지 세어라.
입력
첫째 줄에 정수 , , 가 주어진다.
이어지는 개 줄에는 각각 개의 정수가 주어진다. 모두 이상 이하다.
출력
왼쪽 위 칸에서 오른쪽 아래 칸까지 가는 서로 다른 방법의 수를 로 나눈 나머지를 한 줄에 출력한다.