오컬트 정사각형
시간 제한1초메모리 제한512 MB
소수 P가 주어졌을 때, 값이 0부터 P까지이고 각 수 i가 최대 i번만 나오는 P×P 마법 제곱을 만들거나 불가능하면 -1을 출력합니다.
문제
마방진은 각 행, 각 열, 두 대각선에 놓인 수의 합이 모두 같은, 음이 아닌 정수의 정사각형 배열이다. 오컬트 정사각형은 개의 행과 개의 열을 가진 마방진이며, 다음 조건을 추가로 만족한다.
- 정사각형의 모든 정수는 0 이상 이하이다.
- 모든 에 대해 정수 는 정사각형에 최대 번 나타난다.
- 정사각형에 서로 다른 양의 정수가 적어도 두 개 있다.
예를 들어 아래는 5 × 5 오컬트 정사각형이며, 각 행, 각 열, 두 대각선의 합이 모두 7이다.
0 0 0 3 4
2 4 0 0 1
0 0 3 4 0
5 0 0 0 2
0 3 4 0 0
주어진 소수 에 대해 오컬트 정사각형을 만들거나, 그러한 정사각형이 존재하지 않는다고 판단하라.
입력
첫째 줄에 소수 가 주어진다(). 는 오컬트 정사각형의 행과 열의 개수이다.
출력
오컬트 정사각형이 존재하지 않으면 -1을 한 줄에 출력한다. 그렇지 않으면 줄에 걸쳐 각 줄마다 정수 개를 출력한다. 번째 줄의 번째 정수는 정사각형의 행 열에 있는 수이다. 조건을 만족하는 정사각형이라면 어느 것을 출력해도 된다.