#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define pb push_back
#define fi first
#define se second
#define mp make_pair
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define pii pair<int,int>
#define pll pair<ll,ll>
#define en '\n'
#define sp ' '
#define smin(a, b) a = min(a, b)
#define smax(a, b) a = max(a, b)
#define sadd(a, b) a = add(a, b)
#define ssub(a, b) a = sub(a, b)
#define smul(a, b) a = mul(a, b)
#define sdvs(a, b) a = dvs(a, b)
#define ar array
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define bitcnt(x) __builtin_popcount(x)
using namespace std;
const ll mod = (1 ? 1e9 + 7 : 998244353);
const int N = 2e5 + 2;
const int M = 1e6 + 2;
const int inf = 2e9;
const ll linf = 1e18;
/*ll g(ll a){a=(a+mod)%mod; return a;}
ll add(ll a,ll b){a+=b;return a>=mod?a-mod:a;}
ll sub(ll a, ll b){a+=mod-b;return a>=mod?a-mod:a;}
ll mul(ll a,ll b){return a*b%mod;}
ll exp(ll x,ll k){ll ans=1;for(;k;k>>=1,x=mul(x,x))if(k&1)ans=mul(ans,x);return ans;}
ll inv(ll x){return exp(x,mod-2);}
ll dvs(ll a,ll b){return mul(a,inv(b));}*/
int a[502][502];
int n;
int ok(int i, int j){
    return i && i <= n && j && j <= n && !a[i][j];
}
void fil(int x, int i){
    int cnt = x-1,j=i;
    a[i][i]=x;
    for(int z=0;z<cnt;z++){
        if(ok(i,j-1)){
            j--;
            a[i][j]=x;
        }
        else{
            i++;
            a[i][j]=x;
        }
    }

}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cerr.tie(0);
    cin >> n;
    for(int i=0;i<n;i++){
        int x;
        cin >> x;
        fil(x,i+1);
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=i;j++)
            cout<<a[i][j]<<sp;
        cout<<en;
    }
    return 0;
}
