from sys import setrecursionlimit
setrecursionlimit(10000)
n = int(input())
grid = []
cnt = 0
visited = [[Falsefor i inrange(n)] for i inrange(n)]
for _ inrange(n):
grid.append(list(map(int, input().split())))
defis_valid(x,y):
if x >= 0and x < n and y < n and y >= 0:
returnTruereturnFalsedefdfs(x,y):
ifnot is_valid(x,y):
returnFalseif visited[x][y] == Falseand grid[x][y] != 0:
visited[x][y] = True
dfs(x+1,y)
dfs(x-1,y)
dfs(x,y+1)
dfs(x,y-1)
returnTruereturnFalsedefrain(depth):
global visited
visited = [[Falsefor i inrange(n)] for i inrange(n)]
for x inrange(n):
for y inrange(n):
if grid[x][y] <= depth:
grid[x][y] = 0
min_depth = min(min(grid))
max_depth = max(max(grid))
depth = min_depth
answers = [1]
while(depth <= max_depth):
rain(depth)
cnt = 0for x inrange(n):
for y inrange(n):
if dfs(x,y):
cnt += 1
answers.append(cnt)
depth += 1print(max(answers))