#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3e4;
int poz[MAXN + 1] , aint[4 * MAXN + 1] , clas[MAXN + 1];
void update ( int nod , int st , int dr , int poz , int val ) {
if ( st == dr ) {
aint[nod] += val;
return;
}
int mij = ( st + dr ) / 2;
if ( poz <= mij )
update ( nod * 2 , st , mij , poz , val );
if ( poz > mij )
update ( nod * 2 + 1 , mij + 1 , dr , poz , val );
aint[nod] = aint[nod * 2] + aint[nod * 2 + 1];
}
int cautbin ( int nod , int st , int dr , int v ) {
if ( st == dr )
return st;
int mij = ( st + dr ) / 2;
if ( aint[nod * 2] < v )
return cautbin ( nod * 2 + 1 , mij + 1 , dr , v - aint[nod * 2] );
return cautbin ( nod * 2 , st , mij , v );
}
int main( ) {
ifstream cin ( "schi.in" );
ofstream cout ( "schi.out" );
int n , i , v;
cin >> n;
for ( i = 1 ; i <= n ; i++ ) {
cin >> poz[i];
update ( 1 , 1 , n , i , 1 );
}
for ( i = n ; i > 0 ; i-- ) {
clas[v = cautbin ( 1 , 1 , n , poz[i] )] = i;
update ( 1 , 1 , n , v , -1 );
}
for ( i = 1 ; i <= n ; i++ )
cout << clas[i] << '\n';
return 0;
}