#include using namespace std; #define int long long signed main(){ int H,W; cin>>H>>W; vector> G(H,vector(W)); for(int i=0;i>G[i][j]; vector> dp(H,vector(W,-1)),ddp(H,vector(W,-1)); dp[0][0] = G[0][0]; for(int i=0;i G[i][j]) ans = max(ans,dp[i-1][j]+G[i][j]); if(j != 0 && dp[i][j-1] > G[i][j]) ans = max(ans,dp[i][j-1]+G[i][j]); if(!(i==H-1 && j == W-1)){ int sub_ans = -1; if(i != 0 && dp[i-1][j] != -1 && dp[i-1][j] <= G[i][j]) sub_ans = max(sub_ans,dp[i-1][j]); if(j != 0 && dp[i][j-1] != -1 && dp[i][j-1] <= G[i][j]) sub_ans = max(sub_ans,dp[i][j-1]); ddp[i][j] = sub_ans; } dp[i][j] = ans; } } /*for(int i=0;i