마법의 직사각형
시간 제한2초메모리 제한128 MB
3행 N열 격자에 1부터 3N까지 숫자를 행과 열이 모두 증가하도록 미리 채운 칸에 맞춰 넣는 경우의 수를 1000007로 나눈 나머지를 구합니다.
문제
개의 행과 개의 열로 이루어진 직사각형이 있습니다. 각 칸에 부터 까지의 정수를 한 번씩 써넣어, 모든 행에서는 왼쪽에서 오른쪽으로, 모든 열에서는 위에서 아래로 숫자가 커지도록 만들려고 합니다. 이렇게 채우는 방법은 모두 몇 가지일까요?
일부 칸의 값은 이미 정해져 있을 수 있습니다. 가능한 방법의 수가 매우 커질 수 있으므로, 그 수를 로 나눈 나머지를 출력하면 됩니다.
입력
첫째 줄에 자연수 ()이 주어집니다.
이어지는 세 줄에는 직사각형의 각 행이 위에서부터 순서대로, 각 행 안에서는 왼쪽에서 오른쪽 순서로 주어집니다. 각 줄에는 개의 정수 ()가 있습니다. 은 그 칸의 값이 아직 정해지지 않았음을 뜻하고, 그 외의 경우에는 그 칸의 값이 임을 뜻합니다.
출력
조건을 만족하도록 채우는 방법의 수를 로 나눈 나머지를 한 줄에 출력합니다.