#include <bits/stdc++.h>
using namespace std;
const int N = 200005, oo = 1e9 + 7;
int n, x[N << 1];
#define do1() swap(x[Li], x[i]);
#define do2() swap(x[Ri], x[i]);
signed main(void) {
ios::sync_with_stdio(false); cin.tie(nullptr);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> x[i];
}
for (int i = 1; i <= n / 2; i++) {
int Li = i << 1, Ri = i << 1 | 1;
if (Ri > n) {
if (x[i] > x[Li]) do1();
} else if (x[i] < min(x[Li], x[Ri])) continue;
else if (x[Li] < x[i]) {
if (x[Ri] < x[Li]) {
// should I swap x[i] and x[Li]?
int LL = i << 2, LR = i << 2 | 1;
int minv = min({x[Li], LL <= n ? x[LL] : oo, LR <= n ? x[LR] : oo});
if (minv == min(LL <= n ? x[LL] : oo, LR <= n ? x[LR] : oo)) do1();
do2();
} else do1();
} else {
int LL = i << 2, LR = i << 2 | 1;
int minv = min({x[i], LL <= n ? x[LL] : oo, LR <= n ? x[LR] : oo});
if (minv == x[i]) do1();
do2();
}
}
for (int i = 1; i <= n; i++) cout << x[i] << ' ';
return 0;
}