#include<iostream>
using namespace std;
int find_max(int a[], int n)
{
int num = 0;
for (int i = 1; i < n; i++)
{
if (a[num] <= a[i])
{
num = i;
}
}
return num;
}
void reverse(int a[], int n, int pos1, int pos2)
{
for (int i = pos1; i <= (pos1 + pos2) / 2; i++)
{
int temp = a[i];
a[i] = a[n - i - 1];
a[n - i - 1] = temp;
}
}
int main()
{
int n;
while(cin >> n)
{
if(n==0)
{
break;
}
int a[n] ;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
int j = 0;
int sub[n];
int pos1, pos2;
int count=0;
for (int i = 0; i < n;n--)
{
j = find_max(a, n - i);
while(j != n-i-1)
{
if (j != 0)
{
pos1 = 0;
pos2 = j;
}
else
{
pos1 = 0;
pos2 = n - i-1;
}
sub[count]=abs((pos1 - pos2))+1;
reverse(a, sub[count], pos1, pos2);
count++;
j = find_max(a, n - i);
}
}
cout<<count<<" ";
int k = 0;
while(k<count)
{
cout << sub[k] << " ";
k++;
}
cout<<endl;
}
return 0;
}