#include #include #include #define ull unsigned long long using namespace std; int main() { int n; scanf("%d", &n); array arr; arr.fill(0); for (int i = 0; i < n; ++i) { //for (int x = 0; x < 64; ++x) { printf("%lld ", arr.at(x)); } puts(""); ull v; scanf("%lld", &v); for (int i = 0; i < 64; ++i) { if ((v & 1) == 1) { arr[i] += 1; } v = v >> 1; } } //puts("=============="); ull possible = 0; //for (int i = 0; i < 64; ++i) { //auto len = 64 -__builtin_clzll((ull)i); //printf("X: %d %d %d\n", i, len, (1 << len)-1); //} for (int i = 0; i < 64; ++i) { if (arr[i] != 0) { possible |= 1 << i; } //printf("%d %lld %lld\n ", i, arr[i], possible); //for (int x = 0; x < 10; ++x) { printf("%lld ", arr.at(x)); } puts(""); auto len = 64 -__builtin_clzll(arr[i]); if (arr[i] > 0) possible |= ((1 << len) - 1) << i; ull curr = arr[i] >> 1; for (int j = i+1; j < 10; ++j) { //printf(" %lld\n", curr); if ((curr & 1) == 1) arr[j] += 1; curr = curr >> 1; } } printf("%lld\n", possible); }