#include <cstdio>
struct drept {
long long x1, y1, x2, y2;
} d1, d2, d3;
long long min (long long x, long long y) {
return x < y ? x : y;
}
long long max (long long x, long long y) {
return x > y ? x : y;
}
drept inter (drept d1, drept d2) {
drept d;
d.x1 = max (d1.x1, d2.x1);
d.x2 = min (d1.x2, d2.x2);
d.y1 = max (d1.y1, d2.y1);
d.y2 = min (d1.y2, d2.y2);
if (d.x1 > d.x2 || d.y1 > d.y2)
d.x1 = d.y1 = d.x2 = d.y2 = 0;
return d;
}
long long arie (drept d) {
return (d.x2 - d.x1) * (d.y2 - d.y1);
}
long long per (drept d) {
return (d.x2 - d.x1 + d.y2 - d.y1) * 2;
}
int main () {
freopen ("reuniune.in", "r", stdin);
freopen ("reuniune.out", "w", stdout);
scanf ("%I64d %I64d %I64d %I64d", &d1.x1, &d1.y1, &d1.x2, &d1.y2);
scanf ("%I64d %I64d %I64d %I64d", &d2.x1, &d2.y1, &d2.x2, &d2.y2);
scanf ("%I64d %I64d %I64d %I64d", &d3.x1, &d3.y1, &d3.x2, &d3.y2);
printf ("%I64d ", arie (d1) + arie (d2) + arie (d3) - arie ( inter (d1, d2) ) - arie ( inter (d1, d3) ) - arie ( inter (d2, d3) ) + arie ( inter (inter (d1, d2), d3)));
printf ("%I64d ", per (d1) + per (d2) + per (d3) - per ( inter (d1, d2) ) - per ( inter (d1, d3) ) - per ( inter (d2, d3) ) + per ( inter (inter (d1, d2), d3)));
return 0;
}