/*
TASK: FSORT
LANG: C++
*/

#include <iostream>
#include <values.h>
using namespace std;

int n,a[1001],l[1001],m=0,z[1001],x[1001];

int main () {
	scanf("%d",&n);
	int i;
	for (i=0;i<n;i++) {
		scanf("%d",&a[i]);
	}
	bool s=true;
	for (i=1;i<n;i++) {
		if (a[i]<a[i-1]) {
			s=false;
		}
	}
	int c=0;
	if (s) goto e;
	i=1;
	c=0;
	while (i<n && a[i]>=a[i-1]) {
		c++;
		i++;
	}
	int j;
	if (c>0) {
		l[m++]=c+1;
		for (i=0,j=c;i<j;i++,j--) {
			swap(a[i],a[j]);
		}
	}
	while (s==false) {
		for (i=0;i<n;i++) {
			z[i]=x[i];
			x[i]=a[i];
		}
		a[1000]=2147483647;
		c=1000;
		i=0;
		while (a[0]==a[i]) i++;
		i++;
		for (;i<n;i++) {
			if (a[i]>=a[0] && a[i]<a[c]) c=i;
		}
		if (c==1000) c=n;
		l[m++]=c;
		for (i=0,j=c-1;i<j;i++,j--) {
			swap(a[i],a[j]);
		}
		s=true;
		for (i=0;i<n;i++) {
			if (a[i]!=z[i]) s=false;
		}
		if (s) {
			m--;
			m--;
			i=1;
			c=0;
			while (i<n && a[i]>=a[i-1]) {
				c++;
				i++;
			}
			if (c>0) {
				l[m++]=c+1;
				for (i=0,j=c;i<j;i++,j--) {
					swap(a[i],a[j]);
				}
			}
		}
		s=true;
		for (i=1;i<n;i++) {
			if (a[i]<a[i-1]) {
				s=false;
			}
		}
		if(s) goto e;
	}
 e:	for (i=0;i<m-1;i++) {
		printf("%d ",l[i]);
	}
	printf("%d\n",l[m-1]);
	return 0;
}
