/*
TASK:fsort
LANG:C++
*/
#include <iostream>
using namespace std;
int m[1000], x[1000], f[1000];
int i, j, k, l, n, az=0;
int sravnenie(int dokade)
 {
  int i;
  for(i=0; i<dokade; i++) if(m[i]!=f[i]) return 1;
  return 0;
 }
int obra6tane(int dokade)
 {
  //cout<<dokade+1<<' ';
  int j=0, i;
  for(i=dokade; i>=0; i--) { x[j]=m[i]; j++; }
  for(i=0; i<=dokade; i++) m[i]=x[i];
  //cout<<dokade<<' ';
 }
int max_obra6tane(int dokade)
 {
  if(az!=n) { cout<<dokade+1<<' '; az++; }
  int max=0, imax=0, i;
  for(i=0; i<dokade; i++) { if(m[i]>max) { max=m[i]; imax=i; } }
  //cout<<"imax:"<<imax;
  //cout<<imax<<' ';
  obra6tane(imax);
 }
int main()
 {
  cin>>n;
  l=n;
  for(i=0; i<n; i++) cin>>m[i];
  for(i=0; i<n; i++) f[i]=m[i];
  sort(f, f+n);
  while(sravnenie(l)==1)
   {
    max_obra6tane(l-1);
    //for(i=0; i<n; i++) cout<<m[i]<<' ';
    //cout<<'\n';
    obra6tane(l-1);
    //for(i=0; i<n; i++) cout<<m[i]<<' ';
    //cout<<'\n';
    //if(sravnenie(n-1)==1) break; 
    l--;
   }
  // obra6tane(n-1);
  //max_obra6tane(n-1); 
  //for(i=0; i<n; i++) cout<<m[i]<<' ';
  return 0;
 }
