N x N 배열의 지워진 칸을 채워 어떤 순열을 골라도 대각선 합이 같아지도록 만드는 경우의 수를 1e9+7로 나눈 나머지로 구합니다.
크기가 N×NN \times NN×N인 배열 AAA와 000부터 N−1N-1N−1까지의 정수로 이루어진 순열 PPP가 있다.
Sum(A,P)=A[0][P[0]]+A[1][P[1]]+⋯+A[N−1][P[N−1]]\mathrm{Sum}(A, P) = A[0][P[0]] + A[1][P[1]] + \cdots + A[N-1][P[N-1]]Sum(A,P)=A[0][P[0]]+A[1][P[1]]+⋯+A[N−1][P[N−1]]
순열 PPP를 어떻게 고르더라도 Sum(A,P)\mathrm{Sum}(A, P)Sum(A,P)가 항상 같으면, 그 배열을 멋진 배열이라고 한다.
일부 칸이 지워진 배열 AAA가 주어진다. 지워진 칸을 모두 채워 멋진 배열을 만드는 방법의 수를 구하는 프로그램을 작성하시오. 완성된 배열이 한 칸이라도 다르면 서로 다른 방법으로 센다.
첫째 줄에 배열 AAA의 크기 NNN (1≤N≤501 \le N \le 501≤N≤50)이 주어진다.
둘째 줄부터 NNN개의 줄에 배열 AAA가 한 줄에 한 행씩 주어진다. 각 줄은 공백 없이 NNN개의 문자로 이루어진다. 지워진 칸은 -로 주어지고, 나머지 칸은 000 이상 999 이하의 정수이다.
-
멋진 배열을 만드는 방법의 수를 1,000,000,007로 나눈 나머지를 첫째 줄에 출력한다.
새로 채우는 수는 000 이상의 정수이며, 999보다 커도 된다. 방법의 수가 무한한 입력은 주어지지 않는다.