#include <bits/stdc++.h>
using namespace std;
int A[100005];
set<int> temp, temp1;
int n;
inline void solve(void) {
  cin >> n;
  for (int i = (0); i < (n); i++) {
    scanf("%d", &A[i]);
    temp1.insert(i + 1);
  }
  for (int i = (0); i < (n); i++) {
    temp1.erase(A[i]);
  }
  for (int i = (0); i < (n); i++) {
    if (A[i] > n or A[i] < 1 or temp.find(A[i]) != temp.end()) {
      temp.insert(A[i]);
      A[i] = *(temp1.begin());
      temp1.erase(temp1.begin());
    } else
      temp.insert(A[i]);
  }
  for (int i = (0); i < (n); i++) printf("%d ", A[i]);
}
inline void recurse(int n) {}
int main() {
  long long int test = 1;
  while (test--) {
    solve();
  }
  return 0;
}
