/*
TASK: fsort
LANG: C++
*/

#include <cstdio>
#include <algorithm>
using namespace std;

#define INFINITY -4294967294

int cache[ 1024 ], N;
int size = 0, stack[ 32768 ];

bool isSorted() {
    
    for( int i = 1; i < N; ++i ) 
        if( cache[i] < cache[i-1] ) return false;
    return true;
}

void input() {
     
    scanf( "%d", &N );
    for( int i = 0; i < N; ++i ) scanf( "%d", &cache[i] );
    
}

void solve() {
    
    int most, index, sorted = 0;
    
    while( ! isSorted() ) {
        
        most = INFINITY;
        
        for( int i = 0; i < N - sorted; ++i ) {
             
            if( cache[i] > most ) { most = cache[i]; index = i; }
            
        }
        //printf( "CHOSEN MAXIMUM: %d.", cache[index] );
        
        if( index != 0 ) {
        
            reverse( cache, cache + index + 1 );
            
            //printf( "NEW CHANGE( TYPE 1 ) : [%d]\n", index + 1 );
            //for( int m = 0; m < N; ++m ) printf( "%d ", cache[m] );
            //printf( "\n" );
            stack[size++] = index + 1;
        }
        
        reverse( cache, cache + N - sorted );
        
            
        
        //printf( "NEW CHANGE( TYPE 2 ) : [%d].\n", N - sorted );
        //for( int m = 0; m < N; ++m ) printf( "%d ", cache[m] );
        //printf( "\n" );
        
        stack[size++] = N - sorted;
            
        sorted++;     
    }
    
    //printf( "READY!\n" );
    for( int i = 0; i < size-1; ++i ) printf( "%d ", stack[i] );
    if( size != 0 ) printf( "%d", stack[size-1] );
    printf( "\n" );
}

int main() {
    
    input();
    solve();
    
    return 0;
}
