#include using namespace std; #define MAXM 19 #define MAXN (1 << MAXM) int N; int A[MAXN]; int generatedOrSum[MAXN]; int main() { // assert(freopen("peculiar_function.in", "r", stdin)); // assert(freopen("peculiar_function.out", "w", stdout)); cin.sync_with_stdio(false); cin >> N; for (int i = 0; i < N; i++) { cin >> A[i]; generatedOrSum[A[i]] = A[i]; } int ans = 0; for (int mask = 1; mask < MAXN; mask++) { int crtOrSum = 0; for (int i = 0; i < MAXM; i++) { if (mask & (1 << i)) { crtOrSum |= generatedOrSum[mask ^ (1 << i)]; } } if (generatedOrSum[mask] == 0) { generatedOrSum[mask] = crtOrSum; } else if (generatedOrSum[mask] > crtOrSum) { ans++; } } cout << ans << endl; return 0; }