마법의 직사각형

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

문제

33개의 행과 NN개의 열로 이루어진 직사각형이 있습니다. 각 칸에 11부터 3N3N까지의 정수를 한 번씩 써넣어, 모든 행에서는 왼쪽에서 오른쪽으로, 모든 열에서는 위에서 아래로 숫자가 커지도록 만들려고 합니다. 이렇게 채우는 방법은 모두 몇 가지일까요?

일부 칸의 값은 이미 정해져 있을 수 있습니다. 가능한 방법의 수가 매우 커질 수 있으므로, 그 수를 10000071000007로 나눈 나머지를 출력하면 됩니다.

입력

첫째 줄에 자연수 NN (1N2001 \le N \le 200)이 주어집니다.

이어지는 세 줄에는 직사각형의 각 행이 위에서부터 순서대로, 각 행 안에서는 왼쪽에서 오른쪽 순서로 주어집니다. 각 줄에는 NN개의 정수 ai,ja_{i,j} (0ai,j3N0 \le a_{i,j} \le 3N)가 있습니다. ai,j=0a_{i,j} = 0은 그 칸의 값이 아직 정해지지 않았음을 뜻하고, 그 외의 경우에는 그 칸의 값이 ai,ja_{i,j}임을 뜻합니다.

출력

조건을 만족하도록 채우는 방법의 수를 10000071000007로 나눈 나머지를 한 줄에 출력합니다.