#include<iostream>
#include<cstdio>
#define cal(a,b) (a-1)*m + b
using namespace std;

inline int read()
{
	int x = 0;
	bool tag = 0;
	char c = getchar();
	while(c<'0'|c>'9')
	{
		if(c=='-') tag = 1;
		c = getchar();
	}
	while(c>='0'&&c<='9') x = (x<<1) + (x<<3) + (c^48), c = getchar();
	if(tag) x = -x;
	return x;
} 

const int MAXN = 250000 + 1e4;
int n,m;
int a[MAXN],cur[MAXN];
int d[10],e[10];

void print()
{
	for(int i = 1;i<=m;i++) cout<<cur[i]<<" ";
	cout<<endl;
}

bool check()
{
	int dif;
	for(int i = 1;i<=n;i++)
	{
		dif = 0;
		for(int j = 1;j<=m;j++) if(a[cal(i,j)]!=cur[j]) dif++;
		if(dif>2) return 0;
	}
	return 1;
}

bool solve2(int x)
{
	if(check()) return 1;
	int i;
	int dif;
	for(i = 1;i<=n;i++)
	{
		dif = 0;
		for(int j = 1;j<=m;j++) if(a[cal(i,j)]!=cur[j]) dif++,e[dif] = j;
		if(dif>2) break;
	}
	if(dif>=4) return 0;
	if(dif==3)
	{
		for(int j = 1;j<=3;j++)
		{
			if(a[cal(i,e[j])]==x) continue;
			int buf = cur[e[j]];
			cur[e[j]] = a[cal(i,e[j])];
			if(check()) return 1;
			cur[e[j]] = buf;
		}
	}
	return 0;
}

bool solve()
{
	if(check()) return 1;
	int i;
	int dif;
	for(i = 1;i<=n;i++)
	{
		dif = 0;
		for(int j = 1;j<=m;j++) if(a[cal(i,j)]!=cur[j]) dif++,d[dif] = j;
		if(dif>2) break;
	}
	if(dif>=5) return 0;
	if(dif==4)
	{
		for(int j = 1;j<4;j++)
		{
			for(int k = j+1;k<=4;k++)
			{
				int buf1 = cur[d[j]];
				int buf2 = cur[d[k]];
				cur[d[j]] = a[cal(i,d[j])];
				cur[d[k]] = a[cal(i,d[k])];
				if(check()) return 1;
				cur[d[j]] = buf1;
				cur[d[k]] = buf2;
			}
		}
		return 0;
	}
	if(dif==3)
	{
		for(int j = 1;j<=3;j++)
		{
			int buf = cur[d[j]];
			cur[d[j]] = a[cal(i,d[j])];
			if(solve2(d[j])) return 1;
			cur[d[j]] = buf;
		}
		return 0;
	}
	return 0;
}

int main()
{
	n = read();
	m = read();
	for(int i = 1;i<=n;i++) for(int j = 1;j<=m;j++) a[cal(i,j)] = read();
	for(int i = 1;i<=m;i++) cur[i] = a[cal(1,i)];
	solve();
	if(check())
	{
		cout<<"Yes"<<endl;
		print();
	}
	else cout<<"No"<<endl; 
	return 0;
}