#include #include #include using namespace std; struct st{ int h,w; int a; bool re; }; long long dp[510][510][2]; int main(){ int h,w;cin>>h>>w; vector> A(h,vector(w)); for(int i = 0; h > i; i++){ for(int j = 0; w > j; j++){ cin>>A[i][j]; dp[i][j][0] = dp[i][j][1] = -1; } } dp[0][0][0] = A[0][0]; for(int i = 0; h > i; i++){ for(int j = 0; w > j; j++){ if(i){ if(A[i][j] >= dp[i-1][j][0]){ if(A[i][j] < dp[i-1][j][1]){ dp[i][j][1] = max(dp[i][j][1], dp[i-1][j][1]+A[i][j]); } if(!(i+1 == h && j+1 == w)){ dp[i][j][1] = max(dp[i][j][1], dp[i-1][j][0]); } }else{ if(dp[i-1][j][1] != -1)dp[i][j][1] = max(dp[i][j][1], dp[i-1][j][1]+A[i][j]); dp[i][j][0] = max(dp[i][j][0], dp[i-1][j][0]+A[i][j]); } } if(j){ if(A[i][j] >= dp[i][j-1][0]){ if(A[i][j] < dp[i][j-1][1]){ dp[i][j][1] = max(dp[i][j][1], dp[i][j-1][1]+A[i][j]); } if(!(i+1 == h && j+1 == w)){ dp[i][j][1] = max(dp[i][j][1], dp[i][j-1][0]); } }else{ if(dp[i][j-1][1] != -1)dp[i][j][1] = max(dp[i][j][1], dp[i][j-1][1]+A[i][j]); dp[i][j][0] = max(dp[i][j][0], dp[i][j-1][0]+A[i][j]); } } } } cout << (dp[h-1][w-1][0] != -1 || dp[h-1][w-1][1] != -1 ? "Yes" : "No") << endl; }