#include <bits/stdc++.h>
using namespace std;
const int LIMIT = 10000000;
char in[LIMIT], *p = in;
__inline int nextInt(void) {
  register int res = 0;
  register bool neg = false;
  while (*p < '0' || *p > '9')
    if (*p++ == '-') neg ^= 1;
  while (*p >= '0' && *p <= '9') res = res * 10 + *p++ - '0';
  return neg ? -res : res;
}
const int N = 2005;
int n, m;
int num[N];
int cnt[N];
int que[N];
int ans1, ans2;
int hd = 0, tl = 0;
signed main(void) {
  fread(p, 1, LIMIT, stdin);
  n = nextInt();
  m = nextInt();
  ans1 = n / m, ans2 = 0;
  memset(cnt, 0, sizeof(cnt));
  for (register int i = 1; i <= n; ++i) {
    num[i] = nextInt();
    if (num[i] > m) que[tl++] = i;
  }
  for (register int i = 1; i <= n; ++i)
    if (num[i] <= m) {
      ++cnt[num[i]];
      if (cnt[num[i]] > ans1) que[tl++] = i;
    }
  for (register int i = 1; i <= m; ++i)
    while (cnt[i] < ans1) {
      ++ans2;
      ++cnt[i];
      num[que[hd++]] = i;
    }
  printf("%d %d\n", ans1, ans2);
  for (register int i = 1; i <= n; ++i) printf("%d ", num[i]);
  puts("");
}
