#include using namespace std; using ll = long long; using ld = long double; using pii = pair; using pll = pair; using vi = vector; #define pb push_back #define eb emplace_back #define fi first #define se second #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() #define rep(i, a, b) for (int i = (a); i < (b); i++) mt19937 rng(random_device{}()); int main() { cin.tie(0)->sync_with_stdio(0); int n; cin >> n; vector> d(n, vector(n)); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) cin >> d[i][j]; } bool ok = true; for (int i = 0; i < n; i++) { if (d[i][i] != 0) ok = false; for (int j = 0; j < n; j++) if (j != i && d[i][j] == 0) ok = false; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (d[i][j] != d[j][i]) ok = false; for (int k = 0; k < n; k++) { if (d[i][j] > d[i][k] + d[k][j]) ok = false; } } } if (ok) cout << "Yes" << endl; else cout << "No" << endl; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) if (d[i][j] > max(d[i][k], d[k][j])) ok = false; } } if (ok) cout << "Yes" << endl; else cout << "No" << endl; }