#include <iostream>
#include <string>
#include <vector>
#include <bits/stdc++.h>

using namespace std;
struct pogodjena {
    int polje;
    int brojPuta;
};

bool komparator(pogodjena a, pogodjena b) {
    return a.brojPuta >= b.brojPuta;
}

bool komparatorPoPolju(pogodjena a, pogodjena b) {
    return a.polje <= b.polje;
}

vector<pogodjena> polja(10000);

int nadji(int brojPolja, int n) {
    int l = 0;
    int d = n;
    while (d >= l && d != 0) {
        int s = (l + d) / 2;
        if (polja[s].polje > brojPolja) {
            d = s-1;
        } else if (polja[s].polje < brojPolja) {
            l = s+1;
        } else {
            return s;
        }
    }

    return -1;
}

int main() {
    int n, k;
    cin >> n >> k;

    for (int i = 0; i < n; i++) {
        int ulaz;
        cin >> ulaz;

        sort(polja.begin(), polja.begin()+i, komparatorPoPolju);
        int pozicija = nadji(ulaz, i);

        if (pozicija == -1) {
            pogodjena pogodak;
            pogodak.polje = ulaz;
            pogodak.brojPuta = 1;
            polja[i] = pogodak;
        } else {
            polja[pozicija].brojPuta= polja[pozicija].brojPuta + 1;
        }
    }

    sort(polja.begin(), polja.begin() + n, komparator);

    int counter = 0;
    //string izlaz = "";
    vector<int> output;
    for (int i = 0; i < polja.size(); i++) {
        if (polja[i].brojPuta >= k) {
            output.push_back(polja[i].polje);
            counter++;
        } else {
            break;
        }
    }

    cout << counter << endl;
    for (int i = 0; i < counter; i++) {
        cout << output[i] << " ";
    }

    return 0;
}