#include <iostream>
using namespace std;
int main()
{
int n,i,visited[1001]={0},matching[1001],length,s,cycles[100001],k=0;
cin>>n;
for (i=1;i<=n;i++) cin>>matching[i];
for (i=1;i<=n;i++) {
if (visited[i]==0) {
//cout<<i<<" ";
length++;s=matching[i];visited[i]=1;
//cout<<s<<" ";
while (s!=i) {
visited[s]=1;
//length++;
s=matching[s];
//cout<<s<<" ";
}
//cout<<endl;
}
}
for (i=1;i<=1000;i++) visited[i]=0;
cout<<length<<endl;
for (i=1;i<=n;i++) {
if (visited[i]==0) {
cout<<i<<" ";
length++;s=matching[i];visited[i]=1;
//cout<<s<<" ";
while (s!=i) {
visited[s]=1;
//length++;
cout<<s<<" ";
s=matching[s];
}
cout<<s<<" ";
cout<<endl;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKaW50IG1haW4oKQp7CiAgaW50IG4saSx2aXNpdGVkWzEwMDFdPXswfSxtYXRjaGluZ1sxMDAxXSxsZW5ndGgscyxjeWNsZXNbMTAwMDAxXSxrPTA7CiAgY2luPj5uOwogIGZvciAoaT0xO2k8PW47aSsrKSBjaW4+Pm1hdGNoaW5nW2ldOwogIGZvciAoaT0xO2k8PW47aSsrKSB7CiAgICAgIGlmICh2aXNpdGVkW2ldPT0wKSB7CiAgICAgICAgICAvL2NvdXQ8PGk8PCIgIjsKICAgICAgICAgIGxlbmd0aCsrO3M9bWF0Y2hpbmdbaV07dmlzaXRlZFtpXT0xOwogICAgICAgICAgLy9jb3V0PDxzPDwiICI7CiAgICAgICAgICB3aGlsZSAocyE9aSkgewogICAgICAgICAgICAgdmlzaXRlZFtzXT0xOwogICAgICAgICAgICAgLy9sZW5ndGgrKzsKICAgICAgICAgICAgIHM9bWF0Y2hpbmdbc107CiAgICAgICAgICAgICAvL2NvdXQ8PHM8PCIgIjsKICAgICAgICAgIH0KICAgICAgICAvL2NvdXQ8PGVuZGw7CiAgICAgIH0KICAgICAgCiAgfQogIGZvciAoaT0xO2k8PTEwMDA7aSsrKSB2aXNpdGVkW2ldPTA7CiAgY291dDw8bGVuZ3RoPDxlbmRsOwogIGZvciAoaT0xO2k8PW47aSsrKSB7CiAgICAgIGlmICh2aXNpdGVkW2ldPT0wKSB7CiAgICAgICAgICBjb3V0PDxpPDwiICI7CiAgICAgICAgICBsZW5ndGgrKztzPW1hdGNoaW5nW2ldO3Zpc2l0ZWRbaV09MTsKICAgICAgICAgIC8vY291dDw8czw8IiAiOwogICAgICAgICAgd2hpbGUgKHMhPWkpIHsKICAgICAgICAgICAgIHZpc2l0ZWRbc109MTsKICAgICAgICAgICAgIC8vbGVuZ3RoKys7CiAgICAgICAgICAgICBjb3V0PDxzPDwiICI7CiAgICAgICAgICAgICBzPW1hdGNoaW5nW3NdOyAKICAgICAgICAgIH0KICAgICAgICAgIGNvdXQ8PHM8PCIgIjsKICAgICAgICBjb3V0PDxlbmRsOwogICAgICB9CiAgICAgIAogIH0KICAgcmV0dXJuIDA7Cn0=