#include<bits/stdc++.h>
#define fast_io ios_base::Synnc_with_stdio(0); cin.tie(0); cout.tie(0);
#define F first
#define S second
#define pb push_back

typedef long long ll;
using namespace std;
const int wr = 5010, MX = 1700;
int dp[wr][wr];
int dp2[wr][wr];

int nxta[wr][MX], nxtb[wr][MX];

vector< int > a,b;
int N,n,M,m,k,q;

int solve(int x, int y)
{
   // cerr<<x<<' '<<y<<'\n';
    if(x>=N || y>=M)return 0;
    if(dp[x][y]!=-1)return dp[x][y];

    if(nxtb[y][a[x]]!=-1 && !solve(x+1, nxtb[y][a[x]]+1))
    {
     //   cout<<"!"<<' '<<x<<' '<<y<<' '<<x+1<<' '<<nxtb[y][a[x]]+1<<'\n';
        return dp[x][y]=1;
    }
    if(nxta[x][b[y]]!=-1 && !solve(nxta[x][b[y]]+1, y+1))
    {
       // cout<<"!!"<<' '<<x<<' '<<y<<' '<<\n';
        return dp[x][y]=1;
    }


    int tx=x, ty=y;
    while(tx<N && a[tx]==a[x])++tx;
    while(ty<M && b[ty]==b[y])++ty;

    dp[x][y]=0;
    if((solve(tx,y) || solve(x, ty)))
        dp[x][y]=1;
//    if(a[x]==a[y] && solve(tx,ty))
//        dp[x][y]=1;

  //  if(!solve(x+1,y) || !solve(x,y+1))return dp[x][y]=1;
    return dp[x][y];
}


int solve2(int x, int y)
{
   // cerr<<x<<' '<<y<<'\n';
    if(x>=N || y>=M)return 0;
    if(dp2[x][y]!=-1)return dp2[x][y];

    bitset< MX > st, stb;

    map< int , int > pos;
    for(int i=x;i<N;++i)
        if(!st[a[i]])pos[a[i]]=i,st[a[i]]=1;

    for(int i=y;i<M;++i)
    {
        if(stb[b[i]])continue;

       // cout<<i<<' '<<st[b[i]]<<' '<<pos[b[i]]<<' '<<solve(pos[b[i]]+1, i+1)<<'\n';
        if(st[b[i]] && !solve2(pos[b[i]]+1, i+1))
        {

            return dp2[x][y]=1;
        }

        stb[b[i]]=1;
    }
    return dp2[x][y]=0;
}

int32_t main()
{
    #ifdef ROADTOBELEGEND
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif // ROADTOBELEGEND

    cin>>N>>n>>M>>m>>k>>q;


    for(int i=0;i<N;++i)
        for(int j=0;j<M;++j)
            dp[i][j]=-1,
            dp2[i][j]=-1;


    for(int i=0;i<n;++i)
    {
        int c,x;
        cin>>c>>x;

        for(int j=0;j<c;++j)
            a.pb(x);
    }

    for(int i=0;i<m;++i)
    {
        int c,x;
        cin>>c>>x;

        for(int j=0;j<c;++j)
            b.pb(x);
    }

    for(int x=1;x<=k;++x)
    {
        int ps=-1;
        for(int i=N-1;i>=0;--i)
        {
            if(a[i]==x)ps=i;
            nxta[i][x]=ps;
        }
        ps=-1;
        for(int i=M-1;i>=0;--i)
        {
            if(b[i]==x)ps=i;
            nxtb[i][x]=ps;
        }
    }


//    for(auto to : a)
//        cout<<to<<' ';
//    cout<<'\n';
//    for(auto to : b)
//        cout<<to<<' ';
//    cout<<'\n';
////
//    cout<<solve(3,5);
//    return 0;

    while(q--)
    {
        int x,y;
        cin>>x>>y;

        int ans;
        if(N*M<=300*300)
            ans=solve2(x,y);
        else
            ans=solve(x,y);

        if(ans)cout<<"Yes\n";
        else cout<<"No\n";
    }


    return 0;
}




