#include <fstream>
using namespace std;
typedef long long ll;
ifstream in("reuniune.in");
ofstream out("reuniune.out");
ll max(ll a, ll b)
{
if(a>b) return a;
return b;
}
ll min(ll a, ll b)
{
if(a>b) return b;
return a;
}
struct date
{
ll varf_x, varf_y, colt_x, colt_y;
} drept[5];
void Read()
{
for(int i=1; i<=3; i++)
in >> drept[i].varf_x >> drept[i].varf_y >> drept[i].colt_x >> drept[i].colt_y;
}
int Arie(int i, int j)
{
ll varf_fx, varf_fy, colt_fx, colt_fy;
varf_fx = max(drept[i].varf_x,drept[j].varf_x);
varf_fy = max(drept[i].varf_y,drept[j].varf_y);
colt_fx = min(drept[i].colt_x,drept[j].colt_x);
colt_fy = min(drept[i].colt_y,drept[j].colt_y);
if(colt_fx >= varf_fx && colt_fy >= varf_fy)
return (colt_fx - varf_fx) * (colt_fy - varf_fy);
else return 0;
}
int Perimetru(int i, int j)
{
ll varf_fx, varf_fy, colt_fx, colt_fy;
varf_fx = max(drept[i].varf_x,drept[j].varf_x);
varf_fy = max(drept[i].varf_y,drept[j].varf_y);
colt_fx = min(drept[i].colt_x,drept[j].colt_x);
colt_fy = min(drept[i].colt_y,drept[j].colt_y);
if(colt_fx >= varf_fx && colt_fy >= varf_fy)
return 2*((colt_fx - varf_fx) + (colt_fy - varf_fy));
else return 0;
}
int Ariex3()
{
ll varf_fx, varf_fy, colt_fx, colt_fy;
varf_fx = max(drept[1].varf_x,drept[2].varf_x);
varf_fy = max(drept[1].varf_y,drept[2].varf_y);
colt_fx = min(drept[1].colt_x,drept[2].colt_x);
colt_fy = min(drept[1].colt_y,drept[2].colt_y);
varf_fx = max(varf_fx,drept[3].varf_x);
varf_fy = max(varf_fy,drept[3].varf_y);
colt_fx = min(colt_fx,drept[3].colt_x);
colt_fy = min(colt_fy,drept[3].colt_y);
if(colt_fx >= varf_fx && colt_fy >= varf_fy)
return (colt_fx - varf_fx) * (colt_fy - varf_fy);
else return 0;
}
int Perimetrux3()
{
ll varf_fx, varf_fy, colt_fx, colt_fy;
varf_fx = max(drept[1].varf_x,drept[2].varf_x);
varf_fy = max(drept[1].varf_y,drept[2].varf_y);
colt_fx = min(drept[1].colt_x,drept[2].colt_x);
colt_fy = min(drept[1].colt_y,drept[2].colt_y);
varf_fx = max(varf_fx,drept[3].varf_x);
varf_fy = max(varf_fy,drept[3].varf_y);
colt_fx = min(colt_fx,drept[3].colt_x);
colt_fy = min(colt_fy,drept[3].colt_y);
if(colt_fx >= varf_fx && colt_fy >= varf_fy)
return 2*((colt_fx - varf_fx) + (colt_fy - varf_fy));
else return 0;
}
void Solve()
{
ll ariel = Arie(1,1) + Arie(2,2) + Arie(3,3) + Ariex3() - Arie(1,2) - Arie(2,3) - Arie(1,3);
ll perimeriel = Perimetru(1,1) + Perimetru(2,2) + Perimetru(3,3) + Perimetrux3() - Perimetru(1,2) - Perimetru(2,3) - Perimetru(1,3);
out << ariel << " " << perimeriel;
}
int main()
{
Read();
Solve();
return 0;
}