#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int maxn = 505;
int n;
int a[maxn][maxn],b[maxn][maxn],c[maxn][maxn];
int h[1][maxn],d[1][maxn],e[1][maxn],f[1][maxn];
bool isTrue(){
for(int i=0;i<n;i++){
f[0][i] = 0;
for(int j=0;j<n;j++)
f[0][i] += h[0][j]*c[j][i];
}
for(int i=0;i<n;i++){
d[0][i] = 0;
for(int j=0;j<n;j++)
d[0][i] += h[0][j]*a[j][i];
}
for(int i=0;i<n;i++){
e[0][i] = 0;
for(int j=0;j<n;j++)
e[0][i] += d[0][j]*b[j][i];
}
for(int i=0;i<n;i++)
if(f[0][i] != e[0][i])
return false;
return true;
}
int main(){
bool flag;
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&b[i][j]);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&c[i][j]);
int T = 20;
flag = true;
while(T--){
for(int i=0;i<n;i++)
h[0][i] = rand()%100;
if(!isTrue()){
flag = false;
break;
}
}
if(flag)printf("YES\n");
else printf("NO\n");
return 0;
}