#include <fstream>
#include <iostream>
using namespace std;
struct dreptunghi {
long long x1, y1, x2, y2;
};
dreptunghi D[4];
void read() {
int i;
ifstream f("reuniune.in");
for (i = 1; i <= 3; i++)
f >> D[i].x1 >> D[i].y1 >> D[i].x2 >> D[i].y2;
}
long long A, P;
void solve() {
int i;
long long A1, A2, A3, A12, A13, A23, A123;
// arie fiecare dreptunghi
A1 = A2 = A3 = A12 = A13 = A23 = A123 = 0;
A1 = abs(D[1].x2 - D[1].x1) * abs(D[1].y2 - D[1].y1);
A2 = abs(D[2].x2 - D[2].x1) * abs(D[2].y2 - D[2].y1);
A3 = abs(D[3].x2 - D[3].x1) * abs(D[3].y2 - D[3].y1);
if (min(D[1].x2, D[2].x2) >= max(D[1].x1, D[2].x1) && min(D[1].y2, D[2].y2) >= max(D[1].y1, D[2].y1))
A12 = abs(min(D[1].x2, D[2].x2) - max(D[1].x1, D[2].x1)) * abs(min(D[1].y2, D[2].y2) - max(D[1].y1, D[2].y1));
if (min(D[1].x2, D[3].x2) >= max(D[1].x1, D[3].x1) && min(D[1].y2, D[3].y2) >= max(D[1].y1, D[3].y1))
A13 = abs(min(D[1].x2, D[3].x2) - max(D[1].x1, D[3].x1)) * abs(min(D[1].y2, D[3].y2) - max(D[1].y1, D[3].y1));
if (min(D[2].x2, D[3].x2) >= max(D[2].x1, D[3].x1) && min(D[2].y2, D[3].y2) >= max(D[2].y1, D[3].y1))
A23 = abs(min(D[2].x2, D[3].x2) - max(D[2].x1, D[3].x1)) * abs(min(D[2].y2, D[3].y2) - max(D[2].y1, D[3].y1));
if (min(D[1].x2, min(D[2].x2, D[3].x2)) >= max(D[1].x1, max(D[2].x1, D[3].x1)) && min(D[1].y2, min(D[2].y2, D[3].y2)) >= max(D[1].y1, max(D[2].y1, D[3].y1)))
A123 = abs(min(D[1].x2, min(D[2].x2, D[3].x2)) - max(D[1].x1, max(D[2].x1, D[3].x1))) * abs(min(D[1].y2, min(D[2].y2, D[3].y2)) - max(D[1].y1, max(D[2].y1, D[3].y1)));
// principiul includerii si excluderii
A = A1 + A2 + A3 - A12 - A13 - A23 + A123;
// perimetru fiecare dreptunghi
long long P1, P2, P3, P12, P13, P23, P123;
P1 = P2 = P3 = P12 = P13 = P23 = P123 = 0;
P1 = 2 * abs(D[1].x2 - D[1].x1) + 2 * abs(D[1].y2 - D[1].y1);
P2 = 2 * abs(D[2].x2 - D[2].x1) + 2 * abs(D[2].y2 - D[2].y1);
P3 = 2 * abs(D[3].x2 - D[3].x1) + 2 * abs(D[3].y2 - D[3].y1);
if (min(D[1].x2, D[2].x2) >= max(D[1].x1, D[2].x1) && min(D[1].y2, D[2].y2) >= max(D[1].y1, D[2].y1))
P12 = 2 * abs(min(D[1].x2, D[2].x2) - max(D[1].x1, D[2].x1)) + 2 * abs(min(D[1].y2, D[2].y2) - max(D[1].y1, D[2].y1));
if (min(D[1].x2, D[3].x2) >= max(D[1].x1, D[3].x1) && min(D[1].y2, D[3].y2) >= max(D[1].y1, D[3].y1))
P13 = 2 * abs(min(D[1].x2, D[3].x2) - max(D[1].x1, D[3].x1)) + 2 * abs(min(D[1].y2, D[3].y2) - max(D[1].y1, D[3].y1));
if (min(D[2].x2, D[3].x2) >= max(D[2].x1, D[3].x1) && min(D[2].y2, D[3].y2) >= max(D[2].y1, D[3].y1))
P23 = 2 * abs(min(D[2].x2, D[3].x2) - max(D[2].x1, D[3].x1)) + 2 * abs(min(D[2].y2, D[3].y2) - max(D[2].y1, D[3].y1));
if (min(D[1].x2, min(D[2].x2, D[3].x2)) >= max(D[1].x1, max(D[2].x1, D[3].x1)) && min(D[1].y2, min(D[2].y2, D[3].y2)) >= max(D[1].y1, max(D[2].y1, D[3].y1)))
P123 = 2 * abs(min(D[1].x2, min(D[2].x2, D[3].x2)) - max(D[1].x1, max(D[2].x1, D[3].x1))) + 2 * abs(min(D[1].y2, min(D[2].y2, D[3].y2)) - max(D[1].y1, max(D[2].y1, D[3].y1)));
// principiul includerii si excluderii
P = P1 + P2 + P3 - P12 - P13 - P23 + P123;
}
void output() {
ofstream g("reuniune.out");
g << A << ' ' << P;
g.close();
}
int main() {
read();
solve();
output();
return 0;
}