#include <bits/stdc++.h>
using namespace std;
ifstream fin("test.in");
struct intr {
  int l, r, id;
};
intr q[200005];
int p, n, qq;
long long sol;
int a[200005];
long long rez[200005];
int mp[5 * 200005];
bool cmp(intr &q1, intr &q2) {
  return (q1.r / p < q2.r / p || (q1.r / p == q2.r / p && q1.l < q2.l));
}
void add(int x) {
  int v = mp[x];
  sol = sol - 1LL * v * v * x;
  sol = sol + 1LL * (v + 1) * (v + 1) * x;
  mp[x]++;
}
void del(int x) {
  int v = mp[x];
  sol = sol - 1LL * v * v * x;
  if (v >= 1) {
    sol = sol + 1LL * (v - 1) * (v - 1) * x;
    mp[x]--;
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int i, lx, rx;
  cin >> n >> qq;
  for (i = 1; i <= n; i++) cin >> a[i];
  p = sqrt(n);
  for (i = 1; i <= qq; i++) {
    cin >> q[i].l >> q[i].r;
    q[i].id = i;
  }
  sort(q + 1, q + qq + 1, cmp);
  lx = 1;
  rx = 0;
  sol = 0;
  for (i = 1; i <= qq; i++) {
    while (q[i].r > rx) add(a[++rx]);
    while (q[i].r < rx) del(a[rx--]);
    while (q[i].l > lx) del(a[lx++]);
    while (q[i].l < lx) add(a[--lx]);
    rez[q[i].id] = sol;
  }
  for (i = 1; i <= qq; i++) cout << rez[i] << '\n';
}
