def neighbors4(r: int, c: int) -> list[tuple[int, int]]: res = [] for dr, dc in [(-1, 0), (1, 0), (0, -1), (0, 1)]: nr = r + dr nc = c + dc if not (0 <= nr < H and 0 <= nc < W): continue res.append((nr, nc)) return res H, W = map(int, input().split()) A = [] for _ in range(H): A.append(list(map(int, input().split()))) xs = [] for i in range(H): for j in range(W): xs.append((A[i][j], i, j)) dp = [[1] * W for _ in range(H)] for _, r, c in sorted(xs, key=lambda x: x[0]): for nr, nc in neighbors4(r, c): if A[nr][nc] > A[r][c]: dp[nr][nc] = max(dp[nr][nc], dp[r][c] + 1) ans = 0 for i in range(H): for j in range(W): ans = max(ans, dp[i][j]) print(ans)