#include <cstdio>
#include <algorithm>
#define T 1000000000
struct aa{
long long x1, y1, x2, y2;
}v[4];
inline long long maxim(long long a, long long b)
{
return (a > b ? a : b);
}
inline long long minim(long long a, long long b)
{
return (a < b ? a : b);
}
bool cmp(aa a, aa b)
{
return (a.x1 < b.x1);
}
inline long long arie(long long a, long long b, long long c, long long d)
{
return (c-a)*(b-d);
}
inline long long peri(long long a, long long b, long long c, long long d)
{
return 2*(c-a) + 2*(b-d);
}
inline long long inter_arie(aa a, aa b)
{
long long ls, cs, lj, cj;
cs=minim(a.y1, b.y1);
cj=maxim(a.y2, b.y2);
ls=maxim(a.x1, b.x1);
lj=minim(a.x2, b.x2);
if(cj <= cs && lj >= ls)
return (cs-cj)*(lj-ls);
return 0;
}
inline long long inter_pr(aa a, aa b)
{
long long ls, cs, lj, cj;
cs=minim(a.y1, b.y1);
cj=maxim(a.y2, b.y2);
ls=maxim(a.x1, b.x1);
lj=minim(a.x2, b.x2);
if(cj <= cs && lj >= ls)
return 2*(cs-cj)+2*(lj-ls);
return 0;
}
int main()
{
freopen("reuniune.in", "r", stdin);
freopen("reuniune.out", "w", stdout);
long long j, i, ar=0, pr=0, a, b, c, d;
for(i=0;i<3;++i){
scanf("%lld%lld%lld%lld", &a, &b, &c, &d);
v[i].x1=a+T;
v[i].x2=c+T;
v[i].y1=d+T;
v[i].y2=b+T;
ar+=arie(v[i].x1, v[i].y1, v[i].x2, v[i].y2);
pr+=peri(v[i].x1, v[i].y1, v[i].x2, v[i].y2);
}
std::sort(v, v+3, cmp);
for(i=0;i<3;++i)
for(j=i+1;j<3;++j)
{
ar-=inter_arie(v[i], v[j]);
pr-=inter_pr(v[i], v[j]);
}
v[3].y1=minim(v[0].y1, v[1].y1);
v[3].y2=maxim(v[0].y2, v[1].y2);
v[3].x1=v[1].x1;
v[3].x2=minim(v[0].x2, v[1].x2);
if(v[3].x2 >= v[3].x1 && v[3].y2 <= v[3].y1)
{
ar+=inter_arie(v[3], v[2]);
pr+=inter_pr(v[3], v[2]);
}
printf("%lld %lld", ar, pr);
return 0;
}