#include <bits/stdc++.h>
using namespace std;
int arr[2500], n, m, ch = 0;
vector<int> mal;
map<int, vector<int>> ext;
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
    ext[arr[i]].push_back(i);
  }
  int poss = n / m;
  for (auto& p : ext) {
    if (p.first > m) {
      for (int c : p.second) mal.push_back(c);
    } else if (p.second.size() > poss) {
      int tt = p.second.size() - poss;
      for (int k = 0; k < tt; k++) mal.push_back(p.second[k]);
    }
  }
  for (int i = 1; i <= m; i++) {
    if (ext[i].size() < poss) {
      int p = poss - ext[i].size();
      while (p--) {
        int ind = mal[mal.size() - 1];
        arr[ind] = i;
        mal.pop_back();
        ch++;
      }
    }
  }
  cout << poss << " " << ch << endl;
  for (int i = 0; i < n; i++) cout << arr[i] << " ";
  return 0;
}
