#include <bits/stdc++.h>
using namespace std;
const int MXN = 100005;
using namespace std;
int dx[4] = {-1, 0, 0, 1};
int dy[4] = {0, -1, 1, 0};
struct bit {
  int a[MXN];
  bit() { memset(a, 0, sizeof(a)); }
  void inc(int i, int x, int n) {
    while (i <= n) {
      a[i] += x;
      i += i & -i;
    }
  }
  int sum(int i) {
    int s = 0;
    while (i > 0) {
      s += a[i];
      i -= i & -i;
    }
    return s;
  }
};
int main() {
  int n, m;
  vector<pair<int, int> > sg;
  scanf("%d %d", &n, &m);
  int a[2003] = {0}, b[2003] = {0};
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    if (a[i] <= m) b[a[i]]++;
  }
  for (int i = 1; i <= m; i++) {
    sg.push_back(make_pair(b[i], i));
  }
  sort(sg.begin(), sg.end());
  int s = n / m;
  int sp = n % m;
  int rep = 0;
  int k = 0;
  for (int i = 0; i < n && sg[k].first < s && k < sg.size(); i++) {
    int u = sg[k].second;
    if (a[i] > m) {
      a[i] = u;
      b[u]++;
      if (b[u] == s) {
        k++;
      }
      rep++;
    } else {
      int v = a[i];
      if (b[v] > s) {
        b[v]--;
        a[i] = u;
        b[u]++;
        if (b[u] == s) {
          k++;
        }
        rep++;
      }
    }
  }
  printf("%d %d\n", s, rep);
  for (int i = 0; i < n; i++) printf("%d ", a[i]);
  printf("\n");
  return 0;
}
