#include <iostream>
#include <vector>

using namespace std;

vector<int> a[250005];
int score[250005];
int ans[250005];

bool check(int n, int m) {
    for (int i = 0;i < n;i++) score[i] = 0;
    for (int i = 0;i < n;i++)
        for (int j = 0;j < m;j++) {
            if (ans[j] != a[i][j]) score[i]++;
        }
    for (int i = 0;i < n;i++) if (score[i] > 2) return false;
    return true;
}

int findMx(int n) {
    int mx = 0, pos = -1;
    for (int i = 0;i < n;i++) {
        if (score[i] > mx) {
            mx = score[i];
            pos = i;
        }
    }
    return pos;
}

int main(void) {
    // freopen("E.data", "r", stdin);
    int n, m;
    scanf("%d %d", &n, &m);
    for (int i = 0;i < n;i++) {
        a[i].resize(m);
        for (int j = 0;j < m;j++) {
            scanf("%d", &a[i][j]);
        }
    }
    for (int j = 0;j < m;j++) ans[j] = a[0][j];
    bool find = check(n, m);
    int mx = 0, pos = -1;
    for (int i = 0;i < n;i++) {
        if (score[i] > mx) {
            mx = score[i];
            pos = i;
        }
    }
    if (mx == 4) {
        vector<int> diff;
        for (int j = 0;j < m;j++) if (a[0][j] != a[pos][j]) diff.emplace_back(j);
        for (auto pos1 : diff) {
            if (find) break;
            for (auto pos2 : diff) {
                ans[pos1] = a[pos][pos1];
                ans[pos2] = a[pos][pos2];
                if (check(n, m)) {
                    find = true;
                    break;
                }
                ans[pos1] = a[0][pos1];
                ans[pos2] = a[0][pos2];
            }
        }
    } else if (mx == 3) {
        vector<int> diff;
        for (int j = 0;j < m;j++) if (a[0][j] != a[pos][j]) diff.emplace_back(j);
        for (auto pos1 : diff) {
            ans[pos1] = a[pos][pos1];
            if (check(n, m)) {
                find = true;
                break;
            }
            int pos_mx = findMx(n);
            vector<int> diff1;
            for (int j = 0;j < m;j++) if (ans[j] != a[pos_mx][j]) diff1.emplace_back(j);
            for (int pos2 : diff1) {
                int tmp = ans[pos2];
                ans[pos2] = a[pos_mx][pos2];
                if (check(n, m)) {
                    find = true;
                    break;
                }
                ans[pos2] = tmp;
            }
            if (find) break;
            ans[pos1] = a[0][pos1];
        }
    }
    if (check(n, m)) {
        puts("Yes");
        for (int j = 0;j < m;j++) printf("%d ", ans[j]);
        puts("");
    } else puts("No");
    return 0;
}