#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 207;
int n, i, k, a[N], poz[N];
vector<int> v;
bitset<N> f;
int main() {
  cin >> n;
  for (i = 1; i <= n; ++i) {
    cin >> a[i];
    f[a[i]] = 1;
    if (!a[i]) poz[++k] = i;
  }
  for (i = 1; i <= n; ++i)
    if (!f[i]) v.push_back(i);
  for (i = 1; i <= k; ++i) {
    if (v[v.size() - 1] == poz[i]) {
      if (v.size() == 1)
        a[poz[i]] = v[0], v.pop_back();
      else {
        a[poz[i]] = v[v.size() - 2];
        a[poz[i + 1]] = v[v.size() - 1];
        v.pop_back();
        v.pop_back();
        i++;
      }
    } else {
      a[poz[i]] = v[v.size() - 1];
      v.pop_back();
    }
  }
  for (i = 1; i <= n; ++i) {
    if (i != poz[1] && a[i] == i)
      swap(a[poz[1]], a[i]);
    else if (i == poz[1] && a[i] == i)
      swap(a[poz[2]], a[i]);
  }
  for (i = 1; i <= n; ++i) cout << a[i] << " ";
}
