#include <cstdio>
#include <algorithm>
using namespace std;
struct rect {
long long x1, y1;
long long x2, y2;
rect() {}
rect(long long _x1, long long _y1, long long _x2, long long _y2):
x1(_x1), y1(_y1), x2(_x2), y2(_y2) {}
};
void swap(rect& a, rect& b)
{
rect c(a.x1, a.y1, a.x2, b.y2);
a = b;
b = c;
}
long long area(rect a)
{
return (a.x2 - a.x1) * (a.y2 - a.y1);
}
long long perimeter(rect a)
{
return 2 * (a.x2 - a.x1) + 2 * (a.y2 - a.y1);
}
rect intersect(rect a, rect b)
{
rect c(max(a.x1, b.x1), max(a.y1, b.y1),
min(a.x2, b.x2), min(a.y2, b.y2));
return c;
}
int main()
{
freopen("reuniune.in", "r", stdin);
freopen("reuniune.out", "w", stdout);
long long x1, y1, x2, y2;
rect r[3];
for (int i = 0; i < 3; ++i) {
scanf("%lld %lld %lld %lld", &x1, &y1, &x2, &y2);
r[i] = rect(x1, y1, x2, y2);
}
long long a = area(r[0]) + area(r[1]) + area(r[2]) -
area(intersect(r[0], r[1])) - area(intersect(r[1], r[2])) -
area(intersect(r[0], r[2]));
a += area(intersect(r[0], intersect(r[1], r[2])));
long long p = perimeter(r[0]) + perimeter(r[1]) + perimeter(r[2]) -
perimeter(intersect(r[0], r[1])) - perimeter(intersect(r[1], r[2])) -
perimeter(intersect(r[0], r[2]));
p += perimeter(intersect(r[0], intersect(r[1], r[2])));
printf("%lld %lld\n", a, p);
return 0;
}