#include <cstdio>
#include <algorithm>
using namespace std;
FILE *I,*O;
struct D
{int x1,x2,y1,y2;
long long A(){return 1LL*(x2-x1)*(y2-y1);}
long long P(){return 2LL*(x2-x1)+2LL*(y2-y1);}
D operator*(const D& R)const{D a;
a.x1=max(x1,R.x1),a.x2=min(x2,R.x2),a.y1=max(y1,R.y1),a.y2=min(y2,R.y2);
if(a.x1>a.x2 || a.y1>a.y2)a.x1=a.x2=a.y1=a.y2=0;
return a;}}R1,R2,R3,R4,R5,R6,R7;
int main(){I=fopen("reuniune.in","r");O=fopen("reuniune.out","w");
fscanf(I,"%d%d%d%d%d%d%d%d%d%d%d%d",&R1.x1,&R1.y1,&R1.x2,&R1.y2,&R2.x1,&R2.y1,&R2.x2,&R2.y2,&R3.x1,&R3.y1,&R3.x2,&R3.y2);
R4=R1*R2,R5=R3*R1,R6=R3*R2,R7=R3*R2*R1;
fprintf(O,"%lld %lld",R1.A()+R2.A()+R3.A()-R4.A()-R5.A()-R6.A()+R7.A(),R1.P()+R2.P()+R3.P()-R4.P()-R5.P()-R6.P()+R7.P());
return 0;}