#include <bits/stdc++.h>

using namespace std;
int n, m, ans[3000000];
bool try_solve(vector<vector<int>>&a, int times) {
	if (times > 2) {
		return false;
	}

	for (int i = 1; i <= n; i++) {
		int cnt;
		vector<int> pos;
		for (int j = 1; j <= m; j++) {
			if (a[i][j] != ans[j]) {
				pos.push_back(j);
			}
		}
		cnt = pos.size();
		if (cnt == 3) {
 			for (auto p : pos) {
 				int t = ans[p];
 				ans[p] = a[i][p];
 				if (try_solve(a, times + 1)) return true;
 				ans[p] =  t;
 			}
 			return false;
		} else if (cnt == 4) {
			for (int k = 0; k < 4; k++)
				for (int l = k + 1; l < 4; l++) {
					int t = ans[pos[k]], r = ans[pos[l]];
					ans[pos[k]] = a[i][pos[k]], ans[pos[l]] = a[i][pos[l]];
					if (try_solve(a, times + 1)) return true;
					ans[pos[k]] = t, ans[pos[l]] = r;
				}
			return false;
		} else if (cnt >= 5) {
			return false;
		}
	}

	
	puts("Yes");
	for (int i = 1; i <= m; i++) cout << ans[i] << ' ';
	puts("");
	return true;
	
}

int main() {
	//freopen("in.txt", "r", stdin);
	
	cin >> n >> m;
	vector<vector<int>> a(n + 1, vector<int>(m + 1));
	
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> a[i][j];
			if (i == 1) ans[j] = a[i][j];
		}
	}

	if (!try_solve(a, 0)) puts("No");
	return 0;
}