n = int(input()) a = map(int, input().split()) lo = 12 hi = 30 - lo s = 1 << lo mask = s - 1 bucket = [[] for _ in range(s)] for x in a: bucket[x & mask].append(x >> lo) dp = [0] * s hs = 1 << hi buf = bytearray(hs >> 3) for i in range(s): for x in bucket[i]: buf[x >> 3] |= 1 << (x & 7) dp[i] = int.from_bytes(buf, "little") for x in bucket[i]: buf[x >> 3] = 0 for b in range(lo): bit = 1 << b x = bit while x < s: dp[x ^ bit] |= dp[x] x = (x + 1) | bit full = (1 << hs) - 1 f = [] for b in range(hi): bit = 1 << b f.append((full // ((1 << bit) + 1)) << bit) ans = 0 for x in dp: for b in range(hi): x |= (x & f[b]) >> (1 << b) ans += x.bit_count() print(ans)