#include <stdio.h>
#include <algorithm>
#include <iostream>
using namespace std;
#define gc getchar
inline int geti(){
register int c = gc(), x = 0;
for(; c<'0' || c>'9'; c=gc());
for(; c>='0' && c<='9'; c=gc())
x = (x<<1) + (x<<3) + c -'0';
return x;
}
const int MAXN = 2e5 + 5, MAXA = 1e6 + 5, SQRT = 500;
int A[MAXN], K[MAXA], pos[MAXN], L[MAXN], R[MAXN], N, Q, ll, rr;
unsigned long long sum, res[MAXN];
bool comp(int i, int j){
if(L[i] / SQRT != L[j] / SQRT) return L[i] < L[j];
return R[i] < R[j];
}
void Delete(int x){
int &k = K[A[x]];
sum -= 1LLU * k * k * A[x];
k--;
sum += 1LLU * k * k * A[x];
}
void Insert(int x){
int &k = K[A[x]];
sum -= 1LLU * k * k * A[x];
k++;
sum += 1LLU * k * k * A[x];
}
int main(){
N = geti(), Q = geti();
for(int i=1; i<=N; ++i) A[i] = geti();
for(int i=1; i<=Q; ++i) pos[i] = i, L[i] = geti(), R[i] = geti();
sort(pos + 1, pos + Q + 1, comp);
ll = 1;
for(int i=1; i<=Q; ++i){
int l = L[pos[i]], r = R[pos[i]];
while(ll < l) Delete(ll++);
while(ll > l) Insert(--ll);
while(rr < r) Insert(++rr);
while(rr > r) Delete(rr--);
res[pos[i]] = sum;
}
for(int i=1; i<=Q; ++i) printf("%I64d\n", res[i]);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGdjIGdldGNoYXIKCmlubGluZSBpbnQgZ2V0aSgpewogIHJlZ2lzdGVyIGludCBjID0gZ2MoKSwgeCA9IDA7CiAgZm9yKDsgYzwnMCcgfHwgYz4nOSc7IGM9Z2MoKSk7CiAgZm9yKDsgYz49JzAnICYmIGM8PSc5JzsgYz1nYygpKQogICAgeCA9ICh4PDwxKSArICh4PDwzKSArIGMgLScwJzsKICByZXR1cm4geDsKfQoKY29uc3QgaW50IE1BWE4gPSAyZTUgKyA1LCBNQVhBID0gMWU2ICsgNSwgU1FSVCA9IDUwMDsKCmludCBBW01BWE5dLCBLW01BWEFdLCBwb3NbTUFYTl0sIExbTUFYTl0sIFJbTUFYTl0sIE4sIFEsIGxsLCBycjsKdW5zaWduZWQgbG9uZyBsb25nIHN1bSwgcmVzW01BWE5dOwoKYm9vbCBjb21wKGludCBpLCBpbnQgail7CiAgaWYoTFtpXSAvIFNRUlQgIT0gTFtqXSAvIFNRUlQpIHJldHVybiBMW2ldIDwgTFtqXTsKICByZXR1cm4gUltpXSA8IFJbal07Cn0KCnZvaWQgRGVsZXRlKGludCB4KXsKICBpbnQgJmsgPSBLW0FbeF1dOwogIHN1bSAtPSAxTExVICogayAqIGsgKiBBW3hdOwogIGstLTsKICBzdW0gKz0gMUxMVSAqIGsgKiBrICogQVt4XTsKfQoKdm9pZCBJbnNlcnQoaW50IHgpewogIGludCAmayA9IEtbQVt4XV07CiAgc3VtIC09IDFMTFUgKiBrICogayAqIEFbeF07CiAgaysrOwogIHN1bSArPSAxTExVICogayAqIGsgKiBBW3hdOwp9CgppbnQgbWFpbigpewogIE4gPSBnZXRpKCksIFEgPSBnZXRpKCk7CiAgZm9yKGludCBpPTE7IGk8PU47ICsraSkgQVtpXSA9IGdldGkoKTsKICBmb3IoaW50IGk9MTsgaTw9UTsgKytpKSBwb3NbaV0gPSBpLCBMW2ldID0gZ2V0aSgpLCBSW2ldID0gZ2V0aSgpOyAKICBzb3J0KHBvcyArIDEsIHBvcyArIFEgKyAxLCBjb21wKTsKICBsbCA9IDE7CiAgZm9yKGludCBpPTE7IGk8PVE7ICsraSl7CiAgICBpbnQgbCA9IExbcG9zW2ldXSwgciA9IFJbcG9zW2ldXTsKICAgIHdoaWxlKGxsIDwgbCkgRGVsZXRlKGxsKyspOwogICAgd2hpbGUobGwgPiBsKSBJbnNlcnQoLS1sbCk7CiAgICB3aGlsZShyciA8IHIpIEluc2VydCgrK3JyKTsKICAgIHdoaWxlKHJyID4gcikgRGVsZXRlKHJyLS0pOwogICAgcmVzW3Bvc1tpXV0gPSBzdW07CiAgfQogIGZvcihpbnQgaT0xOyBpPD1ROyArK2kpIHByaW50ZigiJUk2NGRcbiIsIHJlc1tpXSk7CiAgcmV0dXJuIDA7Cn0=