ll h,w,a[500][500]; ll f(ll y,ll x:Memoize){ ll b=a[y][x]; return max( y&&a[y-1][x]>b?f(y-1,x):0, ~y+h&&a[y+1][x]>b?f(y+1,x):0, x&&a[y][x-1]>b?f(y,x-1):0, ~x+w&&a[y][x+1]>b?f(y,x+1):0 )+1; } { rd(h,w,a(h,w)); wt(max[y,0,h,x,0,w](f(y,x))); }