매직스퀘어

N x N 행렬이 주어질 때 모든 행, 열, 두 대각선의 합이 같고 1부터 N^2까지의 수가 한 번씩 쓰였는지 판정한다.

쉬움2구현행렬배열아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

수학에서 행렬은 수나 기호, 수식을 네모꼴로 배열한 것이다. 가로줄을 행, 세로줄을 열이라고 한다. 행의 개수와 열의 개수가 같은 행렬을 정방행렬이라고 한다.

매직스퀘어는 다음 두 성질을 만족하는 n×nn \times n 정방행렬이다.

  1. 원소는 11부터 n2n^2까지의 정수이고, 중복되는 수가 없이 모두 달라야 한다.
  2. 각 행의 합, 각 열의 합, 두 대각선(왼쪽 위에서 오른쪽 아래, 오른쪽 위에서 왼쪽 아래)의 합이 모두 같다. 이 합은 n×(n2+1)2\dfrac{n \times (n^2 + 1)}{2}이다.

n=2n = 2이면 합은 55, n=3n = 3이면 합은 1515, n=4n = 4이면 합은 3434이다. n=2n = 2인 매직스퀘어는 존재하지 않는다.

정방행렬을 입력받아 그 행렬이 매직스퀘어인지 판정하는 프로그램을 작성하시오.

입력

첫째 줄에 정방행렬의 크기 NN이 주어진다. (3N1003 \le N \le 100)

둘째 줄부터 NN개의 줄에 각 줄마다 NN개의 정수가 공백으로 구분되어 주어진다. 각 정수는 11 이상 N2N^2 이하이다.

출력

주어진 정방행렬이 매직스퀘어이면 TRUE를, 아니면 FALSE를 출력한다.