#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
#define mp make_pair
#define lsb(x) (x&(-x))
#define pii pair<int,int>
#define ss second
#define ff first
#define piii pair<int,pii>
#define debu(x) (cerr << #x << " = "<< x << "\n")
#define debu2(x,y) (cerr << #x << " = "<< x << " " << #y << " = " << y << "\n")
#define debu3(x,y,z) (cerr << #x << " = "<< x << " " << #y << " = " << y << " " << #z << " = " << z<< "\n")
#define bitout(x,y) {\
cerr << #x << " : ";\
for (int justforbits = y; justforbits >=0; justforbits--)cout << (((1 << justforbits) & x)>=1);\
cout << "\n";\
}
#define rangeout(j,rangestart,rangeend) {\
cerr << "outputting " << #j<< ":\n";\
for (int forrang = rangestart; forrang <= rangeend; forrang++)cerr << j[forrang] << " ";\
cerr<<"\n";\
}
#define c1 {cerr << "Checkpoint 1! \n\n";cerr.flush();}
#define c2 {cerr << "Checkpoint 2! \n\n";cerr.flush();}
#define c3 {cerr << "Checkpoint 3! \n\n";cerr.flush();}
#define c4 {cerr << "Checkpoint 4! \n\n";cerr.flush();}
#define defN 1000001
//omigyatt i need to stop naming 2 different variables the same name rgwbrog
//jfwbubf since uyr going backwards also remember to put the numbers in vector[n-i] instedad of vector [i] fqweo nweonwe n
vector<int>sg(4*defN,0);
vector<int>lazy(4*defN,0);
int query(int s, int e, int cn, int reqs, int reqe)
{
if(reqs<=s&&reqe>=e)
{
return sg[cn];
}
int ans=0;
int m=(s+e)/2;
if(reqs<=m)
{
ans=query(s,m,cn<<1,reqs,reqe);
}
if(reqe>m)
{
ans=max(ans,query(m+1,e,(cn<<1)|1,reqs,reqe));
}
return ans;
}
void update(int s, int e, int cn, int pos, int val)
{
if(s==e)
{
sg[cn]=val;
return;
}
int m=(s+e)/2;
if(pos<=m)
{
update(s,m,cn<<1,pos,val);
}
else
{
update(m+1,e,(cn<<1)|1,pos,val);
}
sg[cn]=max(sg[cn<<1],sg[(cn<<1)|1]);
}
void init(int s, int e, int cn, vector<int>&corrs)
{
if(s==e)
{
sg[cn]=corrs[s];return;
}
int m=(s+e)/2;
init(s,m,cn<<1,corrs);
init(m+1,e,(cn<<1)|1,corrs);
sg[cn]=max(sg[cn<<1],sg[(cn<<1)|1]);
}
void rangedate(int s, int e, int cn, int reqs, int reqe, int val)
{
if(reqs<=s&&reqe>=e)
{
//debu3(s,e,val);
lazy[cn]=max(lazy[cn],val);
return;;
}
int m=(s+e)/2;
if(reqs<=m)
{
rangedate(s,m,cn<<1,reqs,reqe,val);
}
if(reqe>m)
{
rangedate(m+1,e,(cn<<1)|1,reqs,reqe,val);
}
}
int querpoint(int s, int e, int cn, int pos)
{
if(s==e)
{
return lazy[cn];
}
int ans=lazy[cn];//debu(ans);
int m=(s+e)/2;
if(pos<=m){return max(ans,querpoint(s,m,cn<<1,pos));}
else{return max(ans,querpoint(m+1,e,(cn<<1)|1,pos));}
}
signed main()
{
int t1,t2,t3,t4;
mt19937_64 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n;cin>>n;
vector<pii>ppl(n+1);
for(int a=1;a<=n;a++){cin>>ppl[a].ss;}
for(int a=1;a<=n;a++){cin>>ppl[a].ff;}
int n2=2*n;
vector<vector<int>>corrs(2,vector<int>(n+1));
vector<int>rtonum(n2+1);
for(int i=1;i<=n;i++){rtonum[ppl[i].ss]=i;}
for(int a=0;a<2;a++)
{
for(int i=1;i<=n;i++)
{
int l,r;tie(l,r)=ppl[i];
t1=query(1,n2,1,l,r);
t2=querpoint(1,n2,1,r);//debu(t2);
update(1,n2,1,r,i);
rangedate(1,n2,1,l,r,i);
//debu3(l,r,i);
corrs[a][a?n-i+1:i]=max(t1,t2);
//debu2(a,i);debu(corrs[a][i]);
}
if(a==0)
{
reverse(ppl.begin()+1,ppl.end());
fill(sg.begin(),sg.end(),0);
fill(lazy.begin(),lazy.end(),0);
}
}
priority_queue<pii>pq;
for(int a=1;a<=n;a++)
{
corrs[1][a]=n-corrs[1][a]+1;
pq.push(mp(corrs[0][a],a));
}
/*for(int a=1;a<=n;a++)
{
debu2(corrs[0][a],corrs[1][a]);
}*/
init(1,n,1,corrs[1]);
int q;cin>>q;
vector<piii>queries;
int kyoo=q;
while(q--)
{
cin>>t1>>t2;
queries.pb(mp(t1,mp(t2,kyoo-q)));
}
sort(queries.begin(),queries.end(),greater<piii>());
vector<bool>ans(n+1);
for(piii qq:queries)
{
while(!pq.empty()&&pq.top().ff>=qq.ff)
{
update(1,n,1,pq.top().ss,0);
pq.pop();
}
t1=query(1,n,1,qq.ff,qq.ss.ff);
ans[qq.ss.ss]=(t1>qq.ss.ff)?false:true;
}
for(int i=1;i<=kyoo;i++)
{
if(ans[i])cout<<"Yes\n";
else cout<<"No\n";
}
}