#include using namespace std; // Template // ============================================== // pbds // #include // #include // using namespace __gnu_pbds; // template> // using ordered_set = tree; // Debugging #ifdef LOCAL #include "debug.h" #else #define debug(...) #define see(x) #endif typedef long long ll; typedef vector VI; typedef vector VLL; typedef vector VB; typedef vector> VVI; typedef pair PI; typedef pair PLL; typedef vector> VPI; #define pb push_back #define ff first #define ss second #define mp make_pair #define all(a) a.begin(), a.end() #define revall(a) a.rbegin(), a.rend() #define loop(i, s, e) for (int i = s; i < e; ++i) #define inp(v) for (auto& x : v) cin >> x #define outp(v) for (int i = 0, n = v.size(); i < n; ++i) cout << v[i] << " \n"[i == n - 1] #define nl "\n" #define yep cout << "YES\n" #define nope cout << "NO\n" #define INF (int) 1e9 #define INFL (ll) 1e18 // #define MOD 998244353 #define MOD 1000000007 #define MAXN 12000002 // ============================================= void solve(int tc) { int n, q; cin >> n >> q; VI a(n); inp(a); VVI pre(n + 1, VI(27)); loop(i, 0, n) { loop(j, 0, 27) { pre[i + 1][j] = pre[i][j] + (bool) (a[i] & (1 << j)); } } while (q--) { int l, r; cin >> l >> r; ll ans = 0; loop(i, 0, 27) { ll x = pre[r][i] - pre[l - 1][i]; x = x * (r - l + 1 - x); ans += x * (1 << i); } cout << ans << nl; } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int t = 1; // cin >> t; int x = t; while(t--) solve(x - t); #ifdef LOCAL cerr << "Execution time: " << 1000.f * clock() / CLOCKS_PER_SEC << " ms." << nl; #endif return 0; }