#include <stdio.h>
#define LL long long
struct dr{ LL x[4],y[4]; } d[5];
LL arie_tot,per_tot;
int i,ok;
inline LL abs(LL x){ return x>0 ? x:-x; }
inline LL Minim(LL x,LL y){ return x<y ? x:y; }
inline LL Maxim(LL x,LL y){ return x>y ? x:y; }
inline LL Arie(LL x0, LL y0, LL x1, LL y1){
return abs(x0-x1)*abs(y0-y1);
}
inline LL Perimetru(LL x0, LL y0, LL x1, LL y1){
return abs(x0-x1)*2 + abs(y0-y1)*2;
}
inline LL e_in(LL x,LL y, int j){
if( d[j].x[0] <= x && x<=d[j].x[1]
&& d[j].y[0]<=y && y<=d[j].y[1] ) return 1;
return 0;
}
int ap(int i,int j){
int cine,k,kk,c;
LL per=0,ar=0,x,y;
cine=-1;
for(k=0;k<4;++k)
if( e_in(d[i].x[k],d[i].y[k],j) ){
cine=k;
if(k & 1){
kk=0; c=1;
x=Maxim(d[j].x[kk],d[i].x[kk]);
if(k==3) y=Minim(d[j].y[c],d[i].y[c]);
else y=Maxim(d[j].y[kk],d[i].y[kk]);
}else{
kk=1; c=0;
x=Minim(d[j].x[kk],d[i].x[kk]);
if(k==2) y=Maxim(d[j].y[c],d[i].y[c]);
else y=Minim(d[j].y[kk],d[i].y[kk]);
}
break;
}
if(cine==-1){ // ar putea fi adiacente
/*if(ok) return 0; // am scos/pus deja perimetrul
if(d[i].y[0]==d[j].y[1] || d[i].y[1]==d[j].y[0])
if(d[j].x[0] <= d[i].x[1] && d[i].x[1]<=d[j].x[1])
per+=abs(d[i].x[1]-Maxim(d[i].x[0],d[j].x[0])),ok=1;else
if(d[j].x[0] <= d[i].x[0] && d[i].x[1]<=d[j].x[1])
per+=abs(d[i].x[0]-Minim(d[i].x[1],d[j].x[1])),ok=1;
if(d[i].x[0]==d[j].x[1] || d[i].x[1]==d[j].x[0])
if(d[j].y[0] <= d[i].y[1] && d[i].y[1]<=d[j].y[1])
per+=abs(d[i].y[1]-Maxim(d[i].y[0],d[j].y[0])),ok=1;else
if(d[j].y[0] <= d[i].y[0] && d[i].y[1]<=d[j].y[1])
per+=abs(d[i].y[0]-Minim(d[i].y[1],d[j].y[1])),ok=1;
if(j==4) per_tot-=per;
else per_tot+=per;*/
return 0;
}
ar=Arie(x,y,d[i].x[cine],d[i].y[cine]);
per=Perimetru(x,y,d[i].x[cine],d[i].y[cine]);
if(ar==0) per/=2;
if(j!=4){
arie_tot-=ar;
per_tot-=per;
}
else{
arie_tot+=ar;
per_tot+=per;
}
if(i==1 && j==2){
d[4].x[cine]=d[i].x[cine]; // in 4 sunt coord pt drept int 1 cu 2
d[4].y[cine]=d[i].y[cine];
if(cine==1 || cine==3) kk=cine-1;
else kk=cine+1;
d[4].x[kk]=x;
d[4].y[kk]=y;
if(d[4].x[0])d[4].x[2]=d[4].x[0], d[4].y[2]=d[4].y[1];
if(d[4].x[1])d[4].x[3]=d[4].x[1], d[4].y[3]=d[4].y[0];
if(d[4].x[2])d[4].x[0]=d[4].x[2], d[4].y[0]=d[4].y[3];
if(d[4].x[3])d[4].x[1]=d[4].x[3], d[4].y[1]=d[4].y[2];
}
return 1;
}
int main(){
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
for(i=1;i<=3;++i){
scanf("%I64d",&d[i].x[0]);
scanf("%I64d",&d[i].y[0]);
scanf("%I64d",&d[i].x[1]);
scanf("%I64d",&d[i].y[1]);
//scanf("%lld %lld %lld %lld",&d[i].x[0],&d[i].y[0],&d[i].x[1],&d[i].y[1]);
d[i].x[2]=d[i].x[0]; d[i].y[2]=d[i].y[1];
d[i].x[3]=d[i].x[1]; d[i].y[3]=d[i].y[0];
arie_tot+=Arie(d[i].x[0],d[i].y[0],d[i].x[1],d[i].y[1]);
per_tot+=Perimetru(d[i].x[0],d[i].y[0],d[i].x[1],d[i].y[1]);
}
ok=0; if(!ap(1,2)) ap(2,1);
ok=0; if(!ap(1,3)) ap(3,1);
ok=0; if(!ap(2,3)) ap(3,2);
ok=0; if(!ap(3,4)) ap(4,3);
printf("%I64d %I64d\n",arie_tot,per_tot);
fclose(stdin); fclose(stdout);
return 0;
}