#include<bits/stdc++.h> using namespace std; const int MAXN = 1e6 + 10; const int LOG = 19; int n, a[MAXN], x[MAXN]; bool mark[MAXN]; int main(){ scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &a[i]), x[a[i]] = a[i]; for (int mask = 1; mask < 1<<LOG; mask++){ for (int w = 0; w < LOG; w++) if (mask>>w&1) x[mask] |= x[mask^1<<w]; if (x[mask] == mask) mark[mask] = 1; } memset(x, 0, sizeof(x)); int ans = 0; for (int mask = 1; mask < 1<<LOG; mask++){ for (int w = 0; w < LOG; w++) if (mask>>w&1) x[mask] |= x[mask^1<<w]; if (mark[mask] && x[mask] != mask) ans++, x[mask] = mask; } cout << ans << "\n"; return 0; }