#include <bits/stdc++.h>

#define fi first
#define se second
#define ll long long
#define dl double

using namespace std;

const int N = 2e5 + 7;
const long long mod = 1e9 + 7;

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

int n,q,s,d;
int a[N];
int dp[N];
int ch[N];

void solve()
{
        cin >> n >> q >> s >> d;
        for(int i = 1; i <= n; i++)cin >> a[i];
        multiset<pair<int, pair<int, int>>> t;
        auto get = [&](int i, int j) -> int{
                int x = abs(a[i] - a[j]);
                if(x <= d)return d - x;
                else return x - d;
        };
        for(int i = 1; i <= n; i++){
                dp[i] = 1e9;
        }
        dp[s] = 0;
        int cr = s;
        for(int it = 1; it <= 5; it++){
                if(cr - it >= 1)t.insert({ get(cr - it, s), {cr - it, s} });
                if(cr + it <= n)t.insert({ get(cr + it, s), {cr + it, s} });
        }
        if(cr < n){
                int l = cr + 1, r = n;
                while(l < r){
                        int m = (l + r) / 2;
                        if(a[m] >= a[cr] + d)r = m;
                        else l = m + 1;
                }
               for(int it = 1; it <= 7; it++){
                        if(l - it > cr)t.insert({ get(l - it, cr), {l - it, cr} });
                        if(l + it <= n)t.insert({ get(l + it, cr), {l + it, cr} });
                }
                t.insert({ get(l, cr), {l, cr} });
        }
        if(cr > 1){
                int l = 1, r = cr - 1;
                while(l < r){
                        int m = (l + r) / 2 + 1;
                        if(a[m] <= a[cr] - d)l = m;
                        else r = m - 1;
                }
                for(int it = 1; it <= 7; it++){
                        if(l - it >= 1)t.insert({ get(l - it, cr), {l - it, cr} });
                        if(l + it < cr)t.insert({ get(l + it, cr), {l + it, cr} });
                }
                t.insert({ get(l, cr), {l, cr} });
        }
        int k = 0;
        while(!t.empty()){
                auto x = *t.begin();
                t.erase(t.begin());
                if(x.se.fi == x.se.se)continue;
                int pr = x.se.se;
                int cr = x.se.fi;
                k = max(k, x.fi);
                if(k >= dp[cr])continue;
                dp[cr] = min(dp[cr], k);
                for(int it = 1; it <= 5; it++){
                        if(cr - it >= 1)t.insert({ get(cr - it, pr), {cr - it, pr} });
                        if(cr + it <= n)t.insert({ get(cr + it, pr), {cr + it, pr} });
                }
                if(cr < n){
                        int l = cr + 1, r = n;
                        while(l < r){
                                int m = (l + r) / 2;
                                if(a[m] >= a[cr] + d)r = m;
                                else l = m + 1;
                        }
                        for(int it = 1; it <= 7; it++){
                                if(l - it > cr)t.insert({ get(l - it, cr), {l - it, cr} });
                                if(l + it <= n)t.insert({ get(l + it, cr), {l + it, cr} });
                        }
                        t.insert({ get(l, cr), {l, cr} });
                }
                if(cr > 1){
                        int l = 1, r = cr - 1;
                        while(l < r){
                                int m = (l + r) / 2 + 1;
                                if(a[m] <= a[cr] - d)l = m;
                                else r = m - 1;
                        }
                        for(int it = 1; it <= 7; it++){
                                if(l - it >= 1)t.insert({ get(l - it, cr), {l - it, cr} });
                                if(l + it < cr)t.insert({ get(l + it, cr), {l + it, cr} });
                        }
                        t.insert({ get(l, cr), {l, cr} });
                }
        }
        while(q--){
                int id,k;
                cin >> id >> k;
                if(dp[id] <= k)cout << "Yes\n";
                else cout << "No\n";
        }
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    //freopen( "input.txt" , "r" , stdin );
    //freopen( "output.txt" , "w" , stdout );

    int t = 1;
    //cin >> t;
    while(t--){
        solve();
    }
}
