#include<cstdio>
#include<algorithm>
using namespace std;
struct drept{
long long l1,c1,l2,c2;
}v[5];
vector<pair<int,int> >nr;
long long perim=0;
long long mini(long long a,long long b){
if (a<b)
return a;
return b;}
long long maxi(long long a,long long b){
if (a>b)
return a;
return b;}
long long calc2(long long x,long long y){
long long l1,c1,l2,c2;
l1=maxi(v[x].l1,v[y].l1);
l2=mini(v[x].l2,v[y].l2);
c1=maxi(v[x].c1,v[y].c1);
c2=mini(v[x].c2,v[y].c2);
if (l1>=l2 || c1>=c2)
return 0;
return (l2-l1)*(c2-c1);}
long long calc3(long long x,long long y,long long z){
long long l1,c1,l2,c2;
l1=maxi(v[x].l1,maxi(v[y].l1,v[z].l1));
l2=mini(v[x].l2,mini(v[y].l2,v[z].l2));
c1=maxi(v[x].c1,maxi(v[y].c1,v[z].c1));
c2=mini(v[x].c2,mini(v[y].c2,v[z].c2));
if (l1>=l2 || c1>=c2)
return 0;
return (l2-l1)*(c2-c1);}
long long calc(){
long long i,ras=0,num=0;
for(i=0;i<nr.size()-1;i++){
if (nr[i].second==0)
num++;
else
num--;
if (num==1)
ras=ras+nr[i+1].first-nr[i].first;}
return ras;}
long long calc0(long long x,long long y,long long z){
nr.clear();
nr.push_back(make_pair(v[x].c1,0));
if (v[y].l1<=v[x].l2 && v[x].l2<=v[y].l2){
if (v[y].c1<=v[x].c2 && v[y].c2>=v[x].c1)
nr.push_back(make_pair(maxi(v[x].c1,v[y].c1),0)),nr.push_back(make_pair(mini(v[y].c2,v[x].c2),1));}
if (v[z].l1<=v[x].l2 && v[x].l2<=v[z].l2){
if (v[z].c1<=v[x].c2 && v[z].c2>=v[x].c1)
nr.push_back(make_pair(maxi(v[x].c1,v[z].c1),0)),nr.push_back(make_pair(mini(v[z].c2,v[x].c2),1));}
nr.push_back(make_pair(v[x].c2,1));
sort(nr.begin(),nr.end());
perim=perim+calc();
nr.clear();
nr.push_back(make_pair(v[x].c1,0));
if (v[y].l1<=v[x].l1 && v[x].l1<=v[y].l2){
if (v[y].c1<=v[x].c2 && v[y].c2>=v[x].c1)
nr.push_back(make_pair(maxi(v[x].c1,v[y].c1),0)),nr.push_back(make_pair(mini(v[y].c2,v[x].c2),1));}
if (v[z].l1<=v[x].l1 && v[z].l2>=v[x].l1){
if (v[z].c1<=v[x].c2 && v[z].c2>=v[x].c1)
nr.push_back(make_pair(maxi(v[x].c1,v[z].c1),0)),nr.push_back(make_pair(mini(v[z].c2,v[x].c2),1));}
nr.push_back(make_pair(v[x].c2,1));
sort(nr.begin(),nr.end());
perim=perim+calc();
nr.clear();
nr.push_back(make_pair(v[x].l1,0));
if (v[y].c1<=v[x].c2 && v[x].c2<=v[y].c2){
if (v[y].l1<=v[x].l2 && v[y].l2>=v[x].l1)
nr.push_back(make_pair(maxi(v[x].l1,v[y].l1),0)),nr.push_back(make_pair(mini(v[y].l2,v[x].l2),1));}
if (v[z].c1<=v[x].c2 && v[x].c2<=v[z].c2){
if (v[z].l1<=v[x].l2 && v[z].l2>=v[x].l1)
nr.push_back(make_pair(maxi(v[x].l1,v[z].l1),0)),nr.push_back(make_pair(mini(v[z].l2,v[x].l2),1));}
nr.push_back(make_pair(v[x].l2,1));
sort(nr.begin(),nr.end());
perim=perim+calc();
nr.clear();
nr.push_back(make_pair(v[x].l1,0));
if (v[y].c1<=v[x].c1 && v[x].c1<=v[y].c2){
if (v[y].l1<=v[x].l2 && v[y].l2>=v[x].l1)
nr.push_back(make_pair(maxi(v[x].l1,v[y].l1),0)),nr.push_back(make_pair(mini(v[y].l2,v[x].l2),1));}
if (v[z].c1<=v[x].c1 && v[z].c2>=v[x].c1){
if (v[z].l1<=v[x].l2 && v[z].l2>=v[x].l1)
nr.push_back(make_pair(maxi(v[x].l1,v[z].l1),0)),nr.push_back(make_pair(mini(v[z].l2,v[x].l2),1));}
nr.push_back(make_pair(v[x].l2,1));
sort(nr.begin(),nr.end());
perim=perim+calc();}
int main(){
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
long long n=3,i,aria=0;
for(i=1;i<=n;i++)
scanf("%lld%lld%lld%lld",&v[i].c1,&v[i].l1,&v[i].c2,&v[i].l2);
aria=aria+(v[1].c2-v[1].c1)*(v[1].l2-v[1].l1);
aria=aria+(v[2].c2-v[2].c1)*(v[2].l2-v[2].l1);
aria=aria+(v[3].c2-v[3].c1)*(v[3].l2-v[3].l1);
aria=aria-calc2(1,2);
aria=aria-calc2(1,3);
aria=aria-calc2(2,3);
aria=aria+calc3(1,2,3);
printf("%lld ",aria);
calc0(1,2,3);
calc0(2,1,3);
calc0(3,1,2);
printf("%lld\n",perim);
return 0;}