func_code_string: #include <bits/stdc++.h>   using namespace std;   struct query {     long long int l;     long long int r;     long long int i;   };   query Q[200001];   long long int arr[200001];   long long int f[1000001];   long long int ans[200001];   long long int cnt;   bool compare(query a, query b) {     if ((a.l / 448) != (b.l / 448)) return a.l / 448 < b.l / 448;     return a.r < b.r;   }   void add(long long int a) {     long long int x = f[arr[a]] * f[arr[a]] * arr[a];     cnt -= x;     f[arr[a]]++;     x = f[arr[a]] * f[arr[a]] * arr[a];     cnt += x;   }   void remove(long long int a) {     long long int x = f[arr[a]] * f[arr[a]] * arr[a];     cnt -= x;     f[arr[a]]--;     x = f[arr[a]] * f[arr[a]] * arr[a];     cnt += x;   }   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     long long int n, i, q;     cin >> n >> q;     for (i = 0; i < n; i++) cin >> arr[i];     for (i = 0; i < q; i++) {       cin >> Q[i].l >> Q[i].r;       Q[i].i = i;       Q[i].l--;       Q[i].r--;     }     sort(Q, Q + q, compare);     long long int cl = 0, cr = -1;     for (i = 0; i < q; i++) {       long long int L = Q[i].l;       long long int R = Q[i].r;       while (cl > L) {         cl--;         add(cl);       }       while (cr < R) {         cr++;         add(cr);       }       while (cl < L) {         remove(cl);         cl++;       }       while (cr > R) {         remove(cr);         cr--;       }       ans[Q[i].i] = cnt;     }     for (i = 0; i < q; i++) {       cout << ans[i] <<   n ;     }     return 0;   }   