#include<bits/stdc++.h>
#include<sys/time.h>
#define maxn 1510
#define maxq 1010
#define maxm 2520
#define y1 bobaacad
using namespace std;
typedef long long LL;
int sgn(LL a) {return !a?0:(a<0?-1:1);}
int xx[maxm*2],yy[maxm*2],xx2[maxm*2],yy2[maxm*2],tt[maxm*2];
int zz[maxm*2],ll[maxm*2],rr[maxm*2],ii[maxm*2],_,u_,l_,r_;
bool vis[maxm*2],res[maxm*2];
int ne[maxm*2];
LL dot(LL x1,LL y1,LL x2,LL y2) {return x1*x2+y1*y2;}
LL cros(LL x1,LL y1,LL x2,LL y2) {return x1*y2-x2*y1;}
LL cross(LL x0,LL y0,LL x1,LL y1,LL x2,LL y2) {return (x1-x0)*(y2-y0)-(x2-x0)*(y1-y0);}
LL Cross(int i,int j,int k) {return cross(xx2[i],yy2[i],xx2[j],yy2[j],xx2[k],yy2[k]);}
int cmp(int i,int j) {return (yy2[i]!=yy2[j]?yy2[i]-yy2[j]:(tt[i]!=tt[j]?tt[i]-tt[j]:(tt[i]==0?xx2[i]-xx2[j]:xx2[j]-xx2[i])));}
int cmp2(int i,int j)
{
LL c1=Cross(i,i^1,j),c2=Cross(i,i^1,j^1);
if(sgn(c1)*sgn(c2)>=0) return sgn(c1)+sgn(c2);
c1=Cross(j,j^1,i),c2=Cross(j,j^1,i^1);
return -sgn(c1)-sgn(c2);
}
void qs(int *ii,int l,int r)
{
while(l<r)
{
int i=l,j=l,k=r,i_=ii[l+rand()%(r-l)];
while(j<k)
{
int c=cmp(ii[j],i_);
if(!c) j++;
else if(c<0) swap(ii[i],ii[j]),i++,j++;
else k--,swap(ii[j],ii[k]);
}
qs(ii,l,i);
l=k;
}
}
int newNode(int i)
{
zz[_]=rand(),ll[_]=rr[_]=0,ii[_]=i;
return _++;
}
void split(int u,int i)
{
int c;
if(!u) return u_=l_=r_=0,void();
c=cmp2(ii[u],i);
if(c<0) split(rr[u],i),rr[u]=l_,l_=u;
else if(c>0) split(ll[u],i),ll[u]=r_,r_=u;
else u_=u,l_=ll[u],r_=rr[u],ll[u]=rr[u]=0;
}
int merge(int u,int v)
{
if(!u||!v) return u?u:v;
if(zz[u]<zz[v]) {rr[u]=merge(rr[u],v);return u;}
else {ll[v]=merge(u,ll[v]);return v;}
}
void ins(int i) {split(u_,i);u_=merge(merge(l_,newNode(i)),r_);}
void del(int i) {split(u_,i);u_=merge(l_,r_);}
int gpre(int i)
{
int u=u_,i_=-1;
while(u)
if(Cross(ii[u],ii[u]^1,i)<0) i_=ii[u]>>1,u=rr[u];
else u=ll[u];
return i_;//
}
int good(int i){return abs(xx2[i<<1]-xx2[i<<1|1])>abs(yy2[i<<1]-yy2[i<<1|1]);}
int dfs(int i)
{
if(vis[i]) return res[i];
if(xx2[i]<0) return 0;
if(!yy2[i]&&(ne[i]==-1||sgn(cross(xx2[ne[i]<<1],yy2[ne[i]<<1],xx2[ne[i]<<1|1],yy2[ne[i]<<1|1],xx2[i],yy2[i]))
*sgn(cross(xx2[ne[i]<<1],yy2[ne[i]<<1],xx2[ne[i]<<1|1],yy2[ne[i]<<1|1],0,0))>=0)) return 1;
if(ne[i]==-1||!good(ne[i])) return 0;
vis[i]=1,res[i]=dfs(xx2[ne[i]<<1]<xx2[ne[i]<<1|1]?ne[i]<<1:ne[i]<<1|1);
return res[i];
}
int main()
{
static int jj[maxm*2];
static bool yes[maxq];
int n,n_,n1,q,h,i,j,x,y;
srand(time(NULL));
cin>>n;
for(i=0;i<n*2;i++) cin>>xx[i]>>yy[i];
cin>>q;
for(h=0;h<q;h++) cin>>x>>y,xx[n+h<<1]=xx[n+h<<1|1]=x,yy[n+h<<1]=yy[n+h<<1|1]=y;
n_=n+q;
for(i=0;i<n_*2;i++)
{
x=xx[i],y=yy[i];
for(j=0;j<n_*2;j++) xx2[j]=dot(x,y,xx[j],yy[j]),yy2[j]=cros(x,y,xx[j],yy[j]);
n1=0;
for(j=0;j<n;j++)
if(yy2[j<<1]!=yy2[j<<1|1])
{
if(yy2[j<<1]<yy2[j<<1|1]) tt[j<<1]=0,tt[j<<1|1]=2;
else tt[j<<1]=2,tt[j<<1|1]=0;
jj[n1++]=j<<1,jj[n1++]=j<<1|1;
}
for(j=n;j<n_;j++) tt[j<<1]=1,jj[n1++]=j<<1;
qs(jj,0,n1);
_=1;
for(j=0;j<n1;j++)
{
int j_=jj[j];
if(tt[j_]==1) ne[j_]=gpre(j_);
else if(tt[j_]==0) ne[j_]=gpre(j_),ins(j_);
else del(j_^1),ne[j_]=gpre(j_);
}
memset(vis,0,sizeof(vis));
for(h=0;h<q;h++) if(dfs(n+h<<1)) yes[h]=1;
}
for(h=0;h<q;h++) puts(yes[h]?"YES":"NO");
return 0;
}