#include<bits/stdc++.h>
#define N 10000
using namespace std;
typedef long long ll;
ll f[N],n,m,res=0;
struct mm
{
ll so;
int vt;
};
mm a[N];
bool compare(mm a,mm b)
{
return (a.so<b.so);
}
void Read()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i].so);
a[i].vt=i;
f[i]=1;
}
sort(a+1,a+1+n,compare);
}
void Solve()
{
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if(a[j].so%a[i].so==0 && f[j]<f[i]+1) f[j]=f[i]+1;
for(int i=1;i<=n;i++) res=max(res,f[i]);
printf("%d\n",res);
for(int i=1;i<=res;i++)
{
for(int j=1;j<=n;j++) if(f[j]==i) printf("%d ",a[j].vt);
printf("\n");
}
}
int main()
{
freopen("SUBSET.inp","r",stdin);
freopen("SUBSET.out","w",stdout);
Read();
Solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBOIDEwMDAwCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpsbCBmW05dLG4sbSxyZXM9MDsKc3RydWN0IG1tCnsKICAgIGxsIHNvOwogICAgaW50IHZ0Owp9OwptbSBhW05dOwpib29sIGNvbXBhcmUobW0gYSxtbSBiKQp7CiAgICByZXR1cm4gKGEuc288Yi5zbyk7Cn0Kdm9pZCBSZWFkKCkKewogICAgc2NhbmYoIiVkIiwmbik7CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKykKICAgIHsKICAgICAgICBzY2FuZigiJWxsZCIsJmFbaV0uc28pOwogICAgICAgIGFbaV0udnQ9aTsKICAgICAgICBmW2ldPTE7CiAgICB9CiAgICBzb3J0KGErMSxhKzErbixjb21wYXJlKTsKfQp2b2lkIFNvbHZlKCkKewogICAgZm9yKGludCBpPTE7aTxuO2krKykKICAgICAgICBmb3IoaW50IGo9aSsxO2o8PW47aisrKQogICAgICAgICAgICBpZihhW2pdLnNvJWFbaV0uc289PTAgJiYgZltqXTxmW2ldKzEpIGZbal09ZltpXSsxOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspIHJlcz1tYXgocmVzLGZbaV0pOwogICAgcHJpbnRmKCIlZFxuIixyZXMpOwogICAgZm9yKGludCBpPTE7aTw9cmVzO2krKykKICAgIHsKICAgICAgICBmb3IoaW50IGo9MTtqPD1uO2orKykgaWYoZltqXT09aSkgcHJpbnRmKCIlZCAiLGFbal0udnQpOwogICAgICAgIHByaW50ZigiXG4iKTsKICAgIH0KfQppbnQgbWFpbigpCnsKICAgIGZyZW9wZW4oIlNVQlNFVC5pbnAiLCJyIixzdGRpbik7CiAgICBmcmVvcGVuKCJTVUJTRVQub3V0IiwidyIsc3Rkb3V0KTsKICAgIFJlYWQoKTsKICAgIFNvbHZlKCk7Cn0K