#include <bits/stdc++.h>
using namespace std;
map<int, int> hh;
int cnt = 0;
int n, k;
struct node {
  int v;
  int f;
} a[200000 + 7];
bool cmp(node a, node b) { return a.f > b.f; }
bool check(int x) {
  int sum = 0;
  for (int i = 0; i < hh.size(); i++) {
    sum += a[i].f / x;
    if (sum >= k) return true;
    if (a[i].f < x) break;
  }
  return false;
}
int main() {
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    int buf;
    cin >> buf;
    if (!hh.count(buf)) {
      hh.insert(pair<int, int>(buf, cnt++));
      a[hh[buf]].f = 0;
      a[hh[buf]].v = buf;
    }
    a[hh[buf]].f++;
  }
  sort(a, a + n, cmp);
  int l = 1, r = a[0].f, mid;
  while (l <= r) {
    mid = l + r;
    mid /= 2;
    if (check(mid)) {
      l = mid + 1;
    } else
      r = mid - 1;
  }
  int op = r;
  queue<int> ans;
  int sum = 0;
  for (int i = 0; i < hh.size(); i++) {
    int u = a[i].f / op;
    for (int j = 0; j < u; j++) {
      sum++;
      ans.push(a[i].v);
      if (sum >= k) break;
    }
    if (sum >= k) break;
  }
  cout << ans.front();
  ans.pop();
  while (!ans.empty()) {
    cout << " " << ans.front();
    ans.pop();
  }
  cout << endl;
  return 0;
}
