#include<bits/stdc++.h>
#define endl "\n"
#define int long long
using namespace std;
int d[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
void slove() {
    int n;
    std::cin >> n;
    std::vector<std::vector<int>> a(n + 2, std::vector<int>(n + 2, 0));
    for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) std::cin >> a[i][j];
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            int cnt1 = 0, cnt2 = 0;
            for (int k = 0; k < 4; k++) {
                int dx = i + d[k][0], dy = j + d[k][1];
                if (a[dx][dy] != 0 && a[i][j] != 0 && (a[i][j]*a[dx][dy] > 0)) {
                    std::cout << "NO" << endl;
                    return ;
                }
            }
        }
    }
    std::cout << "YES" << endl;
}
signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);
    int T = 1;
    //std::cin>>T;
    while (T--)    {
        slove();
    }
    return 0;
}

发现第一行和最后一行不能更改且为0,所以最终状态是固定的,一定为0.并且我们发现,如果要令一个正数变为0,那么他的四个方向都不能有正数,负数同理。那么完美AC。