#include <cstdio>

using namespace std;

const int Lim=1<<19,MaxBit=18;
int v1[2*Lim],v2[2*Lim];

int main()
{
    //freopen("file.in", "r", stdin);
    //freopen("file.out", "w", stdout);
    int n,sol=0,x;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&x);
        v1[x]=x;
    }
    for(int mask=1;mask<=Lim;mask++)
        for(int i=0;i<=MaxBit;i++)
            v1[mask|(1<<i)]|=v1[mask];
    for(int mask=1;mask<=Lim;mask++)
    {
        if(v1[mask]==mask && v2[mask]!=mask)
        {
            sol++;
            v2[mask]=mask;
        }
        for(int i=0;i<=MaxBit;i++)
            v2[mask|(1<<i)]|=v2[mask];
    }
    printf("%d",sol);
    return 0;
}