/* -*- coding: utf-8 -*- * * 241.cc: No.241 出席番号(1) - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const int MAX_N = 50; typedef long long ll; const ll NBITS = 1LL << MAX_N; /* typedef */ typedef pair pii; /* global variables */ int n; int as[MAX_N], sis[MAX_N]; ll ics[MAX_N]; pii sts[MAX_N]; /* subroutines */ inline int bnums(int n, ll bits) { int bn = 0; for (int i = 0; i < n; i++) if (bits & (1LL << i)) bn++; return bn; } void finish() { for (int i = 0; i < n; i++) printf("%d\n", sis[i]); exit(0); } void rec(int u) { if (u >= n) finish(); int &ui = sts[u].second; for (int i = 0; i < n; i++) { if (sis[i] < 0 && (ics[ui] & (1LL << i)) != 0) { sis[i] = ui; rec(u + 1); sis[i] = -1; } } } /* main */ int main() { cin >> n; ll nbits = 1LL << n; for (int i = 0; i < n; i++) sis[i] = -1, ics[i] = nbits - 1; for (int i = 0; i < n; i++) { cin >> as[i]; ics[as[i]] &= ~(1LL << i); } for (int i = 0; i < n; i++) { int bn = bnums(n, ics[i]); sts[i] = pii(bn, i); } sort(sts, sts + n); rec(0); puts("-1"); return 0; }