#include <stdio.h>
int x1[3],x2[3];
int y1[3],y2[3];
int max(int a,int b)
{
if(a>b) return a;
return b;
}
int min(int a,int b)
{
if(a>b) return b;
return a;
}
int scan(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4)
{
if(x1>=x4) return 1;
if(x2<=x3) return 1;
if(y2<=y3) return 1;
if(y1>=y4) return 1;
return 0;
}
int main()
{
bool as=0;
int s=0,p=0;
FILE *fin,*fout;
fin=fopen("reuniune.in","r");
fout=fopen("reuniune.out","w");
for(int i=0;i<3;i++)
{
fscanf(fin,"%d %d %d %d",&x1[i],&y1[i],&x2[i],&y2[i]);
s+=(x2[i]-x1[i])*(y2[i]-y1[i]);
p+=((x2[i]-x1[i])*2+(y2[i]-y1[i])*2);
}
int x5=0,y5=0,y6=0,x6=0;
if(scan(x1[0],y1[0],x2[0],y2[0],x1[1],y1[1],x2[1],y2[1])==0)
{
x5=max(x1[0],x1[1]);
y5=max(y1[0],y1[1]);
x6=min(x2[0],x2[1]);
y6=min(y2[0],y2[1]);
s-=(x6-x5)*(y6-y5);
p-=((x6-x5)*2+(y6-y5)*2);
}
else as=1;
if(scan(x1[1],y1[1],x2[1],y2[1],x1[2],y1[2],x2[2],y2[2])==0)
{
x5=max(x1[1],x1[2]);
y5=max(y1[1],y1[2]);
x6=min(x2[1],x2[2]);
y6=min(y2[1],y2[2]);
s-=(x6-x5)*(y6-y5);
p-=((x6-x5)*2+(y6-y5)*2);
}
else as=1;
if(scan(x1[0],y1[0],x2[0],y2[0],x1[2],y1[2],x2[2],y2[2])==0)
{
x5=max(x1[0],x1[2]);
y5=max(y1[0],y1[2]);
x6=min(x2[0],x2[2]);
y6=min(y2[0],y2[2]);
s-=(x6-x5)*(y6-y5);
p-=((x6-x5)*2+(y6-y5)*2);
}
else as=1;
if(as==0)
{
x5=max(x5,x1[1]);
y5=max(y5,y1[1]);
x6=min(x6,x2[1]);
y6=min(y6,y2[1]);
s+=(x6-x5)*(y6-y5);
p+=((x6-x5)*2+(y6-y5)*2);
}
fprintf(fout,"%d %d",s,p);
}