#include<stdio.h>
struct ok
{
long long x1,y1,x2,y2;
} a[4],tr;
long long mod (long long x)
{
if(x<0)
return -x;
return x;
}
long long max (long long x,long long y)
{
if(x<y)
return y;
return x;
}
long long arie2 (ok n,ok m)
{
if(n.x1<=m.x1 && m.x2<=n.x2 && n.y1<=m.y1 && m.y2<=n.y2)
return mod(m.x1-m.x2)*mod(m.y1-m.y2);
if(n.x1<=m.x1 && m.x2<=n.x2 && n.y1<=m.y1 && m.y1<=n.y2)
return mod(m.x1-m.x2)*mod(m.y1-n.y2);
if(n.x1<=m.x1 && m.x2<=n.x2 && n.y1<=m.y2 && m.y2<=n.y2)
return mod(m.x1-m.x2)*mod(m.y2-n.y1);
if(n.y1<=m.y1 && m.y2<=n.y2 && n.x1<=m.x1 && m.x1<=n.x2)
return mod(m.x1-n.x2)*mod(m.y2-m.y1);
if(n.y1<=m.y1 && m.y2<=n.y2 && n.x1<=m.x2 && m.x2<=n.x2)
return mod(m.x2-n.x1)*mod(m.y2-m.y1);
if(n.x1<=m.x2 && m.x2<=n.x2 && n.y1<=m.y2 && m.y2<=n.y2)
return mod(n.x1-m.x2)*mod(n.y1-m.y2);
if(n.x1<=m.x1 && m.x1<=n.x2 && n.y1<=m.y1 && m.y1<=n.y2)
return mod(n.x2-m.x1)*mod(m.y1-n.y2);
if(n.x1<=m.x2 && m.x2<=n.x2 && n.y1<=m.y1 && m.y1<=n.y2)
return mod(n.x1-m.x2)*mod(n.y2-m.y1);
if(n.x1<=m.x1 && m.x1<=n.x2 && n.y1<=n.y2 && n.y2<=m.y2)
return mod(n.x2-m.x1)*mod(n.y1-m.y2);
return 0;
}
long long arie (ok n,ok m)
{
if(n.x1<=m.x1 && m.x2<=n.x2 && n.y1<=m.y1 && m.y2<=n.y2)
{
tr.x1=m.x1;
tr.x2=m.x2;
tr.y1=m.y1;
tr.y2=m.y2;
return mod(m.x1-m.x2)*mod(m.y1-m.y2);
}
if(n.x1<=m.x1 && m.x2<=n.x2 && n.y1<=m.y1 && m.y1<=n.y2)
{
tr.x1=m.x1;
tr.x2=m.x2;
tr.y1=m.y1;
tr.y2=n.y2;
return mod(m.x1-m.x2)*mod(m.y1-n.y2);
}
if(n.x1<=m.x1 && m.x2<=n.x2 && n.y1<=m.y2 && m.y2<=n.y2)
{
tr.x1=m.x1;
tr.x2=m.x2;
tr.y1=n.y1;
tr.y2=m.y2;
return mod(m.x1-m.x2)*mod(m.y2-n.y1);
}
if(n.y1<=m.y1 && m.y2<=n.y2 && n.x1<=m.x1 && m.x1<=n.x2)
{
tr.x1=m.x1;
tr.x2=n.x2;
tr.y1=m.y1;
tr.y2=m.y2;
return mod(m.x1-n.x2)*mod(m.y2-m.y1);
}
if(n.y1<=m.y1 && m.y2<=n.y2 && n.x1<=m.x2 && m.x2<=n.x2)
{
tr.x1=n.x1;
tr.x2=m.x2;
tr.y1=m.y1;
tr.y2=m.y2;
return mod(m.x2-n.x1)*mod(m.y2-m.y1);
}
if(n.x1<=m.x2 && m.x2<=n.x2 && n.y1<=m.y2 && m.y2<=n.y2)
{
tr.x1=n.x1;
tr.x2=m.x2;
tr.y1=n.y1;
tr.y2=m.y2;
return mod(n.x1-m.x2)*mod(n.y1-m.y2);
}
if(n.x1<=m.x1 && m.x1<=n.x2 && n.y1<=m.y1 && m.y1<=n.y2)
{
tr.x1=m.x1;
tr.x2=n.x2;
tr.y1=m.y1;
tr.y2=n.y2;
return mod(n.x2-m.x1)*mod(m.y1-n.y2);
}
if(n.x1<=m.x2 && m.x2<=n.x2 && n.y1<=m.y1 && m.y1<=n.y2)
{
tr.x1=n.x1;
tr.x2=m.x2;
tr.y1=m.y1;
tr.y2=n.y2;
return mod(n.x1-m.x2)*mod(n.y2-m.y1);
}
if(n.x1<=m.x1 && m.x1<=n.x2 && n.y1<=n.y2 && n.y2<=m.y2)
{
tr.x1=m.x1;
tr.x2=n.x2;
tr.y1=n.y1;
tr.y2=m.y2;
return mod(n.x2-m.x1)*mod(n.y1-m.y2);
}
tr.x1=0;
tr.x2=0;
tr.y1=0;
tr.y2=0;
return 0;
}
long long solve1 ()
{
long long d,b,c,i,s,d1,d2;
b=max(arie(a[1],a[3]),arie(a[3],a[1]));
c=max(arie(a[2],a[3]),arie(a[3],a[2]));
d1=arie(a[1],a[2]);
d2=arie(a[2],a[1]);
if(d1<=d2)
d=arie(a[2],a[1]);
else
d=arie(a[1],a[2]);
s=s-b-c-d+max(arie2(a[3],tr),arie2(tr,a[3]));
for(i=1;i<=3;++i)
s+=mod(a[i].x1-a[i].x2)*mod(a[i].y1-a[i].y2);
return s;
}
long long perim (ok n,ok m)
{
if(n.x1<=m.x1 && m.x2<=n.x2 && n.y1<=m.y1 && m.y2<=n.y2)
{
tr.x1=m.x1;
tr.x2=m.x2;
tr.y1=m.y1;
tr.y2=m.y2;
return 2*(mod(m.x1-m.x2)+mod(m.y1-m.y2));
}
if(n.x1<=m.x1 && m.x2<=n.x2 && n.y1<=m.y1 && m.y1<=n.y2)
{
tr.x1=m.x1;
tr.x2=m.x2;
tr.y1=m.y1;
tr.y2=n.y2;
return 2*(mod(m.x1-m.x2)+mod(m.y1-n.y2));
}
if(n.x1<=m.x1 && m.x2<=n.x2 && n.y1<=m.y2 && m.y2<=n.y2)
{
tr.x1=m.x1;
tr.x2=m.x2;
tr.y1=n.y1;
tr.y2=m.y2;
return 2*(mod(m.x1-m.x2)+mod(m.y2-n.y1));
}
if(n.y1<=m.y1 && m.y2<=n.y2 && n.x1<=m.x1 && m.x1<=n.x2)
{
tr.x1=m.x1;
tr.x2=n.x2;
tr.y1=m.y1;
tr.y2=m.y2;
return 2*(mod(m.x1-n.x2)+mod(m.y2-m.y1));
}
if(n.y1<=m.y1 && m.y2<=n.y2 && n.x1<=m.x2 && m.x2<=n.x2)
{
tr.x1=n.x1;
tr.x2=m.x2;
tr.y1=m.y1;
tr.y2=m.y2;
return 2*(mod(m.x2-n.x1)+mod(m.y2-m.y1));
}
if(n.x1<=m.x2 && m.x2<=n.x2 && n.y1<=m.y2 && m.y2<=n.y2)
{
tr.x1=n.x1;
tr.x2=m.x2;
tr.y1=n.y1;
tr.y2=m.y2;
return 2*(mod(n.x1-m.x2)+mod(n.y1-m.y2));
}
if(n.x1<=m.x1 && m.x1<=n.x2 && n.y1<=m.y1 && m.y1<=n.y2)
{
tr.x1=m.x1;
tr.x2=n.x2;
tr.y1=m.y1;
tr.y2=n.y2;
return 2*(mod(n.x2-m.x1)+mod(m.y1-n.y2));
}
if(n.x1<=m.x2 && m.x2<=n.x2 && n.y1<=m.y1 && m.y1<=n.y2)
{
tr.x1=n.x1;
tr.x2=m.x2;
tr.y1=m.y1;
tr.y2=n.y2;
return 2*(mod(n.x1-m.x2)+mod(n.y2-m.y1));
}
if(n.x1<=m.x1 && m.x1<=n.x2 && n.y1<=n.y2 && n.y2<=m.y2)
{
tr.x1=m.x1;
tr.x2=n.x2;
tr.y1=n.y1;
tr.y2=m.y2;
return 2*(mod(n.x2-m.x1)+mod(n.y1-m.y2));
}
tr.x1=0;
tr.x2=0;
tr.y1=0;
tr.y2=0;
return 0;
}
long long perim2 (ok n,ok m)
{
if(n.x1<=m.x1 && m.x2<=n.x2 && n.y1<=m.y1 && m.y2<=n.y2)
return 2*(mod(m.x1-m.x2)+mod(m.y1-m.y2));
if(n.x1<=m.x1 && m.x2<=n.x2 && n.y1<=m.y1 && m.y1<=n.y2)
return 2*(mod(m.x1-m.x2)+mod(m.y1-n.y2));
if(n.x1<=m.x1 && m.x2<=n.x2 && n.y1<=m.y2 && m.y2<=n.y2)
return 2*(mod(m.x1-m.x2)+mod(m.y2-n.y1));
if(n.y1<=m.y1 && m.y2<=n.y2 && n.x1<=m.x1 && m.x1<=n.x2)
return 2*(mod(m.x1-n.x2)+mod(m.y2-m.y1));
if(n.y1<=m.y1 && m.y2<=n.y2 && n.x1<=m.x2 && m.x2<=n.x2)
return 2*(mod(m.x2-n.x1)+mod(m.y2-m.y1));
if(n.x1<=m.x2 && m.x2<=n.x2 && n.y1<=m.y2 && m.y2<=n.y2)
return 2*(mod(n.x1-m.x2)+mod(n.y1-m.y2));
if(n.x1<=m.x1 && m.x1<=n.x2 && n.y1<=m.y1 && m.y1<=n.y2)
return 2*(mod(n.x2-m.x1)+mod(m.y1-n.y2));
if(n.x1<=m.x2 && m.x2<=n.x2 && n.y1<=m.y1 && m.y1<=n.y2)
return 2*(mod(n.x1-m.x2)+mod(n.y2-m.y1));
if(n.x1<=m.x1 && m.x1<=n.x2 && n.y1<=n.y2 && n.y2<=m.y2)
return 2*(mod(n.x2-m.x1)+mod(n.y1-m.y2));
return 0;
}
long long solve2 ()
{
int d,b,c,i,s,d1,d2;
b=max(perim(a[1],a[3]),perim(a[3],a[1]));
c=max(perim(a[2],a[3]),perim(a[3],a[2]));
d1=perim(a[1],a[2]);
d2=perim(a[2],a[1]);
if(d1<=d2)
d=perim(a[2],a[1]);
else
d=perim(a[1],a[2]);
s=s-b-c-d+max(perim2(a[3],tr),perim2(tr,a[3]));
for(i=1;i<=3;++i)
s+=2*(mod(a[i].x1-a[i].x2)+mod(a[i].y1-a[i].y2));
return s;
}
int main ()
{
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
for(long long i=1;i<=3;++i)
scanf("%lld%lld%lld%lld",&a[i].x1,&a[i].y1,&a[i].x2,&a[i].y2);
printf("%lld ",solve1());
printf("%lld",solve2());
return 0;
}