/**
 * code generated by JHelper
 * More info: https://g...content-available-to-author-only...b.com/AlexeyDmitriev/JHelper
 * @author gainullin.ildar
 */

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <list>
#include <time.h>
#include <math.h>
#include <random>
#include <deque>
#include <queue>
#include <cassert>

using namespace std;

const int N = 1e5 + 7;

vector<int> g[N];
int tin[N], tout[N];
int sz[N];
int tt = 1;

void dfs(int v)
{
    tin[v] = tt++;
    sz[v] = 1;
    for (auto to : g[v])
    {
        dfs(to);
        sz[v] += sz[to];
    }
    tout[v] = tt++;
}

bool pr(int a, int b)
{
    return (tin[a] <= tin[b] && tout[a] >= tout[b]);
}

class Main
{
public:
    void solve(std::istream &in, std::ostream &out)
    {
        int n, m, k, q;
        in >> n >> m >> k >> q;
        tt = 1;
        for (int i = 1; i <= n; i++)
        {
            tin[i] = tout[i] = 0;
            g[i].clear();
        }
        vector<int> ind(m + 1, -1);
        vector<bool> root(n + 1, true);
        for (int i = 0; i < k; i++)
        {
            int v, a;
            in >> v >> a;
            if (ind[a] != -1)
            {
                g[ind[a]].push_back(v);
                root[v] = false;
            }
            ind[a] = v;
        }
        for (int i = 1; i <= n; i++)
        {
            if (root[i])
            {
                dfs(i);
            }
        }
        for (int i = 0; i < q; i++)
        {
            int v, a;
            in >> v >> a;
            a = ind[a];
            if (a == -1)
            {
                out << 0 << '\n';
            }
            else
            {
                if (pr(v, a))
                {
                    out << sz[v] << '\n';
                }
                else
                {
                    out << 0 << '\n';
                }
            }
        }
    }
};


int main()
{
    ios::sync_with_stdio(0);
    Main solver;
    std::istream &in(std::cin);
    std::ostream &out(std::cout);
    solver.solve(in, out);
    return 0;
}
