#include <bits/stdc++.h>
using namespace std;
int n,a[100001],h,ans = 1;
bool istrue = false;
bool flag;
struct node
{
int a;
int b;
}c[100001];
bool cmp(node x,node y)
{
return x.b > y.b;
}
inline int read()
{
int f = 1,x = 0;
char s = getchar();
while (s < '0' || s > '9')
{
if (s == '-')
{
f = -f;
}
s = getchar();
}
while (s >= '0' && s <= '9')
{
x = x * 10 + s - '0';
s = getchar();
}
return x * f;
}
int main()
{
n = read();
for (register int i = 1 ; i <= n ; i++)
{
a[i] = read();
}
sort(a + 1,a + 1 + n);
h = a[1];
c[ans].a = h;
c[ans].b += 1;
for (register int i = 2 ; i <= n ; i++)
{
if (a[i] == h)
{
c[ans].b += 1;
}
else
{
h = a[i];
c[++ans].a = h;
c[ans].b += 1;
}
}
sort(c + 1,c + 1 + ans,cmp);
if (ans % 2 == 1)
{
cout << -1;
return 0;
}
for (register int i = 2 ; i <= ans ; i += 2)
{
if (c[i].b != c[i - 1].b)
{
istrue = true;
break;
}
}
if (istrue == true)
{
cout << -1;
return 0;
}
for (register int i = 2 ; i < ans ; i += 2)
{
for (register int s = 1 ; s <= c[i].b ; s++)
{
cout << c[i].a << " " << c[i - 1].a << " ";
}
}
for (register int i = 1 ; i < c[ans].b ; i++)
{
cout << c[ans].a << " " << c[ans - 1].a << " ";
}
cout << c[ans].a << " " << c[ans - 1].a;
return 0;
}