/*
TASK:area
LANG:C++
*/
#include<iostream>
#include<cmath>
using namespace std;
//typedef golqmo long long ;
 struct dot{
  int x,y;       
 }A[10004][2],t;
 
 int n,xp1,yp1,xp2,yp2,ap,bp,cp;
 int xx,yy;
 
 int CP(dot c, dot b,dot a)
 {
  int x1=a.x-c.x;
  int x2=b.x-c.x;
  int y1=a.y-c.y;      
  int y2=b.y-c.y;
  return x1*y2-x2*y1; 
 }
 
 void prava(dot a, dot b)
 {
  ap=b.y-a.y;
  bp=a.x-b.x;
  cp=b.x*a.y-b.y*a.x;
 }
 
 void intersect(dot a, dot b, dot c, dot d)
 {
  int a1, a2,b1,b2,c1,c2;      
  prava(a,b);      
  a1=ap; b1=bp; c1=cp;     
  prava(c,d);      
  a2=ap; b2=bp; c2=cp;     
  if(!(a2*b1-a1*b2) || !(b2*a1-b1*a2)){yy=1000000; xx=1000000; return;}
  if((a1*c2-a2*c1)>100000000 || (a1*c2-a2*c1)<10000000){yy=1000000; xx=1000000;return;}
  if((b1*c2-b2*c1)>100000000 || (b1*c2-b2*c1)<10000000){yy=1000000; xx=1000000;return;}  
  yy= (((a1*c2-a2*c1))/((a2*b1-a1*b2)));
  xx= (((b1*c2-b2*c1))/((b2*a1-b1*a2)));        
 }
 
 
 void ini(int i)
 {
  int xc[2],yc[2],br=0;      
  dot r,l;
  r.x=xp1; r.y=yp1;
  l.x=xp1; l.y=yp2;
  intersect(A[i][0],A[i][1],r,l);
  if(xx>=xp1 && xx<=xp2 && yy>=yp1 && yy<=yp2){xc[br]=xx; yc[br]=yy; br++;}
  
  r.x=xp1; r.y=yp1;
  l.x=xp2; l.y=yp1;
  intersect(A[i][0],A[i][1],r,l);
  if(xx>=xp1 && xx<=xp2 && yy>=yp1 && yy<=yp2){xc[br]=xx; yc[br]=yy; br++;}  

  r.x=xp2; r.y=yp2;
  l.x=xp1; l.y=yp2;
  intersect(A[i][0],A[i][1],r,l);
  if(xx>=xp1 && xx<=xp2 && yy>=yp1 && yy<=yp2){xc[br]=xx; yc[br]=yy; br++;}  
  
  r.x=xp2; r.y=yp2;
  l.x=xp2; l.y=yp1;
  intersect(A[i][0],A[i][1],r,l);
  if(xx>=xp1 && xx<=xp2 && yy>=yp1 && yy<=yp2){xc[br]=xx; yc[br]=yy; br++;} 
  
  A[i][0].x=xc[0]; A[i][0].y=yc[0];
  A[i][1].x=xc[1]; A[i][1].y=yc[1];
  }
  
  double fs(int i)
  {
   double s=0;
   int j=i+1;     
   
   if (CP(t,A[i][0],A[i][1])>0){s+=fabs(double((A[i][0].y+A[i][1].y)*(A[i][0].x-A[i][1].x)))/2;}
    else {s+=fabs(double((2*yp2-A[i][0].y-A[i][1].y)*(A[i][0].x-A[i][1].x)))/2;}
  
   int x3,x4,y3,y4,x5,y5;
   for(;j<n;j++)
   {
    intersect(A[i][0],A[i][1],A[j][0],A[j][1]);
    if(xx>=xp1 && xx<=xp2 && yy>=yp1 && yy<=yp2){x5=xx; y5=yy;}        
    if(CP(A[i][0],A[j][0],A[j][1])>0 && CP(t,A[j][0],A[j][1])>0){x4=A[i][1].x; y4=A[i][1].y;}
     else {x4=A[i][0].x; y4=A[i][0].y;}
    if(CP(A[j][0],A[i][0],A[i][1])>0 && CP(t,A[i][0],A[i][1])>0){x3=A[j][1].x; y3=A[j][1].y;}
     else {x3=A[j][0].x; y3=A[j][0].y;}        
    s-=fabs(double((y3+y5)*(x3-x5)+(y4+y5)*(x5-x4)))/2; 
   }
   return s;
 }
 
 int main()
 {
  int i;
  double S=0;
  cin>>xp1>>yp1>>xp2>>yp2;
  xp2-=xp1; yp2-=yp1;
  cin>>t.x>>t.y;      
  cin>>n;
  int f=A[0][0].x;
  for(i=0;i<n;i++)
  {
   cin>>A[i][0].x>>A[i][0].y>>A[i][1].x>>A[i][1].y;     
   A[i][0].x-=xp1;
   A[i][1].x-=xp1;
   A[i][0].y-=yp1;
   A[i][1].y-=yp1;        
  }      
  xp1=0; yp1=0;
  for(i=0;i<n;i++)ini(i);
  S=xp2*yp2;
  for(i=0;i<n;i++)
   S-=fs(i);
  cout<<int(S)<<endl;       
  //cin>>n;
  return 0;      
 }
