아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

홍수

시간 제한2초메모리 제한1024 MB

난이도

아직 분류되지 않았습니다

정답자
아직 제출이 없습니다

문제

바이토치아에는 폭우가 자주 내려서, 지역 농부들이 특히 큰 피해를 입는다. 이들의 정사각형 밭은 m×nm \times n 직사각형으로 나란히 놓여 있다(m행, 각 행에 n개, 총 mnmn개). 농부들이 가장 괴로운 경우는 이웃 밭에 내린 빗물이 자기 밭으로 넘쳐 들어올 때다. 그래서 밭 경계마다 장벽을 세우고, 이를 둑이라고 부른다. 인접한 밭 두 개 사이에는 높이가 1밀리미터에서 HH밀리미터 사이인 둑이 하나씩 있다. 직사각형의 바깥 경계는 모두 높이 HH밀리미터의 둑으로 막혀 있다.

아주 강한 비가 내린 뒤 밭의 물 높이가 어떻게 될 수 있는지 살펴본다. 단순하게 만들기 위해 각 밭의 물 높이(밀리미터)가 0부터 HH까지의 정수인 경우만 고려한다. 인접한 두 밭 사이에 높이 hh밀리미터의 둑이 있으면, 두 밭의 물 높이는 같거나 둘 다 hh 이하여야 한다. 그렇지 않으면 높은 쪽 밭의 물(hh밀리미터를 넘는 부분)이 둑을 넘어 다른 밭으로 흐른다.

서로 다른 홍수 시나리오의 개수를 세는 프로그램을 작성하라. 적어도 한 밭의 물 높이가 다르면 두 시나리오는 다른 것으로 본다. 결과가 매우 클 수 있으므로 1000000007로 나눈 나머지를 출력한다.

입력

첫 줄에 직사각형의 크기 mm, nn과 밀리미터 단위의 최대 물 높이 HH (m,n,H≥1m, n, H \ge 1)가 정수 세 개로 주어진다.

n>1n > 1이면, 다음 mm줄에 각각 n−1n-1개의 정수가 주어진다. jj번째 줄의 ii번째 수는 jj행에 있는 밭 ii와 밭 i+1i+1 사이 둑의 높이다.

m>1m > 1이면, 이어서 m−1m-1줄에 각각 nn개의 정수가 주어진다. jj번째 줄의 ii번째 수는 ii열에 있는 밭 jj와 밭 j+1j+1 사이 둑의 높이다.

출력

가능한 홍수 시나리오의 개수를 1000000007로 나눈 나머지를 정수 하나로 출력한다.

제한

mn≤500000mn \le 500000

H≤109H \le 10^9

힌트

아래 입력에서는 모든 밭의 물 높이가 2인 경우(1가지)가 있다. 또한 6개의 밭이 각각 독립적으로 물 높이 0 또는 1을 가질 수 있다(26=642^6 = 64가지).

예제1

  1. 예제 1

    입력
    3 2 2
    1
    1
    1
    1 2
    1 1
    
    예상 출력
    65