#include <bits/stdc++.h>
using namespace std;
using lli = long long;
struct som {
  bool operator()(pair<double, lli> p1, pair<double, lli> p2) {
    return p1 > p2;
  }
};
int main() {
  lli t, k;
  cin >> t >> k;
  vector<int> v(t);
  map<lli, lli> m, m_cnt;
  for (lli i = 0; i < t; i++) {
    cin >> v[i];
    m[v[i]] += 1;
  }
  set<pair<double, lli>, som> s;
  for (auto it = m.begin(); it != m.end() && k > 0; it++) {
    s.insert({it->second, it->first});
  }
  while (k > 0) {
    pair<double, lli> p = *s.begin();
    s.erase(s.begin());
    cout << p.second << ' ';
    m_cnt[p.second]++;
    p.first = m[p.second] / (m_cnt[p.second] + 1.0);
    s.insert(p);
    k--;
  }
  return 0;
}
