#include #include #include #include #include #include #include #include #include #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 ALLOF(c) (c),begin(), (c),end() typedef long long ll; int main() { int n; int a[50]; int allow_count[50]; int dispatched[50]; bool end[50]; cin >> n; fill(dispatched,dispatched + 50, -1); fill(allow_count,allow_count+50, n); fill(end,end+50,false); rep(i,n) { cin >> a[i]; } rep(i,n) { allow_count[a[i]]--; } rep(i,n) { if(allow_count[i] == 0) { cout << -1 << endl; return 0; } } rep(i,n) { int need_dispatch = 0; int tmp_c = n+1; rep(j,n) { if ( !end[j] && tmp_c > allow_count[j]) { need_dispatch = j; tmp_c = allow_count[j]; } } #ifdef _DEBUG cout << tmp_c << " " << need_dispatch << endl; #endif _DEBUG rep(j,n) { if (dispatched[j] == -1 && a[j] != need_dispatch) { #ifdef _DEBUG cout << "dispatched" << need_dispatch <<" in" << j << endl; #endif _DEBUG dispatched[j] = need_dispatch; allow_count[need_dispatch]++;//あとで全部引くのでプラマイ0補正 end[need_dispatch] = true; break; } } rep(j,n) { allow_count[j]--; } } rep(i,n) { cout << dispatched[i] << endl; } return 0; }