#include<stdio.h>
#define min(a,b) ((a<b) ? a:b)
#define max(a,b) ((a>b) ? a:b)
#define L long long
struct point
{
L x1,x2,y1,y2;
};
L A,P;
point a,b,c;
L arie(point x)
{
return ((x.x2-x.x1)*(x.y2-x.y1));
}
L perimetru(point x)
{
return 2*((x.x2-x.x1)+(x.y2-x.y1));
}
point U(point x,point y)
{
point q;
q.x1=max(x.x1,y.x1);
q.x2=min(x.x2,y.x2);
q.y1=max(x.y1,y.y1);
q.y2=min(x.y2,y.y2);
if (q.x1>q.x2||q.y1>q.y2)
q.x1=q.x2=q.y1=q.y2=0;
return q;
}
int main()
{
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
scanf("%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld",&a.x1,&a.y1,&a.x2,&a.y2,&b.x1,&b.y1,&b.x2,&b.y2,&c.x1,&c.y1,&c.x2,&c.y2);
A=arie(a)+arie(b)+arie(c)-arie(U(a,b))-arie(U(a,c))-arie(U(b,c))+arie(U(c,U(a,b)));
P=perimetru(a)+perimetru(b)+perimetru(c)-perimetru(U(a,b))-perimetru(U(a,c))-perimetru(U(b,c))+perimetru(U(c,U(a,b)));
printf("%lld %ld\n",A,P);
return 0;
}