#include <bits/stdc++.h>
using namespace std;
const int Maxn = 2e3 + 10;
int n, a[Maxn], m, ans1, b[Maxn], cnt, ans2, c[Maxn];
set<pair<int, int> > s;
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; c[i] = a[i], i++) cin >> a[i];
  ans1 = n / m;
  for (int i = 0; i < n; i++)
    if (a[i] <= m) b[a[i]]++;
  for (int i = 1; i <= m; i++) s.insert(make_pair(b[i], i));
  for (int i = 0; i < n; i++)
    if (a[i] > m) {
      if ((*s.begin()).first == ans1) break;
      cerr << "!";
      int t = (*s.begin()).second;
      a[i] = t;
      s.erase(s.begin());
      s.insert(make_pair(++b[t], t));
    }
  for (std::set<pair<int, int> >::iterator it = s.begin(); it != s.end(); it++)
    cerr << (*it).second << " " << (*it).first << endl;
  cerr << (*s.begin()).second << "! " << (*s.begin()).first << endl;
  if ((*s.begin()).first < ans1)
    for (int i = 0; i < n; i++)
      if (b[a[i]] > ans1 && (*s.begin()).first < ans1) {
        cerr << "!" << i + 1 << endl;
        s.erase(make_pair(b[a[i]], a[i]));
        int t = (*s.begin()).second;
        s.erase(s.begin());
        s.insert(make_pair(--b[a[i]], a[i]));
        a[i] = t;
        s.insert(make_pair(++b[t], t));
      }
  for (int i = 0; i < n; i++) ans2 += (bool)(a[i] != c[i]);
  cout << ans1 << " " << ans2 << endl;
  for (int i = 0; i < n; i++) cout << a[i] << " ";
  cout << endl;
  return 0;
}
