/*
최대한 오른쪽에 더 높은 숫자를 넣는 방법을 선택
불가능한 경우도 있음 dfs탐색?
16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
4 5 1 2 1 4 2 5 8 10 11 12 13 15 16 14 6 8 9 7 10 3 11 6 12 3 13 7 9 15 14 16
??
3
1 2 3
231213
*/
#include <algorithm>
#include <iostream>
using namespace std;
int N, T;
void print(int *arr) {
for (int i = 1; i <= 2 * N; i++) {
cout << arr[i] << ' ';
}
cout << '\n';
}
// 주어진 수를 어디에 넣을지 고민하는게 아니라, 주어진 자리에 어떤 수를 넣을지 고민
bool dfs(int *X, int *arr) {
int k = 0;
while (arr[++k] != -1)
;
if (k > 2 * N) {
for (int i = 1; i <= 2 * N; i++) {
if (arr[i] == -1) {
return false;
}
}
return true;
}
for (int i = 0; i < N; i++) {
int n = X[i];
if (n != -1 && k + n + 1 <= 2 * N && arr[k] == -1 && arr[k + n + 1] == -1) {
arr[k] = arr[k + n + 1] = n;
X[i] = -1;
// print(arr);
if (dfs(X, arr)) {
return true;
}
arr[k] = arr[k + n + 1] = -1;
X[i] = n;
}
}
return false;
}
int main() {
cin >> N;
int X[16];
for (int i = 0; i < N; i++) {
cin >> X[i];
}
sort(X, X + N);
int arr[33];
for (int i = 0; i <= 2 * N; i++) {
arr[i] = -1;
}
if (dfs(X, arr)) {
print(arr);
return 0;
}
cout << -1;
}
LyoK7LWc64yA7ZWcIOyYpOuluOyqveyXkCDrjZQg64aS7J2AIOyIq+yekOulvCDrhKPripQg67Cp67KV7J2EIOyEoO2DnQrrtojqsIDriqXtlZwg6rK97Jqw64+EIOyeiOydjCBkZnPtg5Dsg4k/CjE2CjEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2CjQgNSAxIDIgMSA0IDIgNSA4IDEwIDExIDEyIDEzIDE1IDE2IDE0IDYgOCA5IDcgMTAgMyAxMSA2IDEyIDMgMTMgNyA5IDE1IDE0IDE2Cj8/CjMKMSAyIDMKMjMxMjEzCiAqLwojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBOLCBUOwp2b2lkIHByaW50KGludCAqYXJyKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSAyICogTjsgaSsrKSB7CiAgICAgICAgY291dCA8PCBhcnJbaV0gPDwgJyAnOwogICAgfQogICAgY291dCA8PCAnXG4nOwp9CgovLyDso7zslrTsp4Qg7IiY66W8IOyWtOuUlOyXkCDrhKPsnYTsp4Ag6rOg66+87ZWY64qU6rKMIOyVhOuLiOudvCwg7KO87Ja07KeEIOyekOumrOyXkCDslrTrlqQg7IiY66W8IOuEo+ydhOyngCDqs6Drr7wKYm9vbCBkZnMoaW50ICpYLCBpbnQgKmFycikgewogICAgaW50IGsgPSAwOwogICAgd2hpbGUgKGFyclsrK2tdICE9IC0xKQogICAgICAgIDsKICAgIGlmIChrID4gMiAqIE4pIHsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSAyICogTjsgaSsrKSB7CiAgICAgICAgICAgIGlmIChhcnJbaV0gPT0gLTEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgaW50IG4gPSBYW2ldOwogICAgICAgIGlmIChuICE9IC0xICYmIGsgKyBuICsgMSA8PSAyICogTiAmJiBhcnJba10gPT0gLTEgJiYgYXJyW2sgKyBuICsgMV0gPT0gLTEpIHsKICAgICAgICAgICAgYXJyW2tdID0gYXJyW2sgKyBuICsgMV0gPSBuOwogICAgICAgICAgICBYW2ldID0gLTE7CiAgICAgICAgICAgIC8vIHByaW50KGFycik7CiAgICAgICAgICAgIGlmIChkZnMoWCwgYXJyKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXJyW2tdID0gYXJyW2sgKyBuICsgMV0gPSAtMTsKICAgICAgICAgICAgWFtpXSA9IG47CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGZhbHNlOwp9CgppbnQgbWFpbigpIHsKICAgIGNpbiA+PiBOOwogICAgaW50IFhbMTZdOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKICAgICAgICBjaW4gPj4gWFtpXTsKICAgIH0KICAgIHNvcnQoWCwgWCArIE4pOwogICAgaW50IGFyclszM107CiAgICBmb3IgKGludCBpID0gMDsgaSA8PSAyICogTjsgaSsrKSB7CiAgICAgICAgYXJyW2ldID0gLTE7CiAgICB9CiAgICBpZiAoZGZzKFgsIGFycikpIHsKICAgICAgICBwcmludChhcnIpOwogICAgICAgIHJldHVybiAwOwogICAgfQogICAgY291dCA8PCAtMTsKfQo=