#include <bits/stdc++.h>
using namespace std;
struct block {
int prefix, kind, num;
block(int a, int b, int c) : prefix(a), kind(b), num(c) {}
block() : prefix(), kind(), num() {}
int get() {
if (num) {
num--;
return prefix++;
} else {
return -1;
}
}
bool empty() {
return !num;
}
void add() {
num++;
}
};
std::list<block> l;
int main() {
int n, x;
scanf("%d", &n);
for (int i = 1;i <= n;i++) {
scanf("%d", &x);
if (l.empty()) {
l.push_back({i, x, 1});
} else {
if (l.back().kind == x) {
l.back().add();
} else {
l.push_back({i, x, 1});
}
}
}
while (!l.empty()) {
int back = -1;
for (auto it = l.begin(); it != l.end(); ) {
if (back != -1 and it->kind == back) {
it++;
continue;
}
printf("%d ", it->get());
back = it->kind;
if (it->empty()) {
it = l.erase(it);
} else {
it++;
}
}
printf("\n");
}
return 0;
}
record