#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdio>
using namespace std;
const int MAXN = 2e5 + 100;
struct Fruit{Fruit *Pre; Fruit *Next; int Start; int Length; int Divide;};
int N;
int main(){
scanf("%d",&N);
int Judge,Input;
Fruit *Head = NULL; Fruit *Tail = NULL;
for(int i = 1;i <= N;i ++){
scanf("%d",&Input);
if(i == 1){
Judge = Input;
Fruit *New = new Fruit;
Tail = New; Head = New;
New->Start = 1; New->Divide = Judge; New->Length = 1; New->Next = NULL; New->Pre = NULL;
}
else{
if(Input == Judge) {Tail->Length++;}
else{
Judge = Input;
Fruit *New = new Fruit;
New->Pre = Tail;
Tail->Next = New; Tail = New;
New->Start = i; New->Divide = Judge; New->Length = 1; New->Next = NULL;
}
}
}
Fruit *Point = Head;
while(Head != NULL){
while(Point != NULL){
if(Point->Pre != NULL and Point->Pre->Divide == Point->Divide){
Point = Point->Next;
continue;
}
printf("%d ",Point->Start);
Point->Start ++;
Point->Length --;
Point = Point->Next;
}
printf("\n");
Point = Head;
while(Point != NULL){
if(Point->Length <= 0){
if(Point->Pre == NULL and Point->Next != NULL) {
Head = Point->Next;
Head->Pre = NULL;
}
else if(Point->Pre != NULL and Point->Next != NULL){
Point->Next->Pre = Point->Pre;
Point->Pre->Next = Point->Next;
}
else if(Point->Pre != NULL and Point->Next == NULL){
Point->Pre->Next = NULL;
}
else if(Point->Pre == NULL and Point->Next == NULL){
for(int k = Point->Start;k < Point->Start + Point->Length;k ++) printf("%d\n",k);
return 0;
}
}
Point = Point->Next;
}
Point = Head;
}
return 0;
}