#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < n; i++)

int main() {
    int n, q;
    string s;
    cin >> n >> q >> s;
    s = ' ' +  s; // 文字列を1オリジンで考える
    n++;
    vector<int> dp(n); // sの先頭からi文字目(1<=i<=n)までに含まれるACの数を記録する配列
    rep(i, n) {
        if (i == 0 || i == 1) dp[i] == 0;
        else if (s[i-1] == 'A' && s[i] == 'C') dp[i] = dp[i-1] + 1;
        else dp[i] = dp[i-1];
        // cout << dp[i] << " ";
    }
    cout << endl;
    rep(i, q) {
        int l, r;
        cin >> l >> r;
        // int cnt = 0;
        // for (int i = l; i <= r - 1; i++) {
        //     if (s[i] == 'A' && s[i+1] == 'C') cnt++;
        // }
        // cout << cnt << endl;
        cout << dp[r] - dp[l] << endl;
    }
}
#include<bits/stdc++.h>
using namespace std;

const int N=100100;
int a[N],n,f[N][30],L,Q;
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;++i)cin>>a[i];
	cin>>L>>Q;
	for(int i=1;i<=n;++i)f[i][0]=upper_bound(a+1,a+n+1,a[i]+L)-a-1;
	for(int i=1;i<=20;++i)
		for(int j=1;j<=n;++j)f[j][i]=f[f[j][i-1]][i-1];
	for(;Q --> 0;){
		int l,r;cin>>l>>r;
		if(l>r)swap(l,r);
		int ans=1;
		for(int i=20;~i;--i)
			if(f[l][i]<r)l=f[l][i],ans+=1<<i;
		cout<<ans<<'\n';
	}
	return 0;
}
