def dfs(matrix,path,i,j,cache):     if(cache[i][j] != 0):         return cache[i][j]     for k in range(len(path)):         x,y = i+path[k][0],j+path[k][1]         if(x >= 0 and x < len(matrix) and y >= 0 and y < len(matrix[0]) and matrix[i][j] > matrix[x][y]):             cache[i][j] = max(cache[i][j],dfs(matrix,path,x,y,cache))     cache[i][j] = cache[i][j] + 1     return cache[i][j] line = input().split() m = int(line[0]) n = int(line[1]) matrix = list() cache = list() for i in range(m):     line = input().split()     matrix.append(list())     cache.append(list())     for j in range(n):         matrix[i].append(line[j])         cache[i].append(0) if(m == 0):     print(0) else:     path = [[-1,0],[0,-1],[1,0],[0,1]]     mmax = 0     for i in range(m):         for j in range(n):             mmax = max(mmax,dfs(matrix,path,i,j,cache))     print(mmax)