#include <iostream>
using namespace std;
const int MAX_SIZE = 50;
int main() {
int n, m, mt[MAX_SIZE + 1][MAX_SIZE + 1];
cin >> n >> m;
// Citirea matricei
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
cin >> mt[i][j];
}
}
// Parcurgerea spiralei
int left = 1, right = m, top =1, bottom = n;
int safePlace = -1; // Inițializăm cu o valoare mică
int flag = 1;
while (left <= right && top <= bottom) {
// Parcurgerea de sus în jos
for (int i = left; i <= right; ++i) {
if (mt[top][i] <= safePlace) {
flag = 0;
}
safePlace = mt[top][i];
}
top++;
// Parcurgerea de dreapta la stânga
for (int i = top; i <= bottom; ++i) {
if (mt[i][right] <= safePlace) {
flag = 0;
}
safePlace = mt[i][right];
}
right--;
if (top <= bottom) {
// Parcurgerea de jos în sus
for (int i = right; i >= left; --i) {
if (mt[bottom][i] <= safePlace) {
flag = 0;
}
safePlace = mt[bottom][i];
}
bottom--;
}
if (left <= right) {
// Parcurgerea de la stânga la dreapta
for (int i = bottom; i >= top; --i) {
if (mt[i][left] <= safePlace) {
flag = 0;
}
safePlace = mt[i][left];
}
left++;
}
}
if (flag == 1) {
cout << "DA";
} else {
cout << "NU";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1BWF9TSVpFID0gNTA7CgppbnQgbWFpbigpIHsKICAgIGludCBuLCBtLCBtdFtNQVhfU0laRSArIDFdW01BWF9TSVpFICsgMV07CiAgICBjaW4gPj4gbiA+PiBtOwoKICAgIC8vIENpdGlyZWEgbWF0cmljZWkKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IG07ICsraikgewogICAgICAgICAgICBjaW4gPj4gbXRbaV1bal07CiAgICAgICAgfQogICAgfQoKICAgIC8vIFBhcmN1cmdlcmVhIHNwaXJhbGVpCiAgICBpbnQgbGVmdCA9IDEsIHJpZ2h0ID0gbSwgdG9wID0xLCBib3R0b20gPSBuOwogICAgaW50IHNhZmVQbGFjZSA9IC0xOyAvLyBJbmnIm2lhbGl6xINtIGN1IG8gdmFsb2FyZSBtaWPEgwoJaW50IGZsYWcgPSAxOwogICAgd2hpbGUgKGxlZnQgPD0gcmlnaHQgJiYgdG9wIDw9IGJvdHRvbSkgewogICAgICAgIC8vIFBhcmN1cmdlcmVhIGRlIHN1cyDDrm4gam9zCiAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICBpZiAobXRbdG9wXVtpXSA8PSBzYWZlUGxhY2UpIHsKICAgICAgICAgICAgICAgIGZsYWcgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNhZmVQbGFjZSA9IG10W3RvcF1baV07CiAgICAgICAgfQogICAgICAgIHRvcCsrOwoKICAgICAgICAvLyBQYXJjdXJnZXJlYSBkZSBkcmVhcHRhIGxhIHN0w6JuZ2EKICAgICAgICBmb3IgKGludCBpID0gdG9wOyBpIDw9IGJvdHRvbTsgKytpKSB7CiAgICAgICAgICAgIGlmIChtdFtpXVtyaWdodF0gPD0gc2FmZVBsYWNlKSB7CiAgICAgICAgICAgICAgICBmbGFnID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBzYWZlUGxhY2UgPSBtdFtpXVtyaWdodF07CiAgICAgICAgfQogICAgICAgIHJpZ2h0LS07CgogICAgICAgIGlmICh0b3AgPD0gYm90dG9tKSB7CiAgICAgICAgICAgIC8vIFBhcmN1cmdlcmVhIGRlIGpvcyDDrm4gc3VzCiAgICAgICAgICAgIGZvciAoaW50IGkgPSByaWdodDsgaSA+PSBsZWZ0OyAtLWkpIHsKICAgICAgICAgICAgICAgIGlmIChtdFtib3R0b21dW2ldIDw9IHNhZmVQbGFjZSkgewogICAgICAgICAgICAgICAgICAgIGZsYWcgPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2FmZVBsYWNlID0gbXRbYm90dG9tXVtpXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBib3R0b20tLTsKICAgICAgICB9CgogICAgICAgIGlmIChsZWZ0IDw9IHJpZ2h0KSB7CiAgICAgICAgICAgIC8vIFBhcmN1cmdlcmVhIGRlIGxhIHN0w6JuZ2EgbGEgZHJlYXB0YQogICAgICAgICAgICBmb3IgKGludCBpID0gYm90dG9tOyBpID49IHRvcDsgLS1pKSB7CiAgICAgICAgICAgICAgICBpZiAobXRbaV1bbGVmdF0gPD0gc2FmZVBsYWNlKSB7CiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzYWZlUGxhY2UgPSBtdFtpXVtsZWZ0XTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZWZ0Kys7CiAgICAgICAgfQogICAgfQoJaWYgKGZsYWcgPT0gMSkgewoJCWNvdXQgPDwgIkRBIjsKCX0gZWxzZSB7CgkJY291dCA8PCAiTlUiOwoJfQoKICAgIHJldHVybiAwOwp9Cg==