#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#define FISIN "reuniune.in"
#define FISOUT "reuniune.out"
struct Range {
Range(long long aa, long long bb) : a(aa), b(bb) { }
long long a, b;
long long len() const { return b - a; }
Range i(const Range& r) {
long long new_min = std::max<long long>(a, r.a);
long long new_max = std::min<long long>(b, r.b);
if (new_max <= new_min) new_min = new_max = 0;
return Range(new_min, new_max);
}
};
struct Rectangle {
Rectangle(int a = 0, int b = 0, int c = 0, int d = 0)
: minx(a), miny(b), maxx(c), maxy(d) {}
long long minx, miny, maxx, maxy;
long long perim() const {
return 2 * ((maxx - minx) + (maxy - miny));
}
long long arie() const {
return (maxx - minx) * (maxy - miny);
}
Rectangle i(const Rectangle& r) const {
Range rx = Range(minx, maxx).i(Range(r.minx, r.maxx));
Range ry = Range(miny, maxy).i(Range(r.miny, r.maxy));
if (!rx.len() || !ry.len()) return Rectangle();
return Rectangle(rx.a, ry.a, rx.b, ry.b);
}
} a, b, c;
void read_rect(FILE *f, Rectangle* r) {
int a, b, c, d;
fscanf(f, "%d %d %d %d", &a, &b, &c, &d);
*r = Rectangle(a, b, c, d);
}
int main() {
FILE *fin = fopen(FISIN, "rt");
FILE *fout = fopen(FISOUT, "wt");
read_rect(fin, &a);
read_rect(fin, &b);
read_rect(fin, &c);
long long arie
= a.arie() + b.arie() + c.arie()
- a.i(b).arie() - a.i(c).arie() - b.i(c).arie()
+ a.i(b).i(c).arie();
long long perim
= a.perim() + b.perim() + c.perim()
- a.i(b).perim() - a.i(c).perim() - b.i(c).perim()
+ a.i(b).i(c).perim();
fprintf(fout, "%lld %lld\n", arie, perim);
fclose(fout);
fclose(fin);
return 0;
}