#include <bits/stdc++.h>
using namespace std;
void imprimirVector(vector<int> v) {
  if (!v.empty()) {
    int p = v.size();
    cout << "[";
    for (int i = 0; i < (int)(p - 1); i++) cout << v[i] << ",";
    cout << v[p - 1] << "]" << endl;
  } else
    cout << "[]" << endl;
}
int toNumber(string s) {
  int Number;
  if (!(istringstream(s) >> Number)) Number = 0;
  return Number;
}
string toString(int number) {
  ostringstream ostr;
  ostr << number;
  return ostr.str();
}
int main() {
  long long n;
  cin >> n;
  vector<bool> v(n + 1, false);
  vector<long long> a(n);
  vector<long long> ans(n);
  vector<long long> faltan;
  for (int i = 0; i < (int)(n); i++) {
    cin >> a[i];
    if (a[i] <= n && !v[a[i]]) {
      ans[i] = a[i];
      v[a[i]] = true;
    } else
      faltan.push_back(i);
  }
  for (int i = (1); i < (int)(n + 1); i++) {
    if (!v[i]) {
      long long r = faltan.back();
      faltan.pop_back();
      ans[r] = i;
    }
  }
  for (int i = 0; i < (int)(n); i++) {
    if (i) cout << " ";
    cout << ans[i];
  }
  cout << endl;
  return 0;
}
