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