#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
typedef vector<vector<int>> vvi;
typedef vector<vector<vector<int>>> vvvi;
typedef vector<long long> vl;
typedef vector<vector<long long>> vvl;
typedef vector<vector<vector<long long>>> vvvl;
typedef pair<int, int> pii;
typedef pair<long long, long long> pll;
typedef long long ll;
const long long MOD=1000000007;
#define rep(i,n) for(ll i=0;i<(n);i++)
#define ALL(v) v.begin(), v.end()
#define sz(v) (int)(v.size())
#define eb emplace_back
#define pb push_back
#define mp make_pair
#define lb lower_bound
#define ub upper_bound




void solve(){

    ll n;
    cin>>n;

    vl p(n);
    rep(i,n) cin>>p[i];

    vvl ans(n,vl(n,0));
    rep(i,n) ans[i][i]=p[i];

    rep(i,n){
        int q=p[i];
        int color=p[i];
        int x=i;
        int y=i;
        q--;
        while (q>0){
            if (y>0 and ans[x][y-1]==0){
                y--;
                ans[x][y]=color;
                q--;
                continue;
            }
            else if (x>y and ans[x-1][y]==0){
                x--;
                ans[x][y]=color;
                q--;
                continue;
            }
            else if (x<n-1 and ans[x+1][y]==0){
                x++;
                ans[x][y]=color;
                q--;
                continue;
            }
            while (y<=x-1 and ans[x][y]!=0) y++;
            ans[x][y]=color;
            q--;
            continue;

        }


    }

    rep(i,n){
        rep(j,i+1) cout<<ans[i][j]<<" ";
        cout<<"\n";
    }





}



int main(){

    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    

    int tt=1;
    while (tt--){
        solve();
    }
    




}