#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
void solve(vector<long long> &v, vector<long long> mG, vector<long long> mT,
           long long n) {
  long long m = (long long)mG.size();
  sort(mG.begin(), mG.end());
  sort(mT.begin(), mT.end());
  for (long long i = 0; i < m - 1; i++) {
    if (mG[i] == mT[i]) swap(mT[i], mT[i + 1]);
  }
  if (mG[m - 1] == mT[m - 1]) swap(mT[m - 2], mT[m - 1]);
  for (long long i = 0; i < m; i++) {
    v[mG[i]] = mT[i];
  }
  for (long long i = 1; i <= n; i++) cout << v[i] << " ";
}
int main(int argc, char const *argv[]) {
  ios_base::sync_with_stdio(false);
  ;
  long long test = 1, i, j, u, v, h, m, n;
  while (test--) {
    cin >> n;
    std::vector<long long> v(n + 3);
    std::vector<long long> G(n + 3);
    std::vector<long long> T(n + 3);
    std::vector<long long> mG, mT;
    for (i = 1; i <= n; i++) {
      cin >> v[i];
      if (v[i] != 0) G[i] = 1;
      T[v[i]] = 1;
    }
    for (i = 1; i <= n; i++) {
      if (G[i] == 0) mG.push_back(i);
      if (T[i] == 0) mT.push_back(i);
    }
    solve(v, mG, mT, n);
    cout << "\n";
  }
  return 0;
}
