#include <bits/stdc++.h>

using namespace std;
const int N = 3e5 + 10;

vector < int > v[N];
int n,m;

void Try(vector < int > r)
{

    for(int i = 0; i<n; i++)
    {
        int cnt = 0;
        for(int j = 0; j<m; j++)
        {
            if(v[i][j] != r[j])  cnt++;
        }
        if(cnt > 2)  return;
    }
    cout << "Yes" << '\n';
    for(int i = 0; i<m; i++)  cout << r[i] << " ";
    exit(0);

}

int temp[N];

void Rec(int i, int cnt)
{
    if(i == n)   return;
    vector < int > idx;
    for(int j = 0; j<m; j++)
    {
        if(v[i][j] != v[0][j])  idx.push_back(j);
    }
    if(idx.size() > 4)  return;
    if(idx.size() > 2)
    {
        if(cnt <= 2)
        {
            for(int k = 0; k<(1 << idx.size()); k++)
            {
                if(__builtin_popcount(k) <= 2)
                {
                    for(int j = 0; j<idx.size(); j++)
                    {
                        if(k & (1 << j))
                        {
                            temp[idx[j]] = v[0][idx[j]];
                            v[0][idx[j]] = v[i][idx[j]];
                        }
                    }
                    Try(v[0]);
                    Rec(i + 1, cnt + 1);
                    for(int j = 0; j<idx.size(); j++)
                    {
                        if(k & (1 << j))
                            v[0][idx[j]] = temp[idx[j]];
                    }
                }
            }
        }
    }
    else
    {
        Rec(i + 1, cnt);
    }
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie();
    cout.tie();
    int T = 1;
    //cin >> T;
    while(T--)
    {
        cin >> n >> m;
        for(int i = 0; i<n; i++)  v[i].resize(m);
        for(int i = 0; i<n; i++)
            for(int j = 0; j<m; j++)
                cin >> v[i][j];
        Try(v[0]);
        Rec(1, 0);
        cout << "No";
    }
    return 0;
}
