#include <cstdio>
#include <algorithm>
using namespace std;
struct drept
{
long long x1,x2,y11,y2,l1,l2,a,p;
}d[5];
long long A,P,i,j,x1,x2,y11,y2,l1,l2;
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",&d[1].x1,&d[1].y11,&d[1].x2,&d[1].y2,&d[2].x1,&d[2].y11,&d[2].x2,&d[2].y2,&d[3].x1,&d[3].y11,&d[3].x2,&d[3].y2);
for(i=1;i<=3;i++)
{
d[i].l1=d[i].y11>d[i].y2?d[i].y11-d[i].y2:d[i].y2-d[i].y11;
d[i].l2=d[i].x1>d[i].x2?d[i].x1-d[i].x2:d[i].x2-d[i].x1;
d[i].p=2*d[i].l1+2*d[i].l2;
d[i].a=d[i].l1*d[i].l2;
}
A=d[1].a+d[2].a+d[3].a;
P=d[1].p+d[2].p+d[3].p;
for(i=1;i<3;i++)
for(j=i+1;j<=3;j++)
{
x1=max(d[i].x1,d[j].x1);
y11=max(d[i].y11,d[j].y11);
x2=min(d[i].x2,d[j].x2);
y2=min(d[i].y2,d[j].y2);
l1=y11>y2?y11-y2:y2-y11;
l2=x2>x1?x2-x1:x1-x2;
if(x2>=x1&&y2>=y11)
{
A-=(l1*l2);
P-=(2*l1+2*l2);
}
}
x1=max(d[1].x1,d[2].x1);
y11=max(d[1].y11,d[2].y11);
x2=min(d[1].x2,d[2].x2);
y2=min(d[1].y2,d[2].y2);
if(x2>=x1&&y2>=y11)
{
x1=max(x1,d[3].x1);
y11=max(y11,d[3].y11);
x2=min(x2,d[3].x2);
y2=min(y2,d[3].y2);
l1=y11>y2?y11-y2:y2-y11;
l2=x1>x2?x1-x2:x2-x1;
if(x2>=x1&&y2>=y11)
{
A+=(l1*l2);
P+=(2*l1+2*l2);
}
}
printf("%lld %lld\n",A,P);
return 0;
}