#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();
}
