#include <bits/stdc++.h>
#define debug cout << "ok\n";
#define SQR(x) (1LL * ((x) * (x)))
#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define pii pair<int,int>
#define pli pair<ll,int>
#define vi vector<int>
#define FAST ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef unsigned int ui;
using namespace std;
const int M = 1e9 + 7;
const int INF = 1e9 + 7;
const ll INFLL = (ll)2e18 + 7LL;
const ld PI = acos(-1);
const int dx[] = {1, -1, 0, 0, -1, 1, 1, -1};
const int dy[] = {0, 0, 1, -1, -1, -1, 1, 1};
template<class _, class __>
bool minimize(_ &x, const __ y){
if(x > y){
x = y;
return true;
} else return false;
}
template<class _, class __>
bool maximize(_ &x, const __ y){
if(x < y){
x = y;
return true;
} else return false;
}
template<class _,class __>
void Add(_ &x, const __ y) {
x += y;
if (x >= M) {
x -= M;
}
return;
}
template<class _,class __>
void Diff(_ &x, const __ y) {
x -= y;
if (x < 0) {
x += M;
}
return;
}
//--------------------------------------------------------------
const int MaxN = 670;
int n,Q,x,y,a[MaxN],cnt[MaxN][3];
vi f[MaxN][MaxN];
struct Adj {
int a;
int b;
int c;
};
void sol() {
cin >> n >> Q >> x >> y;
for (int i=1;i<=n;i++) cin >> a[i];
for (int i=1;i<=n;i++) {
for (int j=0;j<3;j++) cnt[i][j] = cnt[i-1][j];
cnt[i][a[i]]++;
}
for (int i=0;i<=n;i++) {
for (int j=0;i+j<=n;j++) {
f[i][j].resize(n - i - j + 1);
for (int & x : f[i][j]) x = 0;
}
}
queue<Adj> q;
for (int i=1;i<=n;i++) {
f[i][0][0] = 1;
q.push((Adj){i,0,0});
}
while (!q.empty()) {
int a = q.front().a;
int b = q.front().b;
int c = q.front().c;
q.pop();
for (int i=0;i<=a && i<=x;i++) {
for (int j=0;j <= b && i+j<=x;j++) {
for (int ii=0;ii+i<=a && ii<=y;ii++) {
for (int jj=0;jj+j<=b && ii+jj<=y;jj++) {
int k = x - i - j;
int kk = y - ii - jj;
if (k + kk > c) continue;
if (!f[a-i-ii+k+jj][b-j-jj+i+kk][c-k-kk+j+ii]) {
f[a-i-ii+k+jj][b-j-jj+i+kk][c-k-kk+j+ii] = f[a][b][c] + 1;
q.push((Adj){a-i-ii+k+jj,b-j-jj+i+kk,c-k-kk+j+ii});
}
}
}
}
}
}
while (Q--) {
int l,r;
cin >> l >> r;
cout << f[cnt[r][0] - cnt[l-1][0]][cnt[r][1] - cnt[l-1][1]][cnt[r][2] - cnt[l-1][2]] - 1 << '\n';
}
}
signed main() {
freopen("light.inp","r",stdin);
freopen("light.out","w",stdout);
FAST
int t=1;
// cin >> t;
while (t--) sol();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGRlYnVnICAgICBjb3V0IDw8ICJva1xuIjsKI2RlZmluZSBTUVIoeCkgICAgKDFMTCAqICgoeCkgKiAoeCkpKQojZGVmaW5lIE1BU0soaSkgICAoMUxMIDw8IChpKSkKI2RlZmluZSBCSVQoeCwgaSkgKCgoeCkgPj4gKGkpKSAmIDEpCiNkZWZpbmUgZmkgICAgICAgIGZpcnN0CiNkZWZpbmUgc2UgICAgICAgIHNlY29uZAojZGVmaW5lIHBiICAgICAgICBwdXNoX2JhY2sKCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBwbGkgcGFpcjxsbCxpbnQ+CiNkZWZpbmUgdmkgdmVjdG9yPGludD4KCiNkZWZpbmUgRkFTVCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1aTsKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTSA9IDFlOSArIDc7CmNvbnN0IGludCBJTkYgPSAxZTkgKyA3Owpjb25zdCBsbCBJTkZMTCA9IChsbCkyZTE4ICsgN0xMOwpjb25zdCBsZCBQSSA9IGFjb3MoLTEpOwoKY29uc3QgaW50IGR4W10gPSB7MSwgLTEsIDAsIDAsIC0xLCAxLCAxLCAtMX07CmNvbnN0IGludCBkeVtdID0gezAsIDAsIDEsIC0xLCAtMSwgLTEsIDEsIDF9OwoKdGVtcGxhdGU8Y2xhc3MgXywgY2xhc3MgX18+CiAgICBib29sIG1pbmltaXplKF8gJngsIGNvbnN0IF9fIHkpewogICAgICAgIGlmKHggPiB5KXsKICAgICAgICAgICAgeCA9IHk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgICB9CnRlbXBsYXRlPGNsYXNzIF8sIGNsYXNzIF9fPgogICAgYm9vbCBtYXhpbWl6ZShfICZ4LCBjb25zdCBfXyB5KXsKICAgICAgICBpZih4IDwgeSl7CiAgICAgICAgICAgIHggPSB5OwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQoKdGVtcGxhdGU8Y2xhc3MgXyxjbGFzcyBfXz4KICAgIHZvaWQgQWRkKF8gJngsIGNvbnN0IF9fIHkpIHsKICAgICAgICB4ICs9IHk7CiAgICAgICAgaWYgKHggPj0gTSkgewogICAgICAgICAgICB4IC09IE07CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCnRlbXBsYXRlPGNsYXNzIF8sY2xhc3MgX18+CiAgICB2b2lkIERpZmYoXyAmeCwgY29uc3QgX18geSkgewogICAgICAgIHggLT0geTsKICAgICAgICBpZiAoeCA8IDApIHsKICAgICAgICAgICAgeCArPSBNOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpjb25zdCBpbnQgTWF4TiA9IDY3MDsKCmludCBuLFEseCx5LGFbTWF4Tl0sY250W01heE5dWzNdOwp2aSBmW01heE5dW01heE5dOwoKc3RydWN0IEFkaiB7CiAgICBpbnQgYTsKICAgIGludCBiOwogICAgaW50IGM7Cn07Cgp2b2lkIHNvbCgpIHsKICAgIGNpbiA+PiBuID4+IFEgPj4geCA+PiB5OwogICAgZm9yIChpbnQgaT0xO2k8PW47aSsrKSBjaW4gPj4gYVtpXTsKICAgIGZvciAoaW50IGk9MTtpPD1uO2krKykgewogICAgICAgIGZvciAoaW50IGo9MDtqPDM7aisrKSBjbnRbaV1bal0gPSBjbnRbaS0xXVtqXTsKICAgICAgICBjbnRbaV1bYVtpXV0rKzsKICAgIH0KICAgIGZvciAoaW50IGk9MDtpPD1uO2krKykgewogICAgICAgIGZvciAoaW50IGo9MDtpK2o8PW47aisrKSB7CiAgICAgICAgICAgIGZbaV1bal0ucmVzaXplKG4gLSBpIC0gaiArIDEpOwogICAgICAgICAgICBmb3IgKGludCAmIHggOiBmW2ldW2pdKSB4ID0gMDsKICAgICAgICB9CiAgICB9CiAgICBxdWV1ZTxBZGo+IHE7CiAgICBmb3IgKGludCBpPTE7aTw9bjtpKyspIHsKICAgICAgICBmW2ldWzBdWzBdID0gMTsKICAgICAgICBxLnB1c2goKEFkail7aSwwLDB9KTsKICAgIH0KICAgIHdoaWxlICghcS5lbXB0eSgpKSB7CiAgICAgICAgaW50IGEgPSBxLmZyb250KCkuYTsKICAgICAgICBpbnQgYiA9IHEuZnJvbnQoKS5iOwogICAgICAgIGludCBjID0gcS5mcm9udCgpLmM7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBmb3IgKGludCBpPTA7aTw9YSAmJiBpPD14O2krKykgewogICAgICAgICAgICBmb3IgKGludCBqPTA7aiA8PSBiICYmIGkrajw9eDtqKyspIHsKICAgICAgICAgICAgICAgIGZvciAoaW50IGlpPTA7aWkraTw9YSAmJiBpaTw9eTtpaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgamo9MDtqaitqPD1iICYmIGlpK2pqPD15O2pqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGsgPSB4IC0gaSAtIGo7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBrayA9IHkgLSBpaSAtIGpqOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoayArIGtrID4gYykgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZlthLWktaWkraytqal1bYi1qLWpqK2kra2tdW2Mtay1raytqK2lpXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZlthLWktaWkraytqal1bYi1qLWpqK2kra2tdW2Mtay1raytqK2lpXSA9IGZbYV1bYl1bY10gKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcS5wdXNoKChBZGope2EtaS1paStrK2pqLGItai1qaitpK2trLGMtay1raytqK2lpfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICB3aGlsZSAoUS0tKSB7CiAgICAgICAgaW50IGwscjsKICAgICAgICBjaW4gPj4gbCA+PiByOwogICAgICAgIGNvdXQgPDwgZltjbnRbcl1bMF0gLSBjbnRbbC0xXVswXV1bY250W3JdWzFdIC0gY250W2wtMV1bMV1dW2NudFtyXVsyXSAtIGNudFtsLTFdWzJdXSAtIDEgPDwgJ1xuJzsKICAgIH0KfQoKc2lnbmVkIG1haW4oKSB7CglmcmVvcGVuKCJsaWdodC5pbnAiLCJyIixzdGRpbik7CglmcmVvcGVuKCJsaWdodC5vdXQiLCJ3IixzdGRvdXQpOwoJRkFTVAoJaW50IHQ9MTsKLy8JY2luID4+IHQ7Cgl3aGlsZSAodC0tKSBzb2woKTsKfQo=