#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define zahyoutype double
typedef struct Point{zahyoutype x,y;}P;
typedef struct line{P p1,p2;}L;
int sgn(zahyoutype x){return x<0?-1:x>0;}
zahyoutype crossproduct(P p,P q,P o){return (p.x-o.x)*(q.y-o.y)-(p.y-o.y)*(q.x-o.x);}

P crosspoint(L s,L t){
	zahyoutype x=1;if(x/2==0){puts("type error");exit(0);}
	double deno=(s.p1.x-s.p2.x)*(t.p1.y-t.p2.y)-(t.p1.x-t.p2.x)*(s.p1.y-s.p2.y);
	zahyoutype xnume=  s.p1.x*t.p1.x*(s.p2.y-t.p2.y)-s.p1.x*t.p2.x*(s.p2.y-t.p1.y)-s.p2.x*t.p1.x*(s.p1.y-t.p2.y)+s.p2.x*t.p2.x*(s.p1.y-t.p1.y);
	zahyoutype ynume=-(s.p1.y*t.p1.y*(s.p2.x-t.p2.x)-s.p1.y*t.p2.y*(s.p2.x-t.p1.x)-s.p2.y*t.p1.y*(s.p1.x-t.p2.x)+s.p2.y*t.p2.y*(s.p1.x-t.p1.x));
	P p={xnume/deno,ynume/deno};
	return p;
}

double area(P*p,int n){
	double s=0;
	for(int i=2;i<n;i++)s+=crossproduct(p[i-1],p[i],p[0]);
	return fabs(s/2.0);
}

void readpoint(P*p){zahyoutype x=1;scanf(x/2?"%lf%lf":"%ld%ld",&p->x,&p->y);}
void printpoint(P p){zahyoutype x=1;printf(x/2?"%.9lf %.9lf\n":"%ld %ld\n",p.x,p.y);}

P p[110];
P t[110];
zahyoutype c[110];
int main(){
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)readpoint(p+i);

	int q;
	scanf("%d",&q);
	while(q--){
		int flag[3]={};
		L s;
		readpoint(&s.p1);
		readpoint(&s.p2);
		for(int i=0;i<n;i++){
			c[i]=crossproduct(s.p2,p[i],s.p1);
			flag[sgn(c[i])+1]++;
		}
		if(flag[0]==0)printf("%.9f\n",area(p,n));
		else if(flag[2]==0)puts("0");
		else{
			int cnt=0;
			int i=0;
			while(c[i%=n]>=0)i++;
			while(c[i%=n]< 0)i++;
			if(c[i]>0){
				L ss;
				ss.p1=p[(i+n-1)%n];
				ss.p2=p[i];
				t[cnt]=crosspoint(s,ss);
				cnt++;
			}
			while(c[i%=n]>=0)t[cnt++]=p[i++];
			if(c[(i+n-1)%n]>0){
				L ss;
				ss.p1=p[(i+n-1)%n];
				ss.p2=p[i];
				t[cnt]=crosspoint(s,ss);
				cnt++;
			}
			printf("%.9f\n",area(t,cnt));
		}
	}
}
