#include using namespace std; using ull = unsigned long long; static ull F[1 << 24]; //これ通るの? //ゆきこだと通らなそう int main() { int N; cin >> N; vector A(N); for (int i = 0; i < N; i++) cin >> A[i]; // for (int i = 0; i < N; i++) { // A[i] = rand() % (1 << 30); // } int mask = (1 << 24) - 1; for (int b = 0; b < (1 << 6); b++) { int x = b << 24; ull y = (1ull << b); for (int a : A) { if ((x | a) == a) { F[a & mask] |= y; } } } //高速ゼータ変換 for (int i = 0; i < 24; i++) { for (int j = 0; j < (1 << 24); j++) { if (j >> i & 1) F[j ^ (1 << i)] |= F[j]; } } int ans = 0; for (int i = 0; i < (1 << 24); i++) ans += popcount(F[i]); cout << ans << "\n"; }