/*long long or int&the MAX_INT or MIN_INT*/
/*the size of a[]&inline*/
/*xx 396*/
#include<bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define fst first
#define snd second
using namespace std;
typedef long long ll;
typedef double db;
typedef long double ldb;
template<class T>inline void checkmin(T &a,const T &b){if(b<a)a=b;}
template<class T>inline void checkmax(T &a,const T &b){if(b>a)a=b;}
vector<vector<int> >a;
int n,m,k=0,tot=0;
void print(vector<vector<int> >v){
	cout<<"Yes\n";
	for(int i=0;i<(int)v[0].size();i++)cout<<v[0][i]<<" ";
}
void solve1(){
	for(int i=1;i<n;i++)for(int j=0;j<m;j++)a[i][j]=a[0][j];
	print(a);
}
bool ok(int id1,int id2,int id3,vector<vector<int> >&v){
	v[0][id2]=v[k][id2];v[k][id3]=v[0][id3];
	vector<int>now;
	for(int i=1;i<n;i++){
		int cnt=0;
		for(int j=0;j<m;j++){
			if(j==id1)continue;
			if(v[0][j]!=v[i][j])cnt++;
		}
		if(cnt>2)return false;
		if(cnt==2)now.pb(a[i][id1]);
	}
	bool flag=true;
	if((int)now.size()==0)return true;
	int val=now[0];
	for(int i=0;i<(int)now.size();i++)if(val!=now[i])flag=false;
	v[0][id1]=val;
//	if(flag==true)cout<<id1<<" "<<id2<<" "<<id3<<" "<<val<<endl;
	if(!flag)return false;
	else return true;
}
void solve2(){
	int p[3],id=0;
	for(int i=0;i<m;i++)if(a[0][i]!=a[k][i])p[id++]=i;
	for(int i=0;i<3;i++)for(int j=0;j<3;j++)if(i!=j){
		int k=3-i-j;
		vector<vector<int> >b=a;
		if(ok(p[k],p[i],p[j],b)){
			print(b);
			return;
		}
	}
	printf("No\n");
}
bool ok(int p1,int p2,int p3,int p4,vector<vector<int> >&v){
//	cout<<p1<<" "<<p2<<" "<<p3<<" "<<p4<<endl;
	v[k][p1]=v[0][p1];v[k][p2]=v[0][p2];v[0][p3]=v[k][p3];v[0][p4]=v[k][p4];
//	for(int i=0;i<m;i++)cout<<v[0][i]<<" ";cout<<endl;	
	for(int i=0;i<n;i++){
		int cnt=0;
		for(int j=0;j<m;j++){
			if(v[i][j]!=v[0][j])cnt++;
		}
		if(cnt>2)return false;
	}
	return true;
}
void solve3(){
	int p[4],id=0;
	for(int i=0;i<m;i++)if(a[0][i]!=a[k][i])p[id++]=i;
//	for(int i=0;i<4;i++)cout<<p[i]<<" ";cout<<endl;
	for(int i=0;i<4;i++)for(int j=i+1;j<4;j++)for(int k=0;k<4;k++)if(i!=k&&j!=k){
		vector<vector<int> >b=a;
		if(ok(p[i],p[j],p[k],p[6-i-j-k],b)){
			print(b);
			return;
		}
	}
	printf("No\n");
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++){
		vector<int>v;
		for(int j=0;j<m;j++){
			int x;cin>>x;v.pb(x);
		}
		a.pb(v);
	}
	for(int i=1;i<n;i++){
		int cnt=0;
		for(int j=0;j<m;j++)if(a[i][j]!=a[0][j])cnt++;
		if(cnt>4){
			cout<<"No\n";
			return 0;
		}
		if(cnt>tot){
			tot=cnt;
			k=i;
		}
	}
	if(tot<=2)solve1();
	if(tot==3)solve2();
	if(tot==4)solve3();
	return 0;
}