#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define REP(i,a,n) for(int i=(a); i<(int)(n); i++) #define rep(i,n) REP(i,0,n) #define FOR(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it) #define ALLOF(c) (c).begin(), (c).end() typedef long long ll; #define MAX_V 110 int V; vector G[MAX_V]; int match[MAX_V]; bool used[MAX_V]; void init_graph(){ for(int i=0; i> N; vector v; rep(i,N){ int tmp; cin >> tmp; v.push_back(tmp); } init_graph(); V = 2*N; rep(i,N){ rep(j,N){ if(j==v[i]) continue; add_edge(i, N+j); } } int res = bipartite_matching(); if(res != N){ cout << -1 << endl; return 0; } rep(i,N){ cout << match[i]-N << endl; } return 0; }