#include <algorithm>
#include <cstdlib>
#include <iostream>
#include <array>
struct Rabbit {
int org_idx;
int place;
int cur_idx;
int partner_idx;
bool finish = false;
};
int n;
std::array<Rabbit, 100000> place_vec;
auto main() -> int {
std::cin >> n;
for (int i = 0; i < n; ++i) {
std::cin >> place_vec[i].place;
place_vec[i].org_idx = i;
}
std::sort(
place_vec.begin(), place_vec.begin() + n,
[](const Rabbit& a, const Rabbit& b) -> bool {
return a.place < b.place;
}
);
for (int i = 0; i < n; ++i) {
place_vec[i].cur_idx = i;
}
for (int i = 0; i < n; ++i) {
auto left = i - 1, right = i + 1;
std::array<int, 2> temp = {-1,-1};
if (left >= 0) {
temp[0] = std::abs(
place_vec[i].place - place_vec[left].place);
}
if (right < n) {
temp[1] = std::abs(
place_vec[i].place - place_vec[right].place);
}
if (temp[0] > temp[1] and temp[1] != -1) {
place_vec[i].partner_idx = place_vec[right].cur_idx;
} else if (temp[0] <= temp[1] and temp[0] != -1) {
place_vec[i].partner_idx = place_vec[left].cur_idx;
} else if (temp[1] == -1) {
place_vec[i].partner_idx = place_vec[left].cur_idx;
} else if (temp[0] == -1) {
place_vec[i].partner_idx = place_vec[right].cur_idx;
}
}
int remain = n, cur_idx = 0;
while (remain != 0) {
auto &cursor = place_vec[cur_idx];
auto &partner = place_vec[cursor.partner_idx];
if (cursor.place != partner.place) {
if (cursor.cur_idx == partner.partner_idx and
std::abs(cursor.place - partner.place) == 1) {
if (cursor.place > partner.place) {
cursor.place--;
} else if (cursor.place < partner.place) {
partner.place--;
}
cursor.finish = true;
partner.finish = true;
remain -= 2;
} else {
if (cursor.place > partner.place) {
cursor.place--;
if (cursor.finish) {
cursor.finish = false;
remain++;
}
} else if (cursor.place < partner.place) {
cursor.place++;
if (cursor.finish) {
cursor.finish = false;
remain++;
}
}
if (cursor.place == partner.place) {
remain--;
cursor.finish = true;
}
}
}
cur_idx++;
if (cur_idx == n) {
cur_idx = 0;
}
}
std::sort(
place_vec.begin(), place_vec.begin() + n,
[](const Rabbit& a, const Rabbit& b) -> bool {
return a.org_idx < b.org_idx;
}
);
for (int i = 0; i < n; ++i) {
std::cout << place_vec[i].place << " ";
}
return 0;
}