#include using namespace std; const int B = 18, MAX_N = (1 << 19) + 2; int n, v[MAX_N]; sets, os; int main() { #ifndef ONLINE_JUDGE freopen("data.in", "r", stdin); freopen("data.out", "w", stdout); #endif // ONLINE_JUDGE scanf("%d", &n); int rez = 0; for (int i = 1; i <= n; ++i) scanf("%d", &v[i]), rez |= v[i]; sort (v + 1, v + n + 1); int nr = 0, ad = 0; for (int i = 1; i <= n; ++i) { if (s.find(v[i]) == end(s)) { ++ad; os.clear(); for (auto ii : s) os.insert(ii | v[i]); for (auto ii : os) s.insert(ii); s.insert(v[i]); } } printf("%d", ad); return 0; }