import sys
sys.setrecursionlimit(1000000)
n = int(input())
graph = []
for i in range(n):
graph.append(list(map(int,input().split())))
graph
dp = [[0]*n for _ in range(n)]
dx = [-1,1,0,0]
dy = [0,0,-1,1]
def dfs(x,y):
if dp[x][y]:
return dp[x][y]
dp[x][y] = 1
for i in range(len(dx)):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx <n and 0 <= ny < n:
if graph[nx][ny] > graph[x][y]:
dp[x][y] = max(dp[x][y], dfs(nx,ny) + 1)
return dp[x][y]
result = 1
for i in range(n):
for j in range(n):
result = max(result,dfs(i,j))
print(result)