#include <iostream>
#include <set>
#include <vector>
using namespace std;
const int N=3e5+10;
int d[N],seg[N<<2],n;
set<pair<int,int>> cur;
void Set(int i,int v,int l=1,int r=n,int nn=1)
{
if(i<l or r<i)
{
return;
}
if(l==r)
{
seg[nn]=v;
return;
}
int m=(l+r)>>1,lc=nn<<1,rc=lc|1;
Set(i,v,l,m,lc);
Set(i,v,m+1,r,rc);
seg[nn]=max(seg[lc],seg[rc]);
}
int Get(int ql=1,int qr=n,int l=1,int r=n,int v=1)
{
if(qr<l or r<ql)return -1e9;
if(ql<=l and r<=qr)
{
return seg[v];
}
int m=(l+r)>>1,lc=v<<1,rc=lc|1;
return max(Get(ql,qr,l,m,lc),Get(ql,qr,m+1,r,rc));
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int a;
cin>>n>>a;
for(int i=1;i<=n;i++)
{
cin>>d[i];
cur.insert({d[i],i});
Set(i,d[i]);
}
int q;
cin>>q;
while(q--)
{
char c;
cin>>c;
if(c=='E')
{
int i,v;cin>>i>>v;
v--;
std::vector<int> ind;
for(int i=0;i<v;i++)
{
int j=rbegin(cur)->second;
cur.erase(--end(cur));
ind.push_back(j);
d[j]++;
}
cur.erase({d[i],i});
d[i]=rbegin(cur)->first+1;
ind.push_back(i);
for(auto j:ind)
{
Set(j,d[j]);
cur.insert({d[j],j});
}
}
else
{
int b;
cin>>b;
if(b==a)
{
cout<<0<<endl;
}
else if(b<a)
{
int mx=Get(b,a-1);
int s=a,e=n+1;
while(s+1<e)
{
int m=(s+e)>>1;
if(Get(a+1,m)<mx)
{
s=m;
}
else
{
e=m;
}
}
cout<<s-b<<endl;
}
else
{
// cout<<"D"<<endl;
int mx=Get(a+1,b);
int s=0,e=a;
while(s+1<e)
{
int m=(s+e)>>1;
if(Get(m,a-1)<mx)
{
e=m;
}
else
{
s=m;
}
}
cout<<b-e<<endl;
}
}
}
}