#include <stdio.h>
typedef struct{
long long x1, x2, y1, y2;
}dreptunghi;
long long max2(long long a, long long b){
if(a > b) return a;
return b;
}
long long min2(long long a, long long b){
if(a < b) return a;
return b;
}
long long supr2(dreptunghi a, dreptunghi b, dreptunghi *c){
(*c).x1 = max2(a.x1, b.x1);
(*c).x2 = min2(a.x2, b.x2);
(*c).y2 = min2(a.y2, b.y2);
(*c).y1 = max2(a.y1, b.y1);
if((*c).x1 > (*c).x2 || (*c).y2 < (*c).y1) return 0;
return ((*c).x2 - (*c).x1) * ((*c).y2 - (*c).y1);
}
long long supr3(dreptunghi a, dreptunghi b, dreptunghi c, dreptunghi *e){
dreptunghi d;
long long rez;
rez = supr2(a, b, &d);
if(rez == 0) return 0;
rez = supr2(d, c, e);
if(rez == 0) return 0;
return ((*e).x2 - (*e).x1) * ((*e).y2 - (*e).y1);
}
long long perim2(dreptunghi a, dreptunghi b){
dreptunghi c;
supr2(a, b, &c);
return 2 * (c.x2 - c.x1 + c.y2 - c.y1);
}
long long perim3(dreptunghi a, dreptunghi b, dreptunghi c){
dreptunghi d;
supr3(a, b, c, &d);
return 2 * (d.x2 - d.x1 + d.y2 - d.y1);
}
long long main(){
FILE *in = fopen("reuniune.in", "r");
int i;
dreptunghi dr[3];
for(i = 0; i < 3; i++){
fscanf(in, "%lld%lld%lld%lld", &dr[i].x1, &dr[i].y1, &dr[i].x2, &dr[i].y2);
}
fclose(in);
long long supr, perim;
dreptunghi aux;
supr = supr2(dr[0], dr[0], &aux) + supr2(dr[1], dr[1], &aux) + supr2(dr[2], dr[2], &aux)
- supr2(dr[0], dr[1], &aux) - supr2(dr[0], dr[2], &aux) - supr2(dr[1], dr[2], &aux)
+ supr3(dr[0], dr[1], dr[2], &aux);
perim = perim2(dr[0], dr[0]) + perim2(dr[1], dr[1]) + perim2(dr[2], dr[2])
- perim2(dr[0], dr[1]) - perim2(dr[0], dr[2]) - perim2(dr[1], dr[2])
+ perim3(dr[0], dr[1], dr[2]);
FILE *out = fopen("reuniune.out", "w");
fprintf(out, "%lld %lld", supr, perim);
fclose(out);
return 0;
}