#include<bits/stdc++.h>
using namespace std;
int n,k,arr[505][505],sisa;
bool cek(int a,int b)
{
	if(a>=1&&a<=n&&b>=1&&b<=n) return true;
	else return false;
}
void dfs(int x,int a,int b)
{
	if(sisa>0&&arr[a][b-1]==0&&cek(a,b-1)) sisa--,arr[a][b-1]=x,dfs(x,a,b-1);
	if(sisa>0&&arr[a+1][b]==0&&cek(a+1,b)) sisa--,arr[a+1][b]=x,dfs(x,a+1,b);
}
void solve()
{
	cin>>n;
	memset(arr,0,sizeof arr);
	for(int i=1;i<=n;i++)
	{
		cin>>k;
		arr[i][i]=k;
		sisa=k-1;
		dfs(k,i,i);
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=i;j++) cout<<arr[i][j]<<" ";
		cout<<endl;
	}
}
int main()
{
	int t;
	t=1;
	//cin>>t;
	while(t--)
	{
		solve();
	}
}
