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