/*
TASK: area
LANG: C++
*/

#include<iostream>
#include<algorithm>
#include<vector>
//#include<conio.h>
#include<cstdio>
#define pb push_back
#define S size()
#define float double

using namespace std;
struct point{
	double x,y;
}T;
vector<point>a;
int i,j,n;
point MP(double& x,double& y){
	point p;
    p.x=x;
    p.y=y;
    return p;
}
void init(){
//	freopen("inp1.txt","rt",stdin);
	point t1,t2;
    cin>>t1.x>>t1.y>>t2.x>>t2.y;
    cin>>T.x>>T.y;
    cin>>n;
    a.pb(t1);
    a.pb(MP(t2.x,t1.y));
    a.pb(t2);
    a.pb(MP(t1.x,t2.y));
    //for(i=0;i<a.S;i++)cout<<a[i].x<<" "<<a[i].y<<endl;
}
float a1,a2,b1,b2,c1,c2,cr;

float cross(point& p1,point& p2,point& z){
	a1=p2.x-p1.x;
    b1=p2.y-p1.y;
    a2=z.x-p1.x;
    b2=z.y-p1.y;
    cr=a1*b2-a2*b1;
	if(cr<0)return -cr;
   return cr;
}


bool isleft(point& p1,point& p2,point& z){
	a1=p2.x-p1.x;
    b1=p2.y-p1.y;
    a2=z.x-p1.x;
    b2=z.y-p1.y;
    cr=a1*b2-a2*b1;
   return cr>0;
}

point intersect(point& p1,point& p2,point& p3,point& p4){//usporedni

//cout<<"intersection bw "<<p1.x<<" "<<p1.y<<" and "<<p2.x<<" "<<p2.y<<endl;
//cout<<p3.x<<" "<<p3.y<<" and "<<p4.x<<" "<<p4.y<<endl;

	a1=p2.y-p1.y;
    a2=p4.y-p3.y;
    b1=p1.x-p2.x;
    b2=p3.x-p4.x;
    c1=p1.y*p2.x-p1.x*p2.y;
    c2=p3.y*p4.x-p3.x*p4.y;
    point p;
    p.x=(b1*c2-c1*b2)/(a1*b2-b1*a2);
    p.y=(a2*c1-a1*c2)/(a1*b2-b1*a2);
//    cout<<"e "<<p.x<<" "<<p.y<<endl;
    return p;
}
int q,w,next;
void sorting(){
	for(q=0;q<a.S-1;q++){
    	next=q+1;
    	for(w=q+2;w<a.S;w++)
        	if(isleft(a[q],a[next],a[w])==0)next=w;
        swap(a[q+1],a[next]);
    }
}

void find_s(){
	double s=0,ty;
	for(i=0;i<a.S;i++){
    	ty=cross(T,a[i],a[(i+1)%a.S]);
        ty/=2;
        s+=ty;
    }
    long long ss=long(s);
    //printf("%.4f\n",s);
    cout<<ss<<endl;
}

bool orient[200],ori;
int br,k;
void solve(){
	point t1,t2;
    bool left;
	for(i=1;i<=n;i++){
    	cin>>t1.x>>t1.y>>t2.x>>t2.y;
        //left=isleft(t1,t2,T);
        //cout<<"prava "<<left<<endl;
        ori=isleft(t1,t2,T);
        for(j=0;j<a.S;j++){
			orient[j]=isleft(t1,t2,a[j]);
//            cout<<"prava "<<i<<" "<<orient[j]<<endl;
        }
        br=a.S;
        for(j=1;j<br;j++){
        	if(orient[j-1]!=orient[j])a.pb(intersect(a[j-1],a[j],t1,t2));
        }
        if(orient[0]!=orient[br-1])a.pb(intersect(a[0],a[br-1],t1,t2));
        for(k=0,j=0;j<br;j++){
        	if(orient[j]!=ori){
            	a.erase(a.begin()+k);
            }
            else k++;
        }
        sorting();
    }
//    for(i=0;i<a.S;i++)cout<<a[i].x<<" "<<a[i].y<<endl;
    find_s();
}

int main(){//cout<<"\n--------\n";
	init();
    solve();
    return 0;
}

