rt。
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
const int N=1e5+5,M=350+5;
int n,c,m;
int res[M][M],num[M][N],l[M],r[M],a[N],ans;
int ku[N];
int cnt[N],q,ttq[N],to[N];
int main(){
freopen("P4135_2.in","r",stdin);
freopen("P4135_2.ans","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin >> n >> c >> m;q=sqrt(n);
for (int i=1;i<=n;++i) cin >> a[i];
int i;
for (i=1;(i-1)*q+1<=n;++i) l[i]=(i-1)*q+1,r[i]=i*q,ku[r[i]]=i;
--i;
r[i]=n;ku[r[i]]=i;
for (int j=1;j<=i;++j)
for (int k=l[j];k<=r[j];++k) to[k]=j;
// cout<<"\n";
// for (int j=1;j<=i;++j) cout<<l[j]<<" "<<r[j]<<"\n";
// cout<<"\n";
for (int j=1;j<=i;++j){
for (int k=1;k<=c;++k) cnt[k]=0;
int sm=0;
for (int k=l[j];k<=n;++k){
++cnt[a[k]];
if (cnt[a[k]]%2==0) ++sm;
if (cnt[a[k]]%2==1 && cnt[a[k]]!=1) --sm;
if (ku[k]) res[j][ku[k]]=sm;
}
for (int k=1;k<=c;++k) num[j][k]=num[j-1][k];
for (int k=l[j];k<=r[j];++k) ++num[j][a[k]];
}
int lt,rt,lid,rid;
for (int j=1;j<=m;++j){
cin >> lt >> rt;
lt=(lt+ans)%n+1,rt=(rt+ans)%n+1;
if (lt>rt) swap(lt,rt);
lid=to[lt]+1,rid=to[rt]-1;
// cout<<lt<<" "<<rt<<" "<<lid<<" "<<rid<<"\n";
if (rid-lid<=3){
ans=0;
for (int k=lt;k<=rt;++k) ++ttq[a[k]];
for (int k=lt;k<=rt;++k){
if (ttq[a[k]]){
if (ttq[a[k]]%2==0) ++ans;
ttq[a[k]]=0;
}
}
cout<<ans<<"\n";
continue;
}
// cout<<lid<<" "<<rid<<"\n";
ans=res[lid][rid];
for (int k=lt;k<=r[lid-1];++k){
if (ttq[a[k]]==0){
ttq[a[k]]+=num[rid][a[k]]-num[lid-1][a[k]];
if (ttq[a[k]]!=0 && ttq[a[k]]%2==0) --ans;//单独不算他
}
++ttq[a[k]];
}
for (int k=l[rid+1];k<=rt;++k){
if (ttq[a[k]]==0){
ttq[a[k]]+=num[rid][a[k]]-num[lid-1][a[k]];
if (ttq[a[k]]!=0 && ttq[a[k]]%2==0) --ans;
}
++ttq[a[k]];
}
for (int k=lt;k<=r[lid-1];++k){
if (ttq[a[k]]){
if (ttq[a[k]]%2==0) ++ans;
}
ttq[a[k]]=0;
}
for (int k=l[rid+1];k<=rt;++k){
if (ttq[a[k]]){
if (ttq[a[k]]%2==0) ++ans;
}
ttq[a[k]]=0;
}
cout<<ans<<"\n";
}
cout.flush();
return 0;
}