#include <iostream>
#include <algorithm>
using namespace std;
int arr[5000];
int arr2[5000];
// 주어진 숫자배열의 모든 숫자의 위치가 기존의 자기자신의 위치가 아니게 되도록 바꾸는 문제
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int a;
int b;
int count = 0;
int count2 = 0;
cin >> a;
int change = a;
int tmp;
for (int i = 0; i < a; i++) {
cin >> b;
arr[i] = b;
arr2[i] = b;
}
// 정렬을 통한 숫자 교체 가속화
sort(arr2, arr2 + a);
// 같은숫자가 a/2+1개 이상인 숫자가있으면 교체불가 -1출력
for (int i = 0; i < a; i++) {
count2++;
if (arr2[i] == arr2[i + 1]) {
count++;
if (count == a / 2) {
cout << -1;
return 0;
}
}
else if (count2 > a / 2) {
break;
}
else {
count = 0;
}
}
//정렬된 배열과 정렬되기 전 배열의 같은인덱스에 같은 숫자가 있다면 해당 숫자를 교체 가능한 곳을 찾아 옮김
for (int n = 0; n < a; n++) {
if (arr[n] == arr2[n]) {
for (int i = 0; i < a; i++) {
if (arr2[i] != arr2[n] && arr[i] != arr2[n]) {
tmp = arr2[n];
arr2[n] = arr2[i];
arr2[i] = tmp;
break;
}
}
}
}
for (int i = 0; i < a; i++) {
cout << arr2[i] << ' ';
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBhcnJbNTAwMF07CmludCBhcnIyWzUwMDBdOwovLyDso7zslrTsp4Qg7Iir7J6Q67Cw7Je07J2YIOuqqOuToCDsiKvsnpDsnZgg7JyE7LmY6rCAIOq4sOyhtOydmCDsnpDquLDsnpDsi6DsnZgg7JyE7LmY6rCAIOyVhOuLiOqyjCDrkJjrj4TroZ0g67CU6r6464qUIOusuOygnAppbnQgbWFpbigpCnsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJY2luLnRpZShOVUxMKTsKCWludCBhOwoJaW50IGI7CglpbnQgY291bnQgPSAwOwoJaW50IGNvdW50MiA9IDA7CgljaW4gPj4gYTsKCWludCBjaGFuZ2UgPSBhOwoJaW50IHRtcDsKCWZvciAoaW50IGkgPSAwOyBpIDwgYTsgaSsrKSB7CgkJY2luID4+IGI7CgkJYXJyW2ldID0gYjsKCQlhcnIyW2ldID0gYjsKCX0KICAgIC8vIOygleugrOydhCDthrXtlZwg7Iir7J6QIOq1kOyytCDqsIDsho3tmZQKCXNvcnQoYXJyMiwgYXJyMiArIGEpOwogICAgLy8g6rCZ7J2A7Iir7J6Q6rCAIGEvMisx6rCcIOydtOyDgeyduCDsiKvsnpDqsIDsnojsnLzrqbQg6rWQ7LK067aI6rCAIC0x7Lac66ClCglmb3IgKGludCBpID0gMDsgaSA8IGE7IGkrKykgewoJCWNvdW50MisrOwoJCWlmIChhcnIyW2ldID09IGFycjJbaSArIDFdKSB7CQoJCQljb3VudCsrOwoJCQlpZiAoY291bnQgPT0gYSAvIDIpIHsKCQkJCWNvdXQgPDwgLTE7CgkJCQlyZXR1cm4gMDsKCQkJfQoJCX0KCQllbHNlIGlmIChjb3VudDIgPiBhIC8gMikgewoJCQlicmVhazsKCQl9CgkJZWxzZSB7CgkJCWNvdW50ID0gMDsKCQl9Cgl9CiAgICAvL+ygleugrOuQnCDrsLDsl7Tqs7wg7KCV66Cs65CY6riwIOyghCDrsLDsl7TsnZgg6rCZ7J2A7J24642x7Iqk7JeQIOqwmeydgCDsiKvsnpDqsIAg7J6I64uk66m0IO2VtOuLuSDsiKvsnpDrpbwg6rWQ7LK0IOqwgOuKpe2VnCDqs7PsnYQg7LC+7JWEIOyYruq5gAoJZm9yIChpbnQgbiA9IDA7IG4gPCBhOyBuKyspIHsKCQlpZiAoYXJyW25dID09IGFycjJbbl0pIHsKCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBhOyBpKyspIHsKCQkJCWlmIChhcnIyW2ldICE9IGFycjJbbl0gJiYgYXJyW2ldICE9IGFycjJbbl0pIHsKCQkJCQl0bXAgPSBhcnIyW25dOwoJCQkJCWFycjJbbl0gPSBhcnIyW2ldOwoJCQkJCWFycjJbaV0gPSB0bXA7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCQl9Cgl9CgkKCWZvciAoaW50IGkgPSAwOyBpIDwgYTsgaSsrKSB7CgkJY291dCA8PCBhcnIyW2ldIDw8ICcgJzsKCX0KfQ==