#include<stdio.h>
struct MyStruct
{
int x1,x2,y1,y2;
};
int min(int a,int b) {return a<b?a:b;}
int max(int a,int b) {return a>b?a:b;}
int abs(int a) {return a>0?a:-a;}
int area(MyStruct a) {return abs(a.x1-a.x2)*abs(a.y1-a.y2);}
int perimeter(MyStruct a) {return 2*(abs(a.x1-a.x2)+abs(a.y1-a.y2));}
MyStruct f(MyStruct a,MyStruct b)
{
MyStruct c;
c.x1=max(a.x1,b.x1);
c.y1=max(a.y1,b.y1);
c.x2=min(a.x2,b.x2);
c.y2=min(a.y2,b.y2);
if(c.x1>c.x2 || c.y1>c.y2) c.x1=c.x2=c.y1=c.y2=0;
return c;
}
int main()
{
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
MyStruct a,b,c;
scanf("%d%d%d%d",&a.x1,&a.y1,&a.x2,&a.y2);
scanf("%d%d%d%d",&b.x1,&b.y1,&b.x2,&b.y2);
scanf("%d%d%d%d",&c.x1,&c.y1,&c.x2,&c.y2);
int S,P;
S=area(a)+area(b)+area(c);
S=S-area(f(a,b))-area(f(a,c))-area(f(b,c));
S=S+area(f(f(a,b),c));
P=perimeter(a)+perimeter(b)+perimeter(c);
P=P-perimeter(f(a,b))-perimeter(f(a,c))-perimeter(f(b,c));
P=P+perimeter(f(f(a,b),c));
printf("%d %d\n",S,P);
return 0;
}