#include #include #include using namespace std; typedef long long LL; bool reassign(vector& assign, vector& deny, vector& memo, int i){ int N = assign.size(); if(assign[i] == deny[i]){ memo[i] = 1; for(int j = 0; j < N; j++){ if(memo[j]) continue; swap(assign[i], assign[j]); if(reassign(assign, deny, memo, j)) return true; } return false; } return true; } int main(){ int N; cin >> N; vector assign(N); vector deny(N); for(int i = 0; i < N; i++){ cin >> deny[i]; assign[i] = i; } for(int i = 0; i < N; i++){ vector memo(N); if(!reassign(assign, deny, memo, i)){ cout << -1 << endl; return 0; } } for(int i = 0; i < N; i++){ cout << assign[i] << endl; } return 0; }