#include <bits/stdc++.h>
const int N = 2e5 + 10;
struct Data {
int val;
int len;
int pos;
Data(int _val, int _len, int _pos) : val(_val), len(_len), pos(_pos) {}
};
int n;
std::list<Data> a;
void init() {
scanf("%d", &n);
for (int i = 1, t; i <= n; ++i) {
scanf("%d", &t);
if (a.empty() || t != a.back().val) {
a.push_back(Data(t, 1, i));
} else {
++a.back().len;
}
}
}
int main() {
init();
while (!a.empty()) {
for (auto it = a.begin(); it != a.end(); ++it) {
if (it != a.begin()) {
auto pre = it; --pre;
if (pre->val == it->val) {
continue;
}
}
printf("%d ", it->pos);
++it->pos, --it->len;
}
puts("");
for (auto it = a.begin(); it != a.end(); ) {
if (it->len != 0) ++it;
else it = a.erase(it);
}
}
return 0;
}