#include <bits/stdc++.h>
using namespace std;
int n;
const int N = 1e5 + 5;
int p[N], parent[N];
void make_set(){
// Đặt nút "cha" của mỗi tập hợp là chính nó
for (int i = 1; i <= n; i++) parent[i] = i;
}
int find(int x){
// Ta sử dụng kĩ thuật nén đường đi để tối ưu
if (x == parent[x]) return x;
int p = find(parent[x]);
parent[x] = p;
return p;
}
// Ở bài toán này thì không cần thao tác Set Union
void input(){
cin >> n;
make_set();
for (int i = 1; i <= n; i++) cin >> p[i];
}
void solve(){
for (int i = 1; i <= n; i++){
// Tìm vị trí thích hợp
int pos = find(p[i]);
cout << pos << " ";
// Cập nhật lại thành vị trí khác phù hợp
parent[pos] = parent[pos % n + 1];
}
}
int main(){
input();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbjsKY29uc3QgaW50IE4gPSAxZTUgKyA1OwppbnQgcFtOXSwgcGFyZW50W05dOwoKdm9pZCBtYWtlX3NldCgpewogICAgICAvLyDEkOG6t3QgbsO6dCAiY2hhIiBj4bunYSBt4buXaSB04bqtcCBo4bujcCBsw6AgY2jDrW5oIG7DswogICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHBhcmVudFtpXSA9IGk7Cn0KCmludCBmaW5kKGludCB4KXsKICAgICAgLy8gVGEgc+G7rSBk4bulbmcga8SpIHRodeG6rXQgbsOpbiDEkcaw4budbmcgxJFpIMSR4buDIHThu5FpIMawdQogICAgICBpZiAoeCA9PSBwYXJlbnRbeF0pIHJldHVybiB4OwogICAgICBpbnQgcCA9IGZpbmQocGFyZW50W3hdKTsKICAgICAgcGFyZW50W3hdID0gcDsKICAgICAgcmV0dXJuIHA7Cn0KCi8vIOG7niBiw6BpIHRvw6FuIG7DoHkgdGjDrCBraMO0bmcgY+G6p24gdGhhbyB0w6FjIFNldCBVbmlvbgoKdm9pZCBpbnB1dCgpewogICAgICBjaW4gPj4gbjsKICAgICAgbWFrZV9zZXQoKTsKICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gcFtpXTsKfQoKdm9pZCBzb2x2ZSgpewogICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgICAgICAvLyBUw6xtIHbhu4sgdHLDrSB0aMOtY2ggaOG7o3AKICAgICAgICAgICAgaW50IHBvcyA9IGZpbmQocFtpXSk7CgogICAgICAgICAgICBjb3V0IDw8IHBvcyA8PCAiICI7CiAgICAgICAgICAgIC8vIEPhuq1wIG5o4bqtdCBs4bqhaSB0aMOgbmggduG7iyB0csOtIGtow6FjIHBow7kgaOG7o3AKICAgICAgICAgICAgcGFyZW50W3Bvc10gPSBwYXJlbnRbcG9zICUgbiArIDFdOwogICAgICB9Cn0KCmludCBtYWluKCl7CiAgICAgIGlucHV0KCk7CiAgICAgIHNvbHZlKCk7CgogICAgICByZXR1cm4gMDsKfQ==