#include <bits/stdc++.h>
using namespace std;
struct sub
{
long long so;
long long vt;
};
sub a[205];
int n,kq,f[205];
long long better(sub a, sub b)
{
return a.so<b.so;
}
void nhap()
{
ifstream fi("subset.inp");
fi>>n;
for (int i=1;i<=n;i++)
{
fi>>a[i].so;
a[i].vt=i;
}
sort(a+1,a+1+n,better);
}
void xuly()
{
for (int i=1;i<=n;i++)
{
f[i]=1;
}
for (int i=1;i<=n;i++)
{
int maxx =0;
for (int j=1;j<=i-1;j++)
{
if((a[i].so % a[j].so ==0) && (j>maxx))
maxx=f[j];
}
f[i]=maxx+1;
kq=max(kq,f[i]);
}
}
void ghi()
{
ofstream fo("subset.out");
fo<<kq<<endl;
for (int i=1;i<=kq;i++)
{
for (int j=1;j<=n;j++)
if (f[j]==i)
{
fo<<a[j].vt<<" ";
}
fo<<endl;
}
}
int main()
{
nhap();
xuly();
ghi();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IHN1Ygp7CiAgICAgbG9uZyBsb25nIHNvOwogICAgIGxvbmcgbG9uZyB2dDsKfTsKc3ViIGFbMjA1XTsKaW50IG4sa3EsZlsyMDVdOwoKbG9uZyBsb25nIGJldHRlcihzdWIgYSwgc3ViIGIpCnsKICAgIHJldHVybiBhLnNvPGIuc287Cn0KCnZvaWQgbmhhcCgpCnsKICAgIGlmc3RyZWFtIGZpKCJzdWJzZXQuaW5wIik7CiAgICBmaT4+bjsKICAgIGZvciAoaW50IGk9MTtpPD1uO2krKykKICAgIHsKICAgICAgICBmaT4+YVtpXS5zbzsKICAgICAgICBhW2ldLnZ0PWk7CiAgICB9CiAgICBzb3J0KGErMSxhKzErbixiZXR0ZXIpOwp9Cgp2b2lkIHh1bHkoKQp7CiAgICBmb3IgKGludCBpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgZltpXT0xOwogICAgfQogICAgZm9yIChpbnQgaT0xO2k8PW47aSsrKQogICAgewogICAgICAgIGludCBtYXh4ID0wOwogICAgICAgIGZvciAoaW50IGo9MTtqPD1pLTE7aisrKQogICAgICAgIHsKICAgICAgICAgICAgaWYoKGFbaV0uc28gJSBhW2pdLnNvID09MCkgJiYgKGo+bWF4eCkpCiAgICAgICAgICAgICAgICBtYXh4PWZbal07CiAgICAgICAgfQogICAgICAgIGZbaV09bWF4eCsxOwogICAgICAgIGtxPW1heChrcSxmW2ldKTsKICAgIH0KfQp2b2lkIGdoaSgpCnsKICAgIG9mc3RyZWFtIGZvKCJzdWJzZXQub3V0Iik7CiAgICBmbzw8a3E8PGVuZGw7CiAgICBmb3IgKGludCBpPTE7aTw9a3E7aSsrKQogICAgewogICAgICAgIGZvciAoaW50IGo9MTtqPD1uO2orKykKICAgICAgICBpZiAoZltqXT09aSkKICAgICAgICB7CiAgICAgICAgZm88PGFbal0udnQ8PCIgIjsKICAgICAgICB9CiAgICAgICAgZm88PGVuZGw7CiAgICB9Cn0KaW50IG1haW4oKQp7CiAgICBuaGFwKCk7CiAgICB4dWx5KCk7CiAgICBnaGkoKTsKfQo=