rt,
#include <bits/stdc++.h>
#define int long long
#define NR 317
using namespace std;
int n, c, m, a[100010], l, r, MAXN, siz = 0;
int ans[NR][NR], cnt[100010][NR], b[100010];
int BLS(int i){
if (i % MAXN == 0) return i / MAXN;
return i / MAXN + 1;
}
signed main(){
ios::sync_with_stdio(false);
cin >> n >> c >> m;
MAXN = (int)(pow(n, 0.5));
siz = !(n%MAXN) ? n/MAXN : n/MAXN+1;
for (int i = 1; i <= n; i++){
cin >> a[i];
}
// 求cnt↓↓↓
for (int i = 1; i <= siz; i++){
memset(b, 0, sizeof b);
for (int j = (i - 1) * MAXN + 1; j <= min(i * MAXN, n); j++) b[a[j]]++;
for (int j = 1; j <= c; j++) cnt[j][i] = cnt[j][i - 1] + b[j];
}
// 求ans↓↓↓
for (int i = 1; i <= siz; i++){
memset(b, 0, sizeof b);
for (int j = (i - 1) * MAXN + 1; j <= n; j++){
ans[i][BLS(j)] = ans[i][BLS(j - 1)];
b[a[j]]++;
if (b[a[j]] % 2 == 0){
ans[i][BLS(j)]++;
}
else if (b[a[j]] > 1){
ans[i][BLS(j)]--;
}
}
}
memset(b, 0, sizeof b);
int res = 0;
while (m--){
int ll, rr;
cin >> ll >> rr;
l = (ll + res) % n + 1, r = (rr + res) % n + 1;
if (l > r) swap(l, r);
res = 0;
if (BLS(l) == BLS(r)){ // 暴力
// cout << "***" << endl;
// continue;
for (int i = l; i <= r; i++){
b[a[i]]++;
if (b[a[i]] % 2 == 0) res++;
else if (b[a[i]] > 1) res--;
}
for (int i = l; i <= r; i++){
b[a[i]] = 0;
}
}
else{ //
int s = BLS(l) + 1, f = BLS(r) - 1;
res = ans[s][f];
for (int i = l; i <= min(BLS(l) * MAXN, n); i++){
b[a[i]]++;
int t = b[a[i]] + cnt[a[i]][f] - cnt[a[i]][s - 1];
if (t % 2 == 0) res++;
else if (t > 1) res--;
}
for (int i = f * MAXN + 1; i <= r; i++){
b[a[i]]++;
int t = b[a[i]] + cnt[a[i]][f] - cnt[a[i]][s - 1];
if (t % 2 == 0) res++;
else if (t > 1) res--;
}
for (int i = l; i <= min(BLS(l) * MAXN, n); i++) b[a[i]] = 0;
for (int i = f * MAXN + 1; i <= r; i++) b[a[i]] = 0;
}
cout << res << endl;
}
return 0;
}