#include <fstream>
#include <utility>
#define max(x, y) (x>y ? x : y)
#define min(x, y) (x<y ? x : y)
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
long int Pozx[6];
long int Pozy[6];
int k = 0; long int a, b, c, d, x, y, z, t;
pair <long long int, long long int> X(long int x0, long int x1, long int y0, long int y1, long int x00, long int x01, long int y00, long int y01) {
pair<long long int, long long int> AS; AS.first = AS.second = 0;
a = max(x0, x00); b = min(x1, x01); c = max(y0, y00); d = min(y1, y01);
if (a<=b && c<=d) {
AS.first = (b - a)*(d - c); AS.second = 2 * (b - a + d - c); k++;
if (k == 6) { x = a; y = b; z = c; t = d; } return AS;
}
return AS;
}
int main()
{
long int i, Ar = 0, Su = 0;
for (i = 0; i<6; i++) fin >> Pozx[i] >> Pozy[i];
Ar = ((Pozx[1] - Pozx[0])*(Pozy[1] - Pozy[0]) + (Pozx[3] - Pozx[2])*(Pozy[3] - Pozy[2]) + (Pozx[5] - Pozx[4])*(Pozy[5] - Pozy[4]));
Su = 2 * (Pozx[1] - Pozx[0] + Pozy[1] - Pozy[0] + Pozx[3] - Pozx[2] + Pozy[3] - Pozy[2] + Pozx[5] - Pozx[4] + Pozy[5] - Pozy[4]);
Ar -= X(Pozx[0], Pozx[1], Pozy[0], Pozy[1], Pozx[2], Pozx[3], Pozy[2], Pozy[3]).first;
Su -= X(Pozx[0], Pozx[1], Pozy[0], Pozy[1], Pozx[2], Pozx[3], Pozy[2], Pozy[3]).second;
Ar -= X(Pozx[4], Pozx[5], Pozy[4], Pozy[5], Pozx[2], Pozx[3], Pozy[2], Pozy[3]).first;
Su -= X(Pozx[4], Pozx[5], Pozy[4], Pozy[5], Pozx[2], Pozx[3], Pozy[2], Pozy[3]).second;
Ar -= X(Pozx[0], Pozx[1], Pozy[0], Pozy[1], Pozx[4], Pozx[5], Pozy[4], Pozy[5]).first;
Su -= X(Pozx[0], Pozx[1], Pozy[0], Pozy[1], Pozx[4], Pozx[5], Pozy[4], Pozy[5]).second;
Ar += X(x, y, z, t, Pozx[2], Pozx[3], Pozy[2], Pozy[3]).first;
Su += X(x, y, z, t, Pozx[2], Pozx[3], Pozy[2], Pozy[3]).second;
fout << Ar << " " << Su;
return 0;
}