#include <iostream>
const int maxn = 1000000;
using namespace std;
int n,a,d[maxn+2],dd[maxn+1],p,tplt,m;
int main() {
	cin >> n;
	for (int i=1; i<=n; i++)
	{
	  cin >> a;
	  d[a] = i;
	}
	tplt = 0;
	p = n;
	m = n;
	for (int i=n; i>=1; i--)
	{
		if (d[i]==p)
		{
			tplt++;
			dd[m]=p-m+1;
			p = m-1;
			m = p;
		}
		else 
		{
			if (d[i]<m) m = d[i];
		}
	}
	cout << tplt;
	for (int i=1; i<=n; i++)
	{
		if (dd[i]!=0)
		{
			cout << '\n' << dd[i] << ' ';
		}
		cout << i << ' ';
	}
	return 0;
}