#include <iostream>
using namespace std;

#define in cin
//#include <fstream>
//ifstream in("3157.txt");

struct elem {
    int nro, cant;
};

bool operator < (const elem& e1, const elem& e2) {
    return e1.cant < e2.cant || e1.cant == e2.cant && e1.nro > e2.nro;
}

bool operator > (const elem& e1, const elem& e2) {
    return e1.cant > e2.cant || e1.cant == e2.cant && e1.nro < e2.nro;
}

template<class T>
int bb(T a[], int elem, int izq, int der) {
    while (izq <= der) {
        int med = (izq + der) / 2;
        if (a[med].nro == elem)
            return med;
        if (a[med].nro < elem)
            izq = med + 1;
        else
            der = med - 1;
    }
    return -1;
}

template <class T>
void quicksort(T a[], int izq, int der) {
    int i = izq, j = der;
    T x = a[(izq+der)/2], temp;
    while (i <= j) {
        while (a[i] > x) i++;
        while (a[j] < x) j--;
        if (i <= j) {
            temp = a[i]; a[i] = a[j]; a[j] = temp;
            i++; j--;
        }
    }
    if (izq < j) quicksort(a, izq, j);
    if (i < der) quicksort(a, i, der);
}

template<class T>
void insercion(T a[], T elem, int izq, int der) {
    while (der > izq && a[der-1].nro > elem.nro) {
        a[der] = a[der-1];
        der--;
    }
    a[der] = elem;
}

int main() {
    int n, m, k, x, pos;
    elem e;
    while (in >> n >> m && n != 0) {
        elem elems[n*m];
        k = -1;
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++) {
                in >> x;
                pos = bb(elems, x, 0, k);
                if (pos < 0) {
                    e.nro = x;
                    e.cant = 1;
                    insercion(elems, e, 0, ++k);
                } else
                    elems[pos].cant++;
            }
        quicksort(elems, 0, k);
        x = elems[1].cant;
        for (int i = 1; i <= k && elems[i].cant == x; i++)
            cout << elems[i].nro << " ";
        cout << endl;
    }
    //getchar();
    return 0;
}

