#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 long int Pozx[6];
long long int Pozy[6];
int k = 0; long long int a, b, c, d, x, y, z, t;
pair <long long int, long long int> X(long long int x0, long long int x1, long long int y0, long long int y1, long long int x00, long long int x01, long long int y00, long 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 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;
}