#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  map<int, int> mapa, mapa2;
  int i;
  int a[n];
  for (i = 0; i < n; i++) {
    cin >> a[i];
    mapa[a[i]]++;
    mapa2[a[i]]++;
  }
  int j;
  int changes = 0;
  queue<int> notin;
  for (j = 1; j <= n; j++) {
    if (mapa[j] == 0) {
      notin.push(j);
      changes++;
    }
  }
  bool isin[n + 1];
  memset(isin, false, sizeof(isin));
  for (i = 0; i < n; i++) {
    if (!notin.empty()) {
      if (mapa[a[i]] > 1) {
        if (a[i] > notin.front()) {
          mapa[a[i]]--;
          a[i] = notin.front();
          notin.pop();
        } else if (isin[a[i]] == true and mapa2[a[i]] > 1) {
          mapa[a[i]]--;
          a[i] = notin.front();
          notin.pop();
        }
      }
    } else {
      break;
    }
    isin[a[i]] = true;
  }
  cout << changes << endl;
  for (i = 0; i < n; i++) {
    cout << a[i] << " ";
  }
  return 0;
}
