#include <bits/stdc++.h>
using namespace std;
long long n, m, a[2005], notpart[2005], fin[2005];
map<long long, long long> cnt;
set<long long> pos[2005];
int main() {
  cin >> n >> m;
  for (long long i = 1; i <= n; i++) {
    cin >> a[i];
    if (a[i] <= m) pos[a[i]].insert(i);
    cnt[a[i]]++;
  }
  long long req = n / m;
  long long ans = 0;
  for (long long i = 1; i <= n; i++) {
    if (a[i] > m) {
      for (long long j = 1; j <= m; j++) {
        if (cnt[j] < req) {
          cnt[j]++;
          ans++;
          fin[i] = j;
          break;
        }
      }
    }
  }
  for (long long j = 1; j <= m; j++) {
    while (cnt[j] < req) {
      for (long long i = 1; i <= m; i++) {
        if (i == j) continue;
        if (cnt[i] > req) {
          cnt[i]--;
          cnt[j]++;
          ans++;
          fin[*(pos[i].begin())] = j;
          pos[i].erase(pos[i].begin());
        }
        if (cnt[j] >= req) break;
      }
    }
  }
  cout << req << " " << ans << endl;
  for (int i = 1; i <= n; i++) {
    if (fin[i] == 0)
      cout << a[i] << " ";
    else
      cout << fin[i] << " ";
  }
  return 0;
}
