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