#include<cstdio>
#include<algorithm>
using namespace std;
struct drept
{
int x, y, x1, y1;
};
drept v[5];
int main()
{
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
int p1x,p1y,p2x,p2y;
long long r1,r2,r3,r4,arie1,arie2,arie3;
scanf("%d%d%d%d%d%d%d%d%d%d%d%d",&v[1].x,&v[1].y,&v[1].x1,&v[1].y1,&v[2].x,&v[2].y,&v[2].x1,&v[2].y1,&v[3].x,&v[3].y,&v[3].x1,&v[3].y1);
p1x=max(v[1].x,v[2].x);
p1y=max(v[1].y,v[2].y);
p2x=min(v[1].x1,v[2].x1);
p2y=min(v[1].y1,v[2].y1);
r1=(p2x-p1x)*(p2y-p1y);
p1x=max(v[1].x,v[3].x);
p1y=max(v[1].y,v[3].y);
p2x=min(v[1].x1,v[3].x1);
p2y=min(v[1].y1,v[3].y1);
r2=(p2x-p1x)*(p2y-p1y);
p1x=max(v[2].x,v[3].x);
p1y=max(v[2].y,v[3].y);
p2x=min(v[2].x1,v[3].x1);
p2y=min(v[2].y1,v[3].y1);
r3=(p2x-p1x)*(p2y-p1y);
p1x=max(v[1].x,max(v[2].x,v[3].x));
p1y=max(v[1].y,max(v[2].y,v[3].y));
p2x=min(v[1].x1,min(v[2].x1,v[3].x1));
p2y=min(v[1].y1,min(v[2].y1,v[3].y1));
r4=(p2x-p1x)*(p2y-p1y);
arie1=(v[1].x1-v[1].x)*(v[1].y1-v[1].y);
arie2=(v[2].x1-v[2].x)*(v[2].y1-v[2].y);
arie3=(v[3].x1-v[3].x)*(v[3].y1-v[3].y);
if(r1<0) r1=0;
if(r2<0) r2=0;
if(r3<0) r3=0;
if(r4<0) r4=0;
int p1,p2;
long long perimetru;
p1=min(v[1].x,min(v[2].x,v[3].x));
p2=max(v[1].x1,max(v[2].x1,v[3].x1));
perimetru=1LL*(p2-p1)*2;
p1=min(v[1].y,min(v[2].y,v[3].y));
p2=max(v[1].y1,max(v[2].y1,v[3].y1));
perimetru+=1LL*(p2-p1)*2;
unsigned long long rezultat;
rezultat=1ULL*(arie1+arie2+arie3)-r1-r2-r3+r4;
printf("%llu %lld",rezultat,perimetru);
return 0;
}