#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include <stack>
#include <vector>
#define max_ 100010
#define inf 0x3f3f3f3f
#define ll long long
using namespace std;
struct node
{
int len;
int ti;
};
struct node num[max_];
int n;
bool cmp(const node &a,const node &b)
{
if(a.len==b.len)
return a.ti<b.ti;
return a.len>b.len;
}
int main(int argc, char const *argv[])
{
scanf("%d",&n);
int i;
for(i=1;i<=n;i++)
{
scanf("%d",&num[i].len);
num[i].ti=i;
}
sort(num+1,num+1+n,cmp);
int t=1;
int cnt=1;
while(t<=n)
{
int flag=0;
while(num[cnt].ti<=t&&cnt<=n)
{
if(flag==0)
{
printf("%d",num[cnt].len);
flag=1;
}
else if(flag==1)
printf(" %d",num[cnt].len);
cnt++;
}
printf("\n");
t++;
}
return 0;
}