#include <bits/stdc++.h>
const int N=50005;
int n,T,p[N],q[N],a[N],m;
int main()
{
scanf("%d%d",&n,&T);
for(int i=0;i<n;++i)scanf("%d",p+i),q[p[i]]=i;
for(int i=1;i<=n;a[i++]=m)m+=q[i]<q[i-1];
printf("%d\n",m=m?32-__builtin_clz(m):0);
if(T)for(int i=0;i<=m;++i)
{
for(int j=0;j<n;++j)printf("%d%c",p[j],j==n-1?'\n':' ');
std::stable_partition(p,p+n,[i](int x){return ~a[x]>>i&1;});
}
return 0;
}