const int MAXN=2.5e5+5;
vector<int> a[MAXN];
vector<int> cmp(vector<int> a,vector<int> b){
vector<int> diff;
_for(i,0,a.size()){
if(a[i]!=b[i])
diff.push_back(i);
}
return diff;
}
void check(vector<int> ans,int n){
_for(i,1,n){
vector<int> diff=cmp(ans,a[i]);
if(diff.size()>2)return;
}
puts("Yes");
_for(i,0,ans.size())space(ans[i]);
exit(0);
}
int main()
{
int n=read_int(),m=read_int();
_for(i,0,n){
a[i].resize(m);
_for(j,0,m)
a[i][j]=read_int();
}
check(a[0],n);
_for(i,1,n){
vector<int> diff=cmp(a[0],a[i]);
if(diff.size()>=3){
if(diff.size()==4){
vector<int> ans=a[0];
_for(j,0,4)_for(k,j+1,4){
ans[diff[j]]=a[i][diff[j]];
ans[diff[k]]=a[i][diff[k]];
check(ans,n);
ans[diff[j]]=a[0][diff[j]];
ans[diff[k]]=a[0][diff[k]];
}
}
else if(diff.size()==3){
vector<int> ans=a[0];
_for(j,0,3)_for(k,0,3){
if(j==k)continue;
ans[diff[j]]=a[i][diff[j]];
check(ans,n);
_for(t,1,n){
vector<int> diff2=cmp(ans,a[t]);
if(diff2.size()>=3){
if(diff2.size()==3&&find(diff2.begin(),diff2.end(),diff[k])!=diff2.end()){
ans[diff[k]]=a[t][diff[k]];
check(ans,n);
ans[diff[k]]=a[0][diff[k]];
}
break;
}
}
ans[diff[j]]=a[0][diff[j]];
}
}
break;
}
}
puts("No");
return 0;
}