#include <iostream>
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
long long d[4][5],s,p;
long long pery(int d1, int d2)
{
if(d[d1][2]>=d[d2][2]) swap(d1,d2);
if(d[d1][4]<=d[d2][2]) return 0;
return -d[d2][2]+min(d[d1][4],d[d2][4]);
}
long long perx(int d1, int d2)
{
if(d[d1][1]>=d[d2][1]) swap(d1,d2);
if(d[d1][3]<=d[d2][1]) return 0;
return -d[d2][1]+min(d[d1][3],d[d2][3]);
}
long long pery2(int d1, int d2)
{
if(d[d1][2]>=d[d2][2]) swap(d1,d2);
if(d[d1][4]==d[d2][2]) return 0;
if(d[d1][4]<d[d2][2]) return -1;
return -d[d2][2]+min(d[d1][4],d[d2][4]);
}
long long perx2(int d1, int d2)
{
if(d[d1][1]>=d[d2][1]) swap(d1,d2);
if(d[d1][3]==d[d2][1]) return 0;
if(d[d1][3]<d[d2][1]) return -1;
return -d[d2][1]+min(d[d1][3],d[d2][3]);
}
void functie(long long c1, long long c2)
{
if(c1>=0&&c2>=0)
{if(c1==0) p-=c2;
else
if(c2==0) p-=c1;
else
p-=2*(c1+c2);
}
}
int main()
{
for(int i=1;i<=3;i++)
{
for(int j=1;j<=4;j++)
f>>d[i][j];
s+=(d[i][3]-d[i][1])*(d[i][4]-d[i][2]);
p+=2*((d[i][3]-d[i][1])+(d[i][4]-d[i][2]));
}
s-=pery(1,2)*perx(1,2);
s-=pery(2,3)*perx(2,3);
s-=pery(1,3)*perx(1,3);
functie(perx2(1,2),pery2(1,2));
functie(perx2(2,3),pery2(2,3));
functie(perx2(1,3),pery2(1,3));
long long m1,m2,x;
m1=max(max(d[1][1],d[2][1]),d[3][1]);
m2=min(min(d[1][3],d[2][3]),d[3][3]);
if(m1<m2)
{
x=m2-m1;
m1=max(max(d[1][2],d[2][2]),d[3][2]);
m2=min(min(d[1][4],d[2][4]),d[3][4]);
if(m1<m2)
{s+=(m2-m1)*x;
p+=2*(m2-m1)+2*x;
}
if(m1==m2)p+=x;
}
else
{
if(m2==m1)
{m1=max(max(d[1][2],d[2][2]),d[3][2]);
m2=min(min(d[1][4],d[2][4]),d[3][4]);
if(m1<m2) p+=m2-m1;
}
}
g<<s<<' '<<p;
return 0;
}