#include <stdio.h>
#include <algorithm>
using namespace std;
FILE *f,*s;
struct dreptunghi
{
long long int x1,x2;
long long int y1,y2;
};
long long int rez,per;
dreptunghi a,b,c,ab,ac,bc,abc_t,abc;
dreptunghi intersectie(dreptunghi x, dreptunghi y)
{
dreptunghi z;
z.x1=0;
z.x2=0;
z.y1=0;
z.y2=0;
long long int i,j,k,l;
i=max(x.x1,y.x1);
j=min(x.x2,y.x2);
k=max(x.y1,y.y1);
l=min(x.y2,y.y2);
if(i<=j && k<=l)
{
z.x1=i;
z.x2=j;
z.y1=k;
z.y2=l;
}
return z;
}
dreptunghi solve(dreptunghi x)
{
if(x.x1<0&&x.x2<0)
{
x.x1*=(-1);
x.x2*=(-1);
}
if(x.y1<0&&x.y2<0)
{
x.y1*=(-1);
x.y2*=(-1);
}
return x;
}
int main()
{
f=fopen("reuniune.in","r");
s=fopen("reuniune.out","w");
fscanf(f,"%lld %lld %lld %lld",&a.x1,&a.y1,&a.x2,&a.y2);
fscanf(f,"%lld %lld %lld %lld",&b.x1,&b.y1,&b.x2,&b.y2);
fscanf(f,"%lld %lld %lld %lld",&c.x1,&c.y1,&c.x2,&c.y2);
ab=intersectie(a,b);
ac=intersectie(a,c);
bc=intersectie(b,c);
abc_t=intersectie(ab,ac);
abc=intersectie(abc_t,bc);
a=solve(a);
b=solve(b);
c=solve(c);
ab=solve(ab);
ac=solve(ac);
bc=solve(bc);
abc=solve(abc);
rez = ((a.x2-a.x1)*(a.y2-a.y1)) + ((b.x2-b.x1)*(b.y2-b.y1)) + ((c.x2-c.x1)*(c.y2-c.y1));
rez = rez - ((ab.x2-ab.x1)*(ab.y2-ab.y1)) - ((bc.x2-b.x1)*(bc.y2-bc.y1)) - ((ac.x2-ac.x1)*(ac.y2-ac.y1));
rez = rez + ((abc.x2-abc.x1)*(abc.y2-abc.y1));
per = ((a.x2-a.x1)+(a.y2-a.y1))*2 + ((b.x2-b.x1)+(b.y2-b.y1))*2 + ((c.x2-c.x1)+(c.y2-c.y1))*2;
per = per - ((ab.x2-ab.x1)+(ab.y2-ab.y1))*2 - ((bc.x2-bc.x1)+(bc.y2-bc.y1))*2 - ((ac.x2-ac.x1)+(ac.y2-ac.y1))*2;
per = per + ((abc.x2-abc.x1)+(abc.y2-abc.y1))*2;
fprintf(s,"%lld %lld",rez,per);
fclose(s);
return 0;
}