멋진 배열

N x N 배열의 지워진 칸을 채워 어떤 순열을 골라도 대각선 합이 같아지도록 만드는 경우의 수를 1e9+7로 나눈 나머지로 구합니다.

어려움8조합론수학구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

크기가 N×NN \times N인 배열 AA00부터 N1N-1까지의 정수로 이루어진 순열 PP가 있다.

Sum(A,P)=A[0][P[0]]+A[1][P[1]]++A[N1][P[N1]]\mathrm{Sum}(A, P) = A[0][P[0]] + A[1][P[1]] + \cdots + A[N-1][P[N-1]]

순열 PP를 어떻게 고르더라도 Sum(A,P)\mathrm{Sum}(A, P)가 항상 같으면, 그 배열을 멋진 배열이라고 한다.

일부 칸이 지워진 배열 AA가 주어진다. 지워진 칸을 모두 채워 멋진 배열을 만드는 방법의 수를 구하는 프로그램을 작성하시오. 완성된 배열이 한 칸이라도 다르면 서로 다른 방법으로 센다.

입력

첫째 줄에 배열 AA의 크기 NN (1N501 \le N \le 50)이 주어진다.

둘째 줄부터 NN개의 줄에 배열 AA가 한 줄에 한 행씩 주어진다. 각 줄은 공백 없이 NN개의 문자로 이루어진다. 지워진 칸은 -로 주어지고, 나머지 칸은 00 이상 99 이하의 정수이다.

출력

멋진 배열을 만드는 방법의 수를 1,000,000,007로 나눈 나머지를 첫째 줄에 출력한다.

새로 채우는 수는 00 이상의 정수이며, 99보다 커도 된다. 방법의 수가 무한한 입력은 주어지지 않는다.