#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3f;
const int maxn = 2e5 + 5;
struct lqq {
  int x, y;
} a[maxn];
bool cmp(lqq n, lqq m) { return n.y > m.y; }
int main() {
  int n, m, k, tot;
  for (int i = 1; i <= maxn; i++) a[i].x = i;
  scanf("%d%d", &n, &m);
  while (n--) {
    scanf("%d", &k);
    if (!a[k].y) tot++;
    a[k].y++;
  }
  sort(a + 1, a + maxn + 1, cmp);
  for (int i = 1;; i++) {
    int sum = 0;
    bool flag = false;
    for (int j = 1; j <= tot; j++) {
      sum += a[j].y / i;
      if (sum >= m) {
        flag = true;
        break;
      }
    }
    if (!flag) {
      i--;
      for (int u = 1; m > 0; u++) {
        for (int w = 1; w <= min(a[u].y / i, m); w++) printf("%d ", a[u].x);
        m -= a[u].y / i;
      }
      return 0;
    }
  }
  return 0;
}
