#include <bits/stdc++.h>
using namespace std;
//
const int mx = 2e5 + 5;
const int maxa = 1e6 + 5;
const int S = 450;
//
struct query
{
int l, r, id;
//
bool operator < (const query &other)
{
if (l / S != other.l / S)
return l < other.l;
return l / S & 1 ? r < other.r : r > other.r;
}
};
//
int n, t, a[mx];
int cnt[maxa];
long long ans[mx];
query Q[mx];
//
void calc (void)
{
int l = 0, r = 0;
long long sum = 0;
//
for (int i = 1; i <= t; ++i)
{
while (l < Q[i].l)
{
--cnt[a[l]];
sum -= (cnt[a[l]] << 1 | 1LL) * a[l];
++l;
}
while (l > Q[i].l)
{
--l;
sum += (cnt[a[l]] << 1 | 1LL) * a[l];
++cnt[a[l]];
}
while (r < Q[i].r)
{
++r;
sum += (cnt[a[r]] << 1 | 1LL) * a[r];
++cnt[a[r]];
}
while (r > Q[i].r)
{
--cnt[a[r]];
sum -= (cnt[a[r]] << 1 | 1LL) * a[r];
--r;
}
ans[Q[i].id] = sum;
}
}
//
void process (void)
{
cin >> n >> t;
for (int i = 1; i <= n; ++i)
cin >> a[i];
for (int i = 1; i <= t; ++i)
cin >> Q[i].l >> Q[i].r,
Q[i].id = i;
sort(Q + 1, Q + t + 1);
calc();
for (int i = 1; i <= t; ++i)
cout << ans[i] << '\n';
}
//
signed main (void)
{
ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
process();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vCmNvbnN0IGludCBteCA9IDJlNSArIDU7CmNvbnN0IGludCBtYXhhID0gMWU2ICsgNTsKY29uc3QgaW50IFMgPSA0NTA7Ci8vCnN0cnVjdCBxdWVyeQp7CiAgICBpbnQgbCwgciwgaWQ7CiAgICAvLwogICAgYm9vbCBvcGVyYXRvciA8IChjb25zdCBxdWVyeSAmb3RoZXIpCiAgICB7CiAgICAgICAgaWYgKGwgLyBTICE9IG90aGVyLmwgLyBTKQogICAgICAgICAgICByZXR1cm4gbCA8IG90aGVyLmw7CiAgICAgICAgcmV0dXJuIGwgLyBTICYgMSA/IHIgPCBvdGhlci5yIDogciA+IG90aGVyLnI7CiAgICB9Cn07Ci8vCmludCBuLCB0LCBhW214XTsKaW50IGNudFttYXhhXTsKbG9uZyBsb25nIGFuc1tteF07CnF1ZXJ5IFFbbXhdOwovLwp2b2lkIGNhbGMgKHZvaWQpCnsKICAgIGludCBsID0gMCwgciA9IDA7CiAgICBsb25nIGxvbmcgc3VtID0gMDsKICAgIC8vCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSB0OyArK2kpCiAgICB7CiAgICAgICAgd2hpbGUgKGwgPCBRW2ldLmwpCiAgICAgICAgewogICAgICAgICAgICAtLWNudFthW2xdXTsKICAgICAgICAgICAgc3VtIC09IChjbnRbYVtsXV0gPDwgMSB8IDFMTCkgKiBhW2xdOwogICAgICAgICAgICArK2w7CiAgICAgICAgfQogICAgICAgIHdoaWxlIChsID4gUVtpXS5sKQogICAgICAgIHsKICAgICAgICAgICAgLS1sOwogICAgICAgICAgICBzdW0gKz0gKGNudFthW2xdXSA8PCAxIHwgMUxMKSAqIGFbbF07CiAgICAgICAgICAgICsrY250W2FbbF1dOwogICAgICAgIH0KICAgICAgICB3aGlsZSAociA8IFFbaV0ucikKICAgICAgICB7CiAgICAgICAgICAgICsrcjsKICAgICAgICAgICAgc3VtICs9IChjbnRbYVtyXV0gPDwgMSB8IDFMTCkgKiBhW3JdOwogICAgICAgICAgICArK2NudFthW3JdXTsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKHIgPiBRW2ldLnIpCiAgICAgICAgewogICAgICAgICAgICAtLWNudFthW3JdXTsKICAgICAgICAgICAgc3VtIC09IChjbnRbYVtyXV0gPDwgMSB8IDFMTCkgKiBhW3JdOwogICAgICAgICAgICAtLXI7CiAgICAgICAgfQogICAgICAgIGFuc1tRW2ldLmlkXSA9IHN1bTsKICAgIH0KfQovLwp2b2lkIHByb2Nlc3MgKHZvaWQpCnsKICAgIGNpbiA+PiBuID4+IHQ7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpCiAgICAgICAgY2luID4+IGFbaV07CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSB0OyArK2kpCiAgICAgICAgY2luID4+IFFbaV0ubCA+PiBRW2ldLnIsCiAgICAgICAgUVtpXS5pZCA9IGk7CgogICAgc29ydChRICsgMSwgUSArIHQgKyAxKTsKICAgIGNhbGMoKTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSB0OyArK2kpCiAgICAgICAgY291dCA8PCBhbnNbaV0gPDwgJ1xuJzsKfQovLwpzaWduZWQgbWFpbiAodm9pZCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSksIGNpbi50aWUobnVsbHB0ciksIGNvdXQudGllKG51bGxwdHIpOwogICAgcHJvY2VzcygpOwp9