// ROOT : DRAGON3012009 : WA in Real Life
#include <bits/stdc++.h>
#define FOR(i,l,r) for(int i = l ; i <= r ; i ++)
#define FORD(i,r,l) for(int i = r ; i >= l ; i --)
#define REP(i, a ) for(int i = 0 ; i < a ; i ++ )
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end());
#define ll long long
#define el "\n"
#define fi first
#define se second
#define _ROOT_ int main()
#define M 1000000007
#define MAXN 300003
#define INF (1ll<<60 )
#define NAME "post"
#define LOG 63
#define BLOCK 475
#define debug(a) cout << #a << " = " << a << endl;
using namespace std;
ll n, m, q ;
ll a[MAXN] ;
ll pref[MAXN ] ;
ll b[MAXN] ;
ll res[MAXN ] ;
ll cnt[MAXN ] ;
ll ans ;
vector<ll> cpr ;
unordered_map<ll,ll> mp ;
vector<ll> pos[MAXN ] ;
struct Query {
ll l, r, id ;
bool operator < (const Query & other ) const {
ll A = l / BLOCK, B = other.l / BLOCK ;
if(A == B ) return (A % 2 == 1 ? r > other.r : r < other.r ) ;
return A < B ;
}
} ;
vector<Query> que ;
ll rands(ll l, ll r ) {
return rand() % (r - l + 1 ) + l ;
}
ll random_50 () {
ll res = 0 ;
FOR(i, 0, LOG ) if(rands(0, 1 )) res += (1LL << i) ;
if(mp[res]) return random_50() ;
else {
mp[res] = true ;
return res ;
}
}
void add(ll a ) {
ans += cnt[a] ;
cnt[a] ++ ;
}
void del(ll a ) {
cnt[a] -- ;
ans -= cnt[a] ;
}
ll ID(ll value ) {
return lower_bound(cpr.begin(), cpr.end(), value ) - cpr.begin() + 1 ;
}
void init() {
cin >> n >> q ;
FOR(i, 1, n ) {
cin >> a[i] ;
cpr.push_back(a[i]);
}
FOR(i, 1, q ) {
ll l, r ;
cin >> l >> r ;
que.push_back({l, r, i }) ;
}
}
void solve() {
compare(cpr ) ;
FOR(i, 1, n ) a[i] = ID(a[i] ) ;
FOR(i, 1, n ) b[i] = random_50() ;
// FOR(i , 1 , n ) cout << b[i] << " " ; cout << " ran " << el ;
FOR(i, 1, n ) pos[a[i]].push_back(b[i]) ;
FOR(i, 1,(int) cpr.size() ) {
ll p = rands(1, pos[i].size() ) ;
p -- ;
ll cur = 0 ;
for(ll j = 0 ; j < pos[i].size() ; j ++ ) if(j != p ) cur ^= pos[i][j] ;
pos[i][p] = cur ;
}
FOR(i, 1,(int) cpr.size() ) random_shuffle(pos[i].begin(), pos[i].end() ) ;
FOR(i, 1, n ) {
ll t = a[i] ;
a[i] = pos[t].back() ;
pos[t].pop_back() ;
}
cpr.clear() ;
FOR(i, 1, n ) {
pref[i] = pref[i - 1 ] ^ a[i] ;
}
// FOR(i , 0 , n ) cout << pref[i] << " " ; cout << " pref " << el ;
// FOR(i , 1 , n ) cout << a[i] << " " ;
FOR(i, 0, n ) cpr.push_back(pref[i]) ;
compare(cpr ) ;
FOR(i, 0, n ) pref[i] = ID(pref[i]) ;
// cnt[ID(0) ] ++ ;
sort(que.begin(), que.end() ) ;
// FOR(i , 0 , n ) cout << pref[i] << " " ; cout << " pref " << el ;
ll l = 0, r = -1 ;
for(auto [l1, r1, id ] : que ) {
l1 -- ;
while(r < r1 ) add(pref[++ r ]) ;
while(l > l1 ) add(pref[-- l ]) ;
while(l < l1 ) del(pref[l ++ ]) ;
while(r > r1 ) del(pref[r -- ]) ;
res[id] = ans ;
}
FOR(i, 1, q ) cout << res[i] << el ;
}
_ROOT_ {
freopen(NAME".inp" , "r" , stdin);
freopen(NAME".out" , "w", stdout) ;
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
srand(time(nullptr)) ;
int t = 1; // cin >> t ;
while(t--) {
init();
solve();
}
return (0&0);
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkgOiBXQSBpbiBSZWFsIExpZmUKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksbCxyKSBmb3IoaW50IGkgPSBsIDsgaSA8PSByIDsgaSArKykKI2RlZmluZSBGT1JEKGkscixsKSBmb3IoaW50IGkgPSByIDsgaSA+PSBsIDsgaSAtLSkKI2RlZmluZSBSRVAoaSwgYSApIGZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkgKysgKQojZGVmaW5lIGNvbXBhcmUodikgc29ydCgodikuYmVnaW4oKSwgKHYpLmVuZCgpKTsgKHYpLmVyYXNlKHVuaXF1ZSgodikuYmVnaW4oKSwgKHYpLmVuZCgpKSwgKHYpLmVuZCgpKTsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBfUk9PVF8gaW50IG1haW4oKQojZGVmaW5lIE0gMTAwMDAwMDAwNwojZGVmaW5lIE1BWE4gMzAwMDAzCiNkZWZpbmUgSU5GICgxbGw8PDYwICkKI2RlZmluZSBOQU1FICJwb3N0IgojZGVmaW5lIExPRyA2MwojZGVmaW5lIEJMT0NLIDQ3NQojZGVmaW5lIGRlYnVnKGEpIGNvdXQgPDwgI2EgPDwgIiA9ICIgPDwgYSA8PCBlbmRsOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbGwgbiwgbSwgcSA7CmxsIGFbTUFYTl0gOwpsbCBwcmVmW01BWE4gXSA7CmxsIGJbTUFYTl0gOwpsbCByZXNbTUFYTiBdIDsKbGwgY250W01BWE4gXSA7CmxsIGFucyA7CnZlY3RvcjxsbD4gY3ByIDsKdW5vcmRlcmVkX21hcDxsbCxsbD4gbXAgOwp2ZWN0b3I8bGw+IHBvc1tNQVhOIF0gOwoKc3RydWN0IFF1ZXJ5IHsKICAgIGxsIGwsIHIsIGlkIDsKICAgIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgUXVlcnkgJiBvdGhlciApIGNvbnN0IHsKICAgICAgICBsbCBBID0gbCAvIEJMT0NLLCBCID0gb3RoZXIubCAvIEJMT0NLIDsKICAgICAgICBpZihBID09IEIgKSByZXR1cm4gKEEgJSAyID09IDEgPyByID4gb3RoZXIuciA6IHIgPCBvdGhlci5yICkgOwogICAgICAgIHJldHVybiBBIDwgQiA7CiAgICB9Cn0gOwoKdmVjdG9yPFF1ZXJ5PiBxdWUgOwpsbCByYW5kcyhsbCBsLCBsbCByICkgewogICAgcmV0dXJuIHJhbmQoKSAlIChyIC0gbCArIDEgKSArIGwgOwp9CmxsIHJhbmRvbV81MCAoKSB7CiAgICBsbCByZXMgPSAwIDsKICAgIEZPUihpLCAwLCBMT0cgKSBpZihyYW5kcygwLCAxICkpIHJlcyArPSAoMUxMIDw8IGkpIDsKICAgIGlmKG1wW3Jlc10pIHJldHVybiByYW5kb21fNTAoKSA7CiAgICBlbHNlIHsKICAgICAgICBtcFtyZXNdID0gdHJ1ZSA7CiAgICAgICAgcmV0dXJuIHJlcyA7CiAgICB9Cn0KCnZvaWQgYWRkKGxsIGEgKSB7CiAgICBhbnMgKz0gY250W2FdIDsKICAgIGNudFthXSArKyA7Cn0KCnZvaWQgZGVsKGxsIGEgKSB7CiAgICBjbnRbYV0gLS0gOwogICAgYW5zIC09IGNudFthXSA7Cn0KCmxsIElEKGxsIHZhbHVlICkgewogICAgcmV0dXJuIGxvd2VyX2JvdW5kKGNwci5iZWdpbigpLCBjcHIuZW5kKCksIHZhbHVlICApIC0gY3ByLmJlZ2luKCkgKyAxIDsKfQoKdm9pZCBpbml0KCkgewogICAgY2luID4+IG4gPj4gcSA7CiAgICBGT1IoaSwgMSwgbiApIHsKICAgICAgICBjaW4gPj4gYVtpXSA7CiAgICAgICAgY3ByLnB1c2hfYmFjayhhW2ldKTsKICAgIH0KICAgIEZPUihpLCAxLCBxICkgewogICAgICAgIGxsIGwsIHIgOwogICAgICAgIGNpbiA+PiBsID4+IHIgOwogICAgICAgIHF1ZS5wdXNoX2JhY2soe2wsIHIsIGkgfSkgOwogICAgfQp9Cgp2b2lkIHNvbHZlKCkgewoKICAgIGNvbXBhcmUoY3ByICkgOwogICAgRk9SKGksIDEsIG4gKSBhW2ldID0gSUQoYVtpXSApIDsKICAgIEZPUihpLCAxLCBuICkgYltpXSA9IHJhbmRvbV81MCgpIDsKLy8gICAgRk9SKGkgLCAxICwgbiApIGNvdXQgPDwgYltpXSA8PCAiICIgOyBjb3V0IDw8ICIgcmFuICIgPDwgZWwgOwogICAgRk9SKGksIDEsIG4gKSBwb3NbYVtpXV0ucHVzaF9iYWNrKGJbaV0pIDsKCiAgICBGT1IoaSwgMSwoaW50KSBjcHIuc2l6ZSgpICkgewogICAgICAgIGxsIHAgPSByYW5kcygxLCBwb3NbaV0uc2l6ZSgpICkgOwogICAgICAgIHAgLS0gOwogICAgICAgIGxsIGN1ciA9IDAgOwogICAgICAgIGZvcihsbCBqID0gMCA7IGogPCBwb3NbaV0uc2l6ZSgpIDsgaiArKyApIGlmKGogIT0gcCApIGN1ciBePSBwb3NbaV1bal0gOwogICAgICAgIHBvc1tpXVtwXSA9IGN1ciA7CiAgICB9CgogICAgRk9SKGksIDEsKGludCkgY3ByLnNpemUoKSApIHJhbmRvbV9zaHVmZmxlKHBvc1tpXS5iZWdpbigpLCBwb3NbaV0uZW5kKCkgKSA7CgogICAgRk9SKGksIDEsIG4gKSB7CiAgICAgICAgbGwgdCA9IGFbaV0gOwogICAgICAgIGFbaV0gPSBwb3NbdF0uYmFjaygpIDsKICAgICAgICBwb3NbdF0ucG9wX2JhY2soKSA7CiAgICB9CiAgICBjcHIuY2xlYXIoKSA7CgogICAgRk9SKGksIDEsIG4gKSB7CiAgICAgICAgcHJlZltpXSA9IHByZWZbaSAtIDEgXSBeIGFbaV0gOwogICAgfQoKLy8gICAgICAgIEZPUihpICwgMCAsIG4gKSBjb3V0IDw8IHByZWZbaV0gPDwgIiAiIDsgY291dCA8PCAiIHByZWYgIiA8PCBlbCA7CgoKLy8gICAgRk9SKGkgLCAxICwgbiApIGNvdXQgPDwgYVtpXSA8PCAiICIgOwogICAgRk9SKGksIDAsIG4gKSBjcHIucHVzaF9iYWNrKHByZWZbaV0pIDsKICAgIGNvbXBhcmUoY3ByICkgOwogICAgRk9SKGksIDAsIG4gKSBwcmVmW2ldID0gSUQocHJlZltpXSkgOwoKLy8gICAgY250W0lEKDApIF0gKysgOwogICAgc29ydChxdWUuYmVnaW4oKSwgcXVlLmVuZCgpICkgOwovLyAgICBGT1IoaSAsIDAgLCBuICkgY291dCA8PCBwcmVmW2ldIDw8ICIgIiA7IGNvdXQgPDwgIiBwcmVmICIgPDwgZWwgOwogICAgbGwgbCA9IDAsIHIgPSAtMSA7CgogICAgZm9yKGF1dG8gW2wxLCByMSwgaWQgXSA6IHF1ZSApIHsKICAgICAgICBsMSAtLSA7CiAgICAgICAgd2hpbGUociA8IHIxICkgYWRkKHByZWZbKysgciBdKSA7CiAgICAgICAgd2hpbGUobCA+IGwxICkgYWRkKHByZWZbLS0gbCBdKSA7CiAgICAgICAgd2hpbGUobCA8IGwxICkgZGVsKHByZWZbbCArKyBdKSA7CiAgICAgICAgd2hpbGUociA+IHIxICkgZGVsKHByZWZbciAtLSBdKSA7CiAgICAgICAgcmVzW2lkXSA9IGFucyA7CiAgICB9CgogICAgRk9SKGksIDEsIHEgKSBjb3V0IDw8IHJlc1tpXSA8PCBlbCA7Cn0KCl9ST09UXyB7CiAgICAgZnJlb3BlbihOQU1FIi5pbnAiICwgInIiICwgc3RkaW4pOwogICAgIGZyZW9wZW4oTkFNRSIub3V0IiAsICJ3Iiwgc3Rkb3V0KSA7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwogICAgc3JhbmQodGltZShudWxscHRyKSkgOwogICAgaW50IHQgPSAxOyAvLyBjaW4gPj4gdCA7CiAgICB3aGlsZSh0LS0pIHsKICAgICAgICBpbml0KCk7CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIHJldHVybiAoMCYwKTsKfQo=