#include using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) int main() { int H, W; cin >> H >> W; vector> A(H, vector (W)); rep(h, H) rep(w, W) cin >> A[h][w]; vector dh = {0, 1, 0, -1}; vector dw = {1, 0, -1, 0}; auto dfs = [&](auto dfs, int x, int y, int l, vector> f) -> int { f[x][y] = true; int nl = l; rep(i, 4) { int nx = x + dh[i]; int ny = y + dw[i]; if (nx < 0 || nx >= H || ny < 0 || ny >= W) continue; if (f[nx][ny]) continue; if (A[nx][ny] <= A[x][y]) continue; nl = max(dfs(dfs, nx, ny, l+1, f), nl); } return nl; }; int maxLen = 0; rep(h, H) rep(w, W) { vector> f(H, vector (W, false)); maxLen = max(dfs(dfs, h, w, 1, f), maxLen); } cout << maxLen << endl; return 0; }