밤양갱
시간 제한2.5초메모리 제한1024 MB
N×N 격자의 모든 칸을 i개의 인접한 두 칸 조각으로 나눌 때, 조각 등급(두 칸 중 큰 값)의 최댓값을 최소로 하는 값을 i = 1부터 N^2/2까지 각각 구한다.
문제
시우는 크기의 격자 모양 밤양갱을 만들었다. 밤양갱의 각 칸에는 이상 이하의 서로 다른 정수로 등급이 매겨져 있다. 이제 이 밤양갱을 작은 조각으로 잘라 UCPC 참가자들에게 나누어 주려 한다. 이때 하나의 밤양갱 조각은 상하 또는 좌우로 인접한 두 개의 칸으로 이루어지며, 밤양갱 조각의 등급은 그 조각을 이루는 칸의 등급 중 더 큰 쪽을 따른다. 조각의 등급이 작을수록 맛있는 밤양갱이 되기 때문에, 시우는 어떤 참가자들이 맛없는 밤양갱 조각을 받는 일이 없도록 가장 등급이 큰 밤양갱 조각의 등급이 최소가 되도록 밤양갱을 자르려 한다.
그러나 시우는 이번 UCPC의 참가자가 몇 명인지 까먹고 말았다! 다행히 모든 참가자에게 밤양갱 조각을 나누어줄 수 있도록 밤양갱을 만들긴 했지만, 대회 시작 전까지 밤양갱을 잘라 나누어 주기에 시간이 부족했다. 그래서 시우는 밤양갱을 나누어줄 수 있는 모든 참가자 수마다 밤양갱을 자르는 최적의 방법을 찾기로 했다.
이상 이하의 모든 정수 에 대해, 명의 참가자에게 밤양갱 조각을 나누어줄 수 있도록 밤양갱을 자를 때 가장 등급이 큰 밤양갱 조각의 등급의 최솟값을 구하시오.
입력
첫 줄에 밤양갱의 한 변의 길이 이 주어진다. (; 은 짝수)
둘째 줄부터 개의 줄에 걸쳐 각 줄마다 개의 정수가 공백으로 구분되어 주어진다. 번째 줄의 번째 정수 는 밤양갱의 위에서 번째, 왼쪽에서 번째 칸에 매겨진 등급을 의미한다. (; 는 서로 다르다.)
출력
개의 줄에 걸쳐, 번째 줄에 명의 참가자에게 밤양갱 조각을 나누어줄 수 있도록 밤양갱을 자를 때 가장 등급이 큰 밤양갱 조각의 등급의 최솟값을 출력한다.