#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
#include <set>
#include <map>
#include <random>
#include <fstream>
#define int long long
#define forn(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;

int cntdifference(vector<int> & arr1, vector<int> & arr2) {
	int ans = 0;
	for (int i = 0; i < arr1.size(); ++i) {
		ans += (arr1[i] != arr2[i]);
	}
	return ans;
}

bool isok(vector<vector<int>>& arr) {
	for (int i = 0; i < arr.size(); ++i) {
		if (cntdifference(arr[0], arr[i]) > 2)
			return false;
	}
	return true;
}

void func(vector<vector<int>>& arr, int timer) {
	int N = arr[0].size();
	int M = arr.size();
	vector<int> vec;
	for (int i = 1; i < M; ++i) {
		int cnt = cntdifference(arr[0], arr[i]);
		if (cnt > 4) {
			return;
		}
		if (cnt > 2) {
			vec = arr[i];
			break;
		}
	}
	if (vec.empty()) {
		cout << "Yes\n";
		for (int i = 0; i < N; ++i) {
			cout << arr[0][i] << " ";
		}
		cout << endl;
		exit(0);
	}
	else if (timer == 2) {
		return;
	}
	vector<int> indexes;
	for (int i = 0; i < N; ++i) {
		if (arr[0][i] != vec[i]) {
			int cur = arr[0][i];
			arr[0][i] = vec[i];
			func(arr, timer + 1);
			arr[0][i] = cur;
		}
	}
}

int32_t main() {
	int N, M;
	cin >> M >> N;
	vector<vector<int>> arr(M, vector<int>(N));
	for (vector<int>& vec : arr) {
		for (int& e : vec) {
			cin >> e;
		}
	}
	func(arr, 0);
	cout << "No\n";
	
}
/*
5 5
a b c d e
f g c d h
a i 12 19 20
a 21 12 d 22
a 18 22 d 23

a 18 24 d h
*/