#include<bits/stdc++.h>
#define int long long
using namespace std;
int p[2005][2005];
int a[2005];
int n,q,t;
pair<int,int> lca(int x,int lx,int y,int ly){
if(lx<ly){
swap(x,y);
swap(lx,ly);
}
for(int i=19;i>=0;i--){
if(lx-(1<<i)>=ly)lx-=(1<<i);
}
//cerr<<"do:\n";
//cerr<<x<<" "<<lx<<" "<<y<<" "<<ly<<"\n";
if(p[lx][x]==p[ly][y])return {x,lx};
for(int i=19;i>=0;i--){
if(lx-(1<<i)>0){
if(p[lx-(1<<i)][x]!=p[ly-(1<<i)][y]){
lx=lx-(1<<i),ly=ly-(1<<i);
}
}
}
//cerr<<"fin:";
//cerr<<x<<" "<<lx<<"\n";
return {x,lx-1};
}
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>n>>q>>t;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n+1;i++)p[n+1][i]=i;
cout<<"fckkk\n";
return 0;
for(int i=n;i>=1;i--){
int x=a[i]-(i*(i-1)/2);
int pos=upper_bound(p[i+1]+1,p[i+1]+1+n,x)-p[i+1];
for(int j=1;j<=n+1;j++)p[i][j]=p[i+1][j];
for(int j=pos;j<=n+1;j++)p[i][j]--;
}
int prv=0;
int md=(n+1)*(n+2)/2;
vector<int>st;
for(int i=1;i<=n+1;i++){
st.push_back(i*(i-1)/2+1);
}
/*cerr<<"\n\n";
for(auto x:st)cerr<<x<<" ";
cerr<<"\n\n";
for(int i=1;i<=n+1;i++){
for(int j=1;j<=n+1;j++){
cerr<<p[i][j]<<" ";
}
cerr<<"\n";
}
cerr<<"\n";*/
for(int i=0;i<q;i++){
//cerr<<"i:"<<i<<"\n";
int x,y;cin>>x>>y;
x=(x-1+t*prv)%(md)+1;
y=(y-1+t*prv)%(md)+1;
int lx=upper_bound(st.begin(),st.end(),x)-st.begin();
int ly=upper_bound(st.begin(),st.end(),y)-st.begin();
//cerr<<"ly:"<<ly<<"\n";
x-=(lx*(lx-1)/2);
y-=(ly*(ly-1)/2);
x=lower_bound(p[lx]+1,p[lx]+n+2,x)-p[lx];
y=lower_bound(p[ly]+1,p[ly]+n+2,y)-p[ly];
auto ans=lca(x,lx,y,ly);
//cerr<<x<<" "<<lx<<" "<<y<<" "<<ly<<"\n";
//cerr<<"ans:"<<ans.first<<" "<<ans.second<<"\n";
int rans=p[ans.second][ans.first]+ans.second*(ans.second-1)/2;
cout<<rans<<"\n";
prv=rans;
}
}