#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;
}