#include #include int main() { int N, Q; std::cin >> N >> Q; std::vector A(N); for (auto &a : A) std::cin >> a; std::vector> prefix_sum(N + 1, std::vector(26, 0)); for (int i = 0; i < N; i++) { for (int j = 0; j < 26; j++) { prefix_sum[i + 1][j] = prefix_sum[i][j] + (A[i] >> j & 1); } } while (Q--) { int L, R; std::cin >> L >> R; L--; int64_t result = 0, num_total = R - L; for (int i = 0; i < 26; i++) { int64_t num_ones = prefix_sum[R][i] - prefix_sum[L][i]; result += num_ones * (num_total - num_ones) * (1 << i); } std::cout << result << std::endl; } }