#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
typedef long long ll;
#define MG 500
#define MN 100005
#define MM 1000005
int zz;
inline int get_id(int x, int y) { return (x/zz)*zz + (y/zz); }
struct Query {
int lo, hi, id, ord;
long long res;
} q[MN];
inline bool cmp(Query q1, Query q2) { return q1.id < q2.id; }
inline bool fin(Query q1, Query q2) { return q1.ord < q2.ord; }
int n, Q, a[MN], d[MM];
int main() {
int i, j, k;
scanf("%d%d",&n,&Q);
zz = (int)sqrt(n+0.0);
for (i = 0; i < n; i++) scanf("%d",&a[i]);
for (k = 1; k <= Q; k++) {
scanf("%d%d",&q[k].lo,&q[k].hi); q[k].lo--, q[k].hi--;
q[k].id = get_id(q[k].lo, q[k].hi);
q[k].ord = k;
}
sort(q+1, q+Q+1, cmp);
for (k = 1; k <= Q; k++) {
if (k == 1) {
for (i = q[k].lo; i <= q[k].hi; i++) q[k].res += (ll)(2*(d[a[i]]++)+1)*(ll)(a[i]);
} else {
q[k].res = q[k-1].res;
if (q[k-1].hi < q[k].hi) for (i = q[k-1].hi+1; i <= q[k].hi; i++) q[k].res += (ll)(2*(d[a[i]]++)+1)*(ll)(a[i]);
if (q[k].lo < q[k-1].lo) for (i = q[k].lo; i < q[k-1].lo; i++) q[k].res += (ll)(2*(d[a[i]]++)+1)*(ll)(a[i]);
if (q[k].lo > q[k-1].lo) for (i = q[k-1].lo; i < q[k].lo; i++) q[k].res -= (ll)(2*(d[a[i]]--)-1)*(ll)(a[i]);
if (q[k-1].hi > q[k].hi) for (i = q[k].hi+1; i <= q[k-1].hi; i++) q[k].res -= (ll)(2*(d[a[i]]--)-1)*(ll)(a[i]);
}
}
sort(q+1, q+Q+1, fin);
for (k = 1; k <= Q; k++) printf("%lld\n",q[k].res);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxhbGdvcml0aG0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwojZGVmaW5lIE1HIDUwMAojZGVmaW5lIE1OIDEwMDAwNQojZGVmaW5lIE1NIDEwMDAwMDUKaW50IHp6OwppbmxpbmUgaW50IGdldF9pZChpbnQgeCwgaW50IHkpIHsgcmV0dXJuICh4L3p6KSp6eiArICh5L3p6KTsgfQpzdHJ1Y3QgUXVlcnkgewoJaW50IGxvLCBoaSwgaWQsIG9yZDsKCWxvbmcgbG9uZyByZXM7Cn0gcVtNTl07CmlubGluZSBib29sIGNtcChRdWVyeSBxMSwgUXVlcnkgcTIpIHsgcmV0dXJuIHExLmlkIDwgcTIuaWQ7IH0KaW5saW5lIGJvb2wgZmluKFF1ZXJ5IHExLCBRdWVyeSBxMikgeyByZXR1cm4gcTEub3JkIDwgcTIub3JkOyB9CmludCBuLCBRLCBhW01OXSwgZFtNTV07CmludCBtYWluKCkgewoJaW50IGksIGosIGs7CglzY2FuZigiJWQlZCIsJm4sJlEpOwoJenogPSAoaW50KXNxcnQobiswLjApOwoJZm9yIChpID0gMDsgaSA8IG47IGkrKykgc2NhbmYoIiVkIiwmYVtpXSk7Cglmb3IgKGsgPSAxOyBrIDw9IFE7IGsrKykgewoJCXNjYW5mKCIlZCVkIiwmcVtrXS5sbywmcVtrXS5oaSk7IHFba10ubG8tLSwgcVtrXS5oaS0tOwoJCXFba10uaWQgPSBnZXRfaWQocVtrXS5sbywgcVtrXS5oaSk7CgkJcVtrXS5vcmQgPSBrOwoJfQoJc29ydChxKzEsIHErUSsxLCBjbXApOwoJZm9yIChrID0gMTsgayA8PSBROyBrKyspIHsKCQlpZiAoayA9PSAxKSB7CgkJCWZvciAoaSA9IHFba10ubG87IGkgPD0gcVtrXS5oaTsgaSsrKSBxW2tdLnJlcyArPSAobGwpKDIqKGRbYVtpXV0rKykrMSkqKGxsKShhW2ldKTsKCQl9IGVsc2UgewoJCQlxW2tdLnJlcyA9IHFbay0xXS5yZXM7CgkJCWlmIChxW2stMV0uaGkgPCBxW2tdLmhpKSBmb3IgKGkgPSBxW2stMV0uaGkrMTsgaSA8PSBxW2tdLmhpOyBpKyspIHFba10ucmVzICs9IChsbCkoMiooZFthW2ldXSsrKSsxKSoobGwpKGFbaV0pOwoJCQlpZiAocVtrXS5sbyA8IHFbay0xXS5sbykgZm9yIChpID0gcVtrXS5sbzsgaSA8IHFbay0xXS5sbzsgaSsrKSBxW2tdLnJlcyArPSAobGwpKDIqKGRbYVtpXV0rKykrMSkqKGxsKShhW2ldKTsKCQkJaWYgKHFba10ubG8gPiBxW2stMV0ubG8pIGZvciAoaSA9IHFbay0xXS5sbzsgaSA8IHFba10ubG87IGkrKykgcVtrXS5yZXMgLT0gKGxsKSgyKihkW2FbaV1dLS0pLTEpKihsbCkoYVtpXSk7CgkJCWlmIChxW2stMV0uaGkgPiBxW2tdLmhpKSBmb3IgKGkgPSBxW2tdLmhpKzE7IGkgPD0gcVtrLTFdLmhpOyBpKyspIHFba10ucmVzIC09IChsbCkoMiooZFthW2ldXS0tKS0xKSoobGwpKGFbaV0pOwoJCX0KCX0KCXNvcnQocSsxLCBxK1ErMSwgZmluKTsKCWZvciAoayA9IDE7IGsgPD0gUTsgaysrKSBwcmludGYoIiVsbGRcbiIscVtrXS5yZXMpOwoJcmV0dXJuIDA7Cn0=