/*
X = {1,2,3}
S = 231213
X = {1,2,3,4}
S = 23421314
최대한 왼쪽에 새로운 숫자를 넣는 방법을 선택
X의 크기는 8이하
X의 원소는 F이하
불가능한 경우도 있음 dfs탐색?
*/
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int arr[33], N, T;
void print(int *list) {
for (int i = 1; i <= 2 * N; i++) {
cout << list[i] << ' ';
}
cout << '\n';
}
bool dfs(vector<int> availables) {
// ex. N=4
// __4____4
if (availables.empty()) {
for (int i = 1; i <= N; i++) {
if (arr[i] == -1) {
return false;
}
}
return true;
}
int n = availables.at(availables.size() - 1);
for (int i = 2 * N; i - n - 1 > 0; i--) {
if (arr[i] == -1 && arr[i - n - 1] == -1) {
arr[i] = arr[i - n - 1] = n;
availables.pop_back();
if (dfs(availables)) {
return true;
}
availables.emplace_back(n);
arr[i] = arr[i - n - 1] = -1;
}
}
return false;
}
int main() {
cin >> N;
for (int i = 1; i <= 2 * N; i++) {
arr[i] = -1;
}
vector<int> X;
for (int i = 0; i < N; i++) {
cin >> T;
X.emplace_back(T);
}
sort(X.begin(), X.end());
int n = X.at(X.size() - 1);
arr[2*N-n-1] = arr[2 * N] = n;
X.pop_back();
if (dfs(X)) {
print(arr);
return 0;
}
cout << -1;
}
LyoKWCA9IHsxLDIsM30KUyA9IDIzMTIxMwpYID0gezEsMiwzLDR9ClMgPSAyMzQyMTMxNAoK7LWc64yA7ZWcIOyZvOyqveyXkCDsg4jroZzsmrQg7Iir7J6Q66W8IOuEo+uKlCDrsKnrspXsnYQg7ISg7YOdCljsnZgg7YGs6riw64qUIDjsnbTtlZgKWOydmCDsm5DshozripQgRuydtO2VmArrtojqsIDriqXtlZwg6rK97Jqw64+EIOyeiOydjCBkZnPtg5Dsg4k/CiAqLwojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBhcnJbMzNdLCBOLCBUOwp2b2lkIHByaW50KGludCAqbGlzdCkgewogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gMiAqIE47IGkrKykgewogICAgICAgIGNvdXQgPDwgbGlzdFtpXSA8PCAnICc7CiAgICB9CiAgICBjb3V0IDw8ICdcbic7Cn0KYm9vbCBkZnModmVjdG9yPGludD4gYXZhaWxhYmxlcykgewogICAgLy8gZXguIE49NAogICAgLy8gIF9fNF9fX180CiAgICBpZiAoYXZhaWxhYmxlcy5lbXB0eSgpKSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gTjsgaSsrKSB7CiAgICAgICAgICAgIGlmIChhcnJbaV0gPT0gLTEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGludCBuID0gYXZhaWxhYmxlcy5hdChhdmFpbGFibGVzLnNpemUoKSAtIDEpOwogICAgZm9yIChpbnQgaSA9IDIgKiBOOyBpIC0gbiAtIDEgPiAwOyBpLS0pIHsKICAgICAgICBpZiAoYXJyW2ldID09IC0xICYmIGFycltpIC0gbiAtIDFdID09IC0xKSB7CiAgICAgICAgICAgIGFycltpXSA9IGFycltpIC0gbiAtIDFdID0gbjsKICAgICAgICAgICAgYXZhaWxhYmxlcy5wb3BfYmFjaygpOwogICAgICAgICAgICBpZiAoZGZzKGF2YWlsYWJsZXMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBhdmFpbGFibGVzLmVtcGxhY2VfYmFjayhuKTsKICAgICAgICAgICAgYXJyW2ldID0gYXJyW2kgLSBuIC0gMV0gPSAtMTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwp9CgppbnQgbWFpbigpIHsKICAgIGNpbiA+PiBOOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gMiAqIE47IGkrKykgewogICAgICAgIGFycltpXSA9IC0xOwogICAgfQogICAgdmVjdG9yPGludD4gWDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgY2luID4+IFQ7CiAgICAgICAgWC5lbXBsYWNlX2JhY2soVCk7CiAgICB9CiAgICBzb3J0KFguYmVnaW4oKSwgWC5lbmQoKSk7CgogICAgaW50IG4gPSBYLmF0KFguc2l6ZSgpIC0gMSk7CiAgICBhcnJbMipOLW4tMV0gPSBhcnJbMiAqIE5dID0gbjsKICAgIFgucG9wX2JhY2soKTsKICAgIGlmIChkZnMoWCkpIHsKICAgICAgICBwcmludChhcnIpOwogICAgICAgIHJldHVybiAwOwogICAgfQogICAgY291dCA8PCAtMTsKfQo=