#include #include constexpr int BITS = 64; void get_ones(std::vector& ones){ unsigned long long num; std::cin >> num; int i = 0; while (num){ ones[i] += num & 1; num >>= 1; i++; } } int main() { int n = 0; std::cin >> n; std::vector ones(BITS); for (int i = 0; i < n; i++){ get_ones(ones); } unsigned long long pr = 0; unsigned long long mask = 1; unsigned long long num = 0; bool set = false; for (int i = 0; i < BITS; i++){ set = false; if (ones[i] > 0){ set = true; } if (ones[i] >= 2) { pr = ones[i]/2; } else if (ones[i] == 1 && pr != 0){ pr--; } else if (ones[i] == 0 && pr != 0){ set = true; pr--; } if (set) { num |= mask; } mask <<= 1; } std::cout << num << '\n'; //for (auto& one: ones){ // std::cout << one; //} //std::cout << '\n'; return 0; }