#include<bits/stdc++.h>
#define x first
#define y second
#define bug(x) cerr<<#x<<'='<<x<<' '
#define debug(x) cerr<<#x<<'='<<x<<'\n'
#define FOR(a,b,c) for(int a=(b),a##_end=(c);a<=a##_end;++a)
#define ROF(a,b,c) for(int a=(b),a##_end=(c);a>=a##_end;--a)
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int INF=0x3f3f3f3f,N=2.5e5+10;
template<class T>inline bool chkmin(T &x,const T &y){return y<x?x=y,1:0;}
template<class T>inline bool chkmax(T &x,const T &y){return x<y?x=y,1:0;}
int n,m;
int now[N];
vector<int>s[N],a;
void dfs(int tim){
	int f=0,diff,x;
	FOR(i,2,n){
		diff=0;
		FOR(j,0,m-1)if(now[j]!=s[i][j])
			++diff;
		if(diff>2){
			x=i;f=1;
			break;
		}
	}
	if(f==0){
		puts("Yes");
		FOR(i,0,m-1)printf("%d%c",now[i]," \n"[i==i_end]);
		exit(0);
	}
	if(diff-(2-tim)>2||tim==2)return;
	vector<int>a;
	int tmp[4];
	FOR(i,0,m-1)if(now[i]!=s[x][i])
		a.push_back(i);
//	FOR(i,0,diff-1){
//		tmp[i]=now[a[i]];
//		now[a[i]]=s[x][a[i]];
//		dfs(tim+1);
//		now[a[i]]=tmp[i];
//	}
//	FOR(i,0,diff-1)bug(a[i]);
	FOR(S,1,(1<<diff)-1){
		int cnt=__builtin_popcount(S);
		if(diff-cnt<=2&&cnt<=2-tim){
			FOR(i,0,diff-1)if(S>>i&1){
				tmp[i]=now[a[i]];
				now[a[i]]=s[x][a[i]];
			}
			dfs(tim+cnt);
			FOR(i,0,diff-1)if(S>>i&1)
				now[a[i]]=tmp[i];
		}
	}
}
int main(){
	scanf("%d%d",&n,&m);
	FOR(i,1,n){
		s[i].resize(m);
		FOR(j,0,m-1)scanf("%d",&s[i][j]);
	}
	FOR(i,0,m-1)now[i]=s[1][i];
	dfs(0);
	puts("No");
	return 0;
}
