#include <bits/stdc++.h>
using namespace std;
const int inf = (1 << 30);
const int MAXN = 2011;
int n, m, ans, zong;
int a[MAXN], cnt[MAXN];
bool pd[MAXN];
inline int getint() {
  int w = 0, q = 0;
  char c = getchar();
  while ((c < '0' || c > '9') && c != '-') c = getchar();
  if (c == '-') q = 1, c = getchar();
  while (c >= '0' && c <= '9') w = w * 10 + c - '0', c = getchar();
  return q ? -w : w;
}
inline void work() {
  n = getint();
  m = getint();
  for (int i = 1; i <= n; i++) a[i] = getint();
  for (int i = 1; i <= n; i++)
    if (a[i] <= m) cnt[a[i]]++;
  ans = n / m;
  printf("%d ", ans);
  bool flag = false;
  for (int i = 1; i <= n; i++) {
    if (a[i] <= m && cnt[a[i]] > ans) {
      flag = false;
      for (int j = 1; j <= m; j++) {
        if (cnt[j] < ans) {
          flag = true;
          cnt[j]++;
          cnt[a[i]]--;
          a[i] = j;
          break;
        }
      }
      if (flag) zong++;
    } else if (a[i] > m) {
      flag = false;
      for (int j = 1; j <= m; j++) {
        if (cnt[j] < ans) {
          flag = true;
          cnt[j]++;
          a[i] = j;
          break;
        }
      }
      if (flag) zong++;
    }
  }
  printf("%d\n", zong);
  for (int i = 1; i <= n; i++) printf("%d ", a[i]);
}
int main() {
  work();
  return 0;
}
