#include<bits/stdc++.h>
using namespace std;
// define
#define execute cerr << " Time: " << fixed << setprecision(6) << (1.0 * clock() / CLOCKS_PER_SEC) << "s\n";
#define ll long long
#define ii pair <int , int>
#define iii pair <int , ii>
#define se second
#define fi first
#define all(v) (v).begin() , (v).end()
#define Unique(v) sort(all(v)) , v.resize(unique(all(v)) - v.begin())
#define bit(x,i) (((x) >> (i)) & 1LL)
#define flip(x,i) ((x) ^ (1LL << (i)))
#define ms(d,x) memset(d , x , sizeof(d))
#define exist __exist
#define ends __ends
#define visit visited
#define left __left
#define right __right
#define prev __prev
#define next __next
#define sitingfake 1
#define orz 1
//constant
const long long mod = 1e7 + 1203;
const long long linf = 4557430888798830399LL;
const long long nlinf = -4485090715960753727LL;
const int inf = 1061109567;
const int ninf = -1044266559;
const int dx[] = {0 , -1 , 0 , 1};
const int dy[] = {-1 , 0 , 1 , 0};
template<typename T> bool maximize(T &a, const T &b)
{
if(a < b) {a = b; return 1;}
return 0;
}
template<typename T> bool minimize(T &a, const T &b)
{
if(a > b) {a = b; return 1;}
return 0;
}
void Plus(ll & a ,ll b)
{
b %= mod;
a += b;
if(a < 0) a += mod;
a %= mod;
return;
}
void Mul(ll & a, ll b)
{
(a *= (b % mod)) %= mod;
return;
}
//code
const int maxn = 4e6 + 7;
int n , m , p , q;
ll fact[maxn] , inv[maxn];
ll fastpow(ll n , ll p)
{
if(p == 1) return n;
if(p == 0) return 1;
ll tmp = fastpow(n , p >> 1LL);
Mul(tmp , tmp);
if(p & 1) Mul(tmp , n);
return tmp;
}
void init()
{
const int Lim = 4e6;// set the limit here
fact[0] = 1;
for(int i = 1; i <= Lim; i++)
{
fact[i] = (fact[i - 1] *1ll * i) % mod;
}
inv[Lim] = fastpow(fact[Lim] , mod - 2);
for(int i = Lim - 1; i >= 0; i--)
{
inv[i] = ((i + 1) *1ll * inv[i + 1]) % mod;
}
}
ll C(int k , int n)
{
if(k < 0) return 0;
if(k > n) return 0;
if(n < 0) return 0;
return (((fact[n] * inv[k]) % mod) * inv[n - k]) % mod;
}
/**
C[k][n] = C[k-1][n-1] + C[k][n-1]
C[0][n] = 1
C[n][n] = 1
pascal triangle
**/
ll dp[4004];
ii banned[maxn];
void solve(void)
{
cin >> n >> m >> p >> q;
for(int i = 1; i <= p; i++)
{
cin >> banned[i].fi >> banned[i].se;
}
sort(banned + 1 , banned + p + 1);
init();
for(int i = 1; i <= p; i++)
{
dp[i] = C(banned[i].fi - 1 , banned[i].fi + banned[i].se - 2);
for(int j = i - 1; j >= 1; j--)
{
if(banned[j].se <= banned[i].se)
{
Plus(dp[i] , -dp[j] * C(banned[i].fi - banned[j].fi , banned[i].fi + banned[i].se - banned[j].fi - banned[j].se));
}
}
}
while(q--)
{
int u , v; cin >> u >> v;
ll cur = C(u - 1 , u + v - 2);
for(int i = 1; i <= p ; i++)
{
if(banned[i].fi <= u && banned[i].se <= v)
{
Plus(cur , -dp[i] * C(u - banned[i].fi , u + v - banned[i].fi - banned[i].se));
}
}
cout << cur << " ";
}
}
/**
**/
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
#define task "walk"
if(fopen(task".inp","r"))
{
freopen(task".inp","r",stdin);
freopen(task".out","w",stdout);
}
int tc = 1;
// cin >> tc;
while(tc--) solve();
// execute;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIGRlZmluZQoKI2RlZmluZSBleGVjdXRlIGNlcnIgPDwgIiBUaW1lOiAiIDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbig2KSA8PCAoMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDKSA8PCAic1xuIjsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBpaSBwYWlyIDxpbnQgLCBpbnQ+CiNkZWZpbmUgaWlpIHBhaXIgPGludCAsIGlpPgojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgYWxsKHYpICh2KS5iZWdpbigpICwgKHYpLmVuZCgpCiNkZWZpbmUgVW5pcXVlKHYpIHNvcnQoYWxsKHYpKSAsIHYucmVzaXplKHVuaXF1ZShhbGwodikpIC0gdi5iZWdpbigpKQojZGVmaW5lIGJpdCh4LGkpICgoKHgpID4+IChpKSkgJiAxTEwpCiNkZWZpbmUgZmxpcCh4LGkpICgoeCkgXiAoMUxMIDw8IChpKSkpCiNkZWZpbmUgbXMoZCx4KSBtZW1zZXQoZCAsIHggLCBzaXplb2YoZCkpCiNkZWZpbmUgZXhpc3QgX19leGlzdAojZGVmaW5lIGVuZHMgX19lbmRzCiNkZWZpbmUgdmlzaXQgdmlzaXRlZAojZGVmaW5lIGxlZnQgX19sZWZ0CiNkZWZpbmUgcmlnaHQgX19yaWdodAojZGVmaW5lIHByZXYgX19wcmV2CiNkZWZpbmUgbmV4dCBfX25leHQKI2RlZmluZSBzaXRpbmdmYWtlIDEKI2RlZmluZSBvcnogMQovL2NvbnN0YW50Cgpjb25zdCBsb25nIGxvbmcgbW9kID0gMWU3ICsgMTIwMzsKY29uc3QgbG9uZyBsb25nIGxpbmYgPSA0NTU3NDMwODg4Nzk4ODMwMzk5TEw7CmNvbnN0IGxvbmcgbG9uZyBubGluZiA9IC00NDg1MDkwNzE1OTYwNzUzNzI3TEw7CmNvbnN0IGludCBpbmYgPSAxMDYxMTA5NTY3Owpjb25zdCBpbnQgbmluZiA9IC0xMDQ0MjY2NTU5Owpjb25zdCBpbnQgZHhbXSA9IHswICwgLTEgLCAwICwgMX07CmNvbnN0IGludCBkeVtdID0gey0xICwgMCAsIDEgLCAwfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgbWF4aW1pemUoVCAmYSwgY29uc3QgVCAmYikKewogICAgaWYoYSA8IGIpIHthID0gYjsgcmV0dXJuIDE7fQogICAgcmV0dXJuIDA7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgbWluaW1pemUoVCAmYSwgY29uc3QgVCAmYikKewogICAgaWYoYSA+IGIpIHthID0gYjsgcmV0dXJuIDE7fQogICAgcmV0dXJuIDA7Cn0KCnZvaWQgUGx1cyhsbCAmIGEgLGxsIGIpCnsKICAgIGIgJT0gbW9kOwogICAgYSArPSBiOwogICAgaWYoYSA8IDApIGEgKz0gbW9kOwogICAgYSAlPSBtb2Q7CiAgICByZXR1cm47Cn0KCnZvaWQgTXVsKGxsICYgYSwgbGwgYikKewogICAgKGEgKj0gKGIgJSBtb2QpKSAlPSBtb2Q7CiAgICByZXR1cm47Cn0KCi8vY29kZQpjb25zdCBpbnQgbWF4biA9IDRlNiArIDc7CgppbnQgbiAsIG0gLCBwICwgcTsKCmxsIGZhY3RbbWF4bl0gLCBpbnZbbWF4bl07CgpsbCBmYXN0cG93KGxsIG4gLCBsbCBwKQp7CiAgICBpZihwID09IDEpIHJldHVybiBuOwogICAgaWYocCA9PSAwKSByZXR1cm4gMTsKCiAgICBsbCB0bXAgPSBmYXN0cG93KG4gLCBwID4+IDFMTCk7CgogICAgTXVsKHRtcCAsIHRtcCk7CgogICAgaWYocCAmIDEpIE11bCh0bXAgLCBuKTsKCiAgICByZXR1cm4gdG1wOwp9Cgp2b2lkIGluaXQoKQp7CiAgICBjb25zdCBpbnQgTGltID0gNGU2Oy8vIHNldCB0aGUgbGltaXQgaGVyZQogICAgZmFjdFswXSA9IDE7CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBMaW07IGkrKykKICAgIHsKICAgICAgICBmYWN0W2ldID0gKGZhY3RbaSAtIDFdICoxbGwgKiBpKSAlIG1vZDsKICAgIH0KCiAgICBpbnZbTGltXSA9IGZhc3Rwb3coZmFjdFtMaW1dICwgbW9kIC0gMik7CgogICAgZm9yKGludCBpID0gTGltIC0gMTsgaSA+PSAwOyBpLS0pCiAgICB7CiAgICAgICAgaW52W2ldID0gKChpICsgMSkgKjFsbCAqIGludltpICsgMV0pICUgbW9kOwogICAgfQp9CgpsbCBDKGludCBrICwgaW50IG4pCnsKICAgIGlmKGsgPCAwKSByZXR1cm4gMDsKICAgIGlmKGsgPiBuKSByZXR1cm4gMDsKICAgIGlmKG4gPCAwKSByZXR1cm4gMDsKICAgIHJldHVybiAoKChmYWN0W25dICogaW52W2tdKSAlIG1vZCkgKiBpbnZbbiAtIGtdKSAlIG1vZDsKCn0KCi8qKgpDW2tdW25dID0gQ1trLTFdW24tMV0gKyBDW2tdW24tMV0KQ1swXVtuXSA9IDEKQ1tuXVtuXSA9IDEKcGFzY2FsIHRyaWFuZ2xlCioqLwoKbGwgZHBbNDAwNF07CgppaSBiYW5uZWRbbWF4bl07Cgp2b2lkIHNvbHZlKHZvaWQpCnsKICAgIGNpbiA+PiBuID4+IG0gPj4gcCA+PiBxOwoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gcDsgaSsrKQogICAgewogICAgICAgIGNpbiA+PiBiYW5uZWRbaV0uZmkgPj4gYmFubmVkW2ldLnNlOwogICAgfQogICAgc29ydChiYW5uZWQgKyAxICwgYmFubmVkICsgcCArIDEpOwogICAgaW5pdCgpOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBwOyBpKyspCiAgICB7CiAgICAgICAgZHBbaV0gPSBDKGJhbm5lZFtpXS5maSAtIDEgLCBiYW5uZWRbaV0uZmkgKyBiYW5uZWRbaV0uc2UgLSAyKTsKICAgICAgICBmb3IoaW50IGogPSBpIC0gMTsgaiA+PSAxOyBqLS0pCiAgICAgICAgewogICAgICAgICAgICBpZihiYW5uZWRbal0uc2UgPD0gYmFubmVkW2ldLnNlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBQbHVzKGRwW2ldICwgLWRwW2pdICogQyhiYW5uZWRbaV0uZmkgLSBiYW5uZWRbal0uZmkgLCBiYW5uZWRbaV0uZmkgKyBiYW5uZWRbaV0uc2UgLSBiYW5uZWRbal0uZmkgLSBiYW5uZWRbal0uc2UpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHdoaWxlKHEtLSkKICAgIHsKICAgICAgICBpbnQgdSAsIHY7IGNpbiA+PiB1ID4+IHY7CgogICAgICAgIGxsIGN1ciA9IEModSAtIDEgLCB1ICsgdiAtIDIpOwoKICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IHAgOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBpZihiYW5uZWRbaV0uZmkgPD0gdSAmJiBiYW5uZWRbaV0uc2UgPD0gdikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUGx1cyhjdXIgLCAtZHBbaV0gKiBDKHUgLSBiYW5uZWRbaV0uZmkgLCB1ICsgdiAtIGJhbm5lZFtpXS5maSAtIGJhbm5lZFtpXS5zZSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgY3VyIDw8ICIgIjsKICAgIH0KfQovKioKKiovCnNpZ25lZCBtYWluKCkKewogICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICBjaW4udGllKDApOwogICBjb3V0LnRpZSgwKTsKCiAgICNkZWZpbmUgdGFzayAid2FsayIKCiAgIGlmKGZvcGVuKHRhc2siLmlucCIsInIiKSkKICAgewogICAgICAgZnJlb3Blbih0YXNrIi5pbnAiLCJyIixzdGRpbik7CiAgICAgICBmcmVvcGVuKHRhc2siLm91dCIsInciLHN0ZG91dCk7CiAgIH0KCiAgIGludCB0YyA9IDE7Ci8vICAgY2luID4+IHRjOwogICB3aGlsZSh0Yy0tKSBzb2x2ZSgpOwoKLy8gICBleGVjdXRlOwp9CgoKCg==