// Problem: E. Almost Fault-Tolerant Database
// Contest: Codeforces - Codeforces Round #704 (Div. 2)
// URL: https://codeforces.ml/contest/1492/problem/E
// Memory Limit: 512 MB
// Time Limit: 2000 ms
// Author: fake leader
//
// Powered by CP Editor (https://cpeditor.org)

#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define forn(i,x,n) for(int i = x;i <= n;++i)

int n,m;

bool check(vector<vector<int>>& a,vector<int>& ans)
{
	forn(i,1,n)
	{
		int cnt = 0;
		forn(j,1,m)	if(ans[j] != a[i][j])	++cnt;
		if(cnt >= 3)	return 0;
	}
	return 1;
}

int main()
{
	scanf("%d%d",&n,&m);
	vector<vector<int>> a(n + 17,vector<int>(m + 17));
	forn(i,1,n)	forn(j,1,m)	scanf("%d",&a[i][j]);
	vector<int> ans(m + 17);
	forn(i,1,m)	ans[i] = a[1][i];
	int pos1 = -1,pos2 = -1;
	vector<int> bad;
	forn(i,2,n)
	{
		int cnt = 0;
		forn(j,1,m)	if(ans[j] != a[i][j])	++cnt;
		if(cnt <= 2)	continue;
		if(cnt >= 5)	return puts("No"),0;
		pos1 = i;
		forn(j,1,m)	if(ans[j] != a[i][j]) bad.push_back(j);
		break;
	}
	if(pos1 == -1)
	{
		puts("Yes");
		forn(i,1,m) printf("%d ",ans[i]);
		return 0;
	}


	for(auto& chd : bad)
	{
		vector<int> bad_succ;
		// cout << chd << endl;
		int prev = ans[chd],pos2 = -1;
		ans[chd] = a[pos1][chd];
		forn(i,2,n)
		{
			int cnt = 0;
			forn(j,1,m)	if(ans[j] != a[i][j])	++cnt;
			if(cnt <= 2)	continue;
			if(cnt >= 3)
			{
				pos2 = i;
				forn(j,1,m) if(ans[j] != a[i][j])	bad_succ.push_back(j);
				break;
			}
		}
		if(pos2 == -1)
		{
			puts("Yes");
			forn(i,1,m) printf("%d ",ans[i]);
			return 0;
		}
		if(bad_succ.size() == 3)
		{
			// cout << "!" << endl;
			for(auto& chd_succ : bad_succ)
			{
				// cout << chd_succ << endl;
				int succ_prev = ans[chd_succ];
				ans[chd_succ] = a[pos2][chd_succ];
				if(check(a,ans))
				{
					puts("Yes");
					forn(i,1,m) printf("%d ",ans[i]);
					return 0;
				}
				ans[chd_succ] = succ_prev;
			}
		}
		ans[chd] = prev;
	}
	puts("No");
	return 0;
}
