#include <iostream>
#include <cstring>
#include <algorithm>
#include<vector>
#include<map>
#define x first
#define y second
using namespace std;
const int N = 100010;
int n,m;
map<vector<int>,int>cnt;
vector<pair<int,vector<int>>>ans;
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
{
vector<int>line;
for(int j=0;j<m;j++)
{
int x;
cin>>x;
line.push_back(x);
}
cnt[line]++;
}
for(auto& p:cnt)ans.push_back({-p.y,p.x});
sort(ans.begin(),ans.end());
cout<<cnt.size()<<endl;
for(auto& p:ans)
{
printf("%d",-p.x);
for(auto x:p.y)
printf(" %d",x);
puts("");
}
return 0;
}