#include <bits/stdc++.h>
using namespace std;
int main() {
  int a[2005];
  int n, m, temp, swap;
  swap = 0;
  cin >> n >> m;
  vector<int> V;
  V.clear();
  memset(a, 0, sizeof(a));
  for (int i = 0; i < n; ++i) {
    cin >> temp;
    V.push_back(temp);
    if (temp <= m) a[temp]++;
  }
  int fans = n / m;
  int cha;
  for (int i = 0; i < V.size(); ++i) {
    if (V[i] > m) {
      for (int j = 1; j <= m; j++) {
        cha = fans - a[j];
        if (cha >= 1) {
          V[i] = j;
          a[j]++;
          swap++;
          break;
        }
      }
    }
  }
  for (int i = 0; i < V.size(); ++i) {
    if (V[i] > m) {
      cout << fans << " " << swap << endl;
      for (int i = 0; i < V.size(); ++i) {
        cout << V[i] << " ";
      }
      return 0;
    }
  }
  vector<int> duo;
  duo.clear();
  int need = 0;
  for (int i = 1; i <= m; ++i) {
    cha = fans - a[i];
    if (cha > 0) need += cha;
  }
  for (int i = 0; i < V.size(); ++i) {
    if (a[V[i]] - fans > 0 && need > duo.size()) {
      duo.push_back(i);
      a[V[i]]--;
    }
  }
  for (int i = 0; i < duo.size(); i++) {
    for (int j = 1; j <= m; j++) {
      if (fans - a[j] > 0) {
        V[duo[i]] = j;
        a[j]++;
        swap++;
        break;
      }
    }
  }
  cout << fans << " " << swap << endl;
  for (int i = 0; i < V.size(); ++i) {
    cout << V[i] << " ";
  }
  return 0;
}
