#include <bits/stdc++.h>
using namespace std;
template <class T>
void chkmin(T &x, T y) {
  if (y < x) x = y;
}
template <class T>
void chkmax(T &x, T y) {
  if (y > x) x = y;
}
const int N = 105;
int a[N], n, x, ans1, ans2[N][N], len;
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= (n); i++) scanf("%d", a + i);
  for (int i = 1; i <= (n - (n & 1)); i++) {
    for (int j = 1; j <= (n); j++)
      if (a[j] == i) {
        x = j;
        break;
      }
    ans1++;
    len = 0;
    for (int j = 1; j <= (i - 1); j++) ans2[ans1][++len] = 1;
    ans2[ans1][++len] = x - i + 1;
    reverse(a + i, a + x + 1);
    if (x < n) {
      ans2[ans1][++len] = n - x;
      reverse(a + x + 1, a + n + 1);
    }
    if (i % 2 == 0) reverse(ans2[ans1] + 1, ans2[ans1] + len + 1);
    if (len == 1) ans1--;
    ans2[ans1][0] = len;
  }
  printf("%d\n", ans1);
  for (int i = 1; i <= (ans1); i++) {
    printf("%d ", ans2[i][0]);
    for (int j = 1; j <= (ans2[i][0]); j++) printf("%d ", ans2[i][j]);
    putchar('\n');
  }
}
