import sys
import copy
sys.setrecursionlimit(10000000)
input = sys.stdin.readline
N = int(input())
graph = []
for _ in range(N):
graph.append(list(map(int, input().split())))
dx = [0,0,1,-1]
dy = [1,-1,0,0]
def DFS(x,y):
tmp_graph[x][y] = 0
for i in range(4):
nx = x+dx[i]
ny = y+dy[i]
if 0<=nx<N and 0<=ny<N and tmp_graph[nx][ny] > h:
DFS(nx,ny)
best = 0
for i in range(N):
for j in range(N):
best = max(best, graph[i][j])
ans = []
for h in range(best):
cnt = 0
tmp_graph = copy.deepcopy(graph)
for i in range(N):
for j in range(N):
if tmp_graph[i][j] > h:
DFS(i,j)
cnt += 1
ans.append(cnt)
print(max(ans))
그래프 내의 최대 값을 찾아내어 그 최대 값의 범위 만큼 DFS/BFS를 수행하여 가장 많은 수행 횟수를 출력한다.