#pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,popcnt") #include #include using u64 = unsigned long long; using u32 = unsigned; using bs_t = std::array; bs_t B; void set(bs_t &B, u32 i){ B[i/64] |= 1ULL << (i%64); } void zeta(bs_t &B){ for(u32 i = 1; i < B.size(); i <<= 1){ for(u32 j = 0; j < B.size(); j++){ if(j & i){ B[j - i] |= B[j]; } } } for(u32 j = 0; j < B.size(); j++){ B[j] |= B[j] >> 32; B[j] |= (B[j] >> 16) & 0x0000FFFF0000FFFF; B[j] |= (B[j] >> 8) & 0x00FF00FF00FF00FF; B[j] |= (B[j] >> 4) & 0x0F0F0F0F0F0F0F0F; B[j] |= (B[j] >> 2) & 0x3333333333333333; B[j] |= (B[j] >> 1) & 0x5555555555555555; } } int main(){ u32 n; scanf("%u", &n); for(u32 i = 0; i < n; i++){ u32 a; scanf("%u", &a); set(B, a); } zeta(B); u32 ans = 0; for(u32 i = 0; i < B.size(); i++){ ans += __builtin_popcountll(B[i]); } printf("%u\n", ans); return 0; }