#include <fstream>
using namespace std;
ifstream fin ("reuniune.in");
ofstream fout ("reuniune.out");
struct dreptunghi{
int x1, y1, x2, y2;
}d1, d2, d3;
void intersectie (int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int &ix1, int &iy1, int &ix2, int &iy2)
{
int x=1;
if (x1>=x3 && x1<=x4)
{
ix1=x1;
}
else
{
if (x3>=x1 && x3<=x2)
ix1=x3;
else
{
x=0;
}
}
if (x2>=x3 && x2<=x4)
{
ix2=x2;
}
else
{
if (x4>=x1 && x4<=x2)
ix2=x4;
else
{
x=0;
}
}
if (y1>=y3 && y1<=y4)
{
iy1=y1;
}
else
{
if (y3>=y1 && y3<=y2)
iy1=y3;
else
{
x=0;
}
}
if (y2>=y3 && y2<=y4)
{
iy2=y2;
}
else
{
if (y4>=y1 && y4<=y2)
iy2=y4;
else
{
x=0;
}
}
if (x==0)
{
ix1=0;
iy1=0;
ix2=0;
iy2=0;
}
}
int main()
{
int a, p, ix1, iy1, ix2, iy2, x, y, z, t;
fin>>d1.x1>>d1.y1>>d1.x2>>d1.y2 >>d2.x1>>d2.y1>>d2.x2>>d2.y2 >>d3.x1>>d3.y1>>d3.x2>>d3.y2;
a=(d1.x2-d1.x1)*(d1.y2-d1.y1) + (d2.x2-d2.x1)*(d2.y2-d2.y1) + (d3.x2-d3.x1)*(d3.y2-d3.y1);
p=( (d1.x2-d1.x1)+(d1.y2-d1.y1) + (d2.x2-d2.x1)+(d2.y2-d2.y1) + (d3.x2-d3.x1)+(d3.y2-d3.y1) )*2;
intersectie(d1.x1, d1.y1, d1.x2, d1.y2, d2.x1, d2.y1, d2.x2, d2.y2, ix1, iy1, ix2, iy2);
a-= (ix2-ix1)*(iy2-iy1);
p-= ( (ix2-ix1)+(iy2-iy1) )*2;
intersectie(d1.x1, d1.y1, d1.x2, d1.y2, d3.x1, d3.y1, d3.x2, d3.y2, ix1, iy1, ix2, iy2);
a-= (ix2-ix1)*(iy2-iy1);
p-= ( (ix2-ix1)+(iy2-iy1) )*2;
intersectie(d3.x1, d3.y1, d3.x2, d3.y2, d2.x1, d2.y1, d2.x2, d2.y2, ix1, iy1, ix2, iy2);
a-= (ix2-ix1)*(iy2-iy1);
p-= ( (ix2-ix1)+(iy2-iy1) )*2;
intersectie (ix1, iy1, ix2, iy2, d1.x1, d1.y1, d1.x2, d1.y2, x, y, z, t);
a+= (z-x)*(t-y);
p+= ( (z-x)+(t-y) )*2;
fout<<a<<" "<<p;
return 0;
}