Word Squared
시간 제한1초메모리 제한512 MB
1부터 n까지의 순열이 주어질 때, 각 행과 각 열에 그 순열이 연속한 부분으로 나타나는 가장 작은 정사각 행렬을 만든다.
문제
1부터 n까지의 수를 나열한 순열이 주어진다. 다음 조건을 만족하는 정사각 행렬을 구하라.
- 행렬에는 주어진 순열에 등장하는 수만 들어가야 한다.
- 주어진 순열이 행렬의 모든 행에 왼쪽에서 오른쪽으로 읽을 때 연속된 부분 수열로 나타나야 한다.
- 주어진 순열이 행렬의 모든 열에 위에서 아래로 읽을 때 연속된 부분 수열로 나타나야 한다.
- 행렬의 크기는 가능한 한 작아야 한다.
입력
첫째 줄에 양의 정수 n이 주어진다. (n ≤ 500)
둘째 줄에 순열을 이루는 n개의 정수가 공백으로 구분되어 주어진다.
출력
첫째 줄에 행렬의 크기 m을 출력한다. 다음 m개 줄에 행렬의 m개 행을 차례로 출력한다. 각 줄에는 해당 행의 값 m개를 공백으로 구분하여 출력한다.
크기 m은 가능한 한 작아야 한다. 조건을 만족하는 답이 여러 개라면 그중 아무거나 출력한다.
힌트
다음은 예제의 행렬에서 순열이 나타나는 위치를 표시한 것이다.
