#include <bits/stdc++.h>
using namespace std;
long long int gcd(long long int a, long long int b);
long long int power(long long int x, long long int y, long long int m);
long long int modInverse(long long int a, long long int m) {
  return power(a, m - 2, m);
}
long long int power(long long int x, long long int y, long long int m) {
  if (y == 0) return 1;
  long long int p = power(x, y / 2, m) % m;
  p = (p * p) % m;
  return (y % 2 == 0) ? p : (x * p) % m;
}
long long int gcd(long long int a, long long int b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
int main() {
  long long int tc, ans, n, l, k, i;
  cin >> n;
  map<long long int, long long int> mp;
  vector<long long int> v1, v2;
  long long int a[n + 10];
  long long int t, f;
  f = 0;
  set<long long int> s1, s2;
  for (i = 0; i < n; i++) {
    cin >> a[i];
    if (a[i] == 0) {
      v1.push_back(i + 1);
      s1.insert(i + 1);
    } else {
      mp[a[i]] = 1;
    }
  }
  for (i = 1; i <= n; i++) {
    if (mp[i] == 0) {
      s2.insert(i);
      v2.push_back(i);
    }
  }
  vector<long long int> v3;
  for (i = 1; i <= n; i++) {
    if (s1.count(i) and s2.count(i)) {
      v3.push_back(i);
      s1.erase(i);
      s2.erase(i);
    }
  }
  vector<long long int> v4(s1.begin(), s1.end());
  vector<long long int> v5(s2.begin(), s2.end());
  t = v3.size();
  if (t == 1) {
    long long int c = 0;
    for (i = 0; i < v4.size(); i++) {
      if (v4[i] != v3[0]) {
        a[v4[i] - 1] = v3[0];
        break;
      }
    }
    v4.push_back(v3[0]);
    for (i = 0; i < v4.size(); i++) {
      if (a[v4[i] - 1] == 0) {
        a[v4[i] - 1] = v5[c];
        c++;
        if (v5[c] == v3[0]) c++;
      }
    }
  } else {
    for (i = 0; i < v3.size(); i++) {
      a[v3[i] - 1] = v3[(i + 1) % t];
    }
    long long int c = 0;
    for (i = 0; i < v4.size(); i++) {
      a[v4[i] - 1] = v5[c];
      c++;
    }
  }
  for (i = 0; i < n; i++) {
    cout << a[i] << " ";
  }
  cout << endl;
}
