#include <fstream.h>
#define max(a, b) a>=b?a:b
#define min(a, b) a<=b?a:b
struct Punct{
int x, y;
} ;
struct DREPTUNGHI{
Punct SS, DJ;
} a[7];
int intersect (DREPTUNGHI r1, DREPTUNGHI r2){
return r1.DJ.x>=r2.SS.x && r1.SS.x<=r2.DJ.x &&
r1.DJ.y<=r2.SS.y && r1.SS.y>=r2.DJ.y;
}
Punct StangaSus(DREPTUNGHI r1, DREPTUNGHI r2){
Punct A;
A.x=max(r1.SS.x, r2.SS.x); A.y = min(r1.SS.y, r2.SS.y);
return A;
}
Punct DreaptaJos(DREPTUNGHI r1, DREPTUNGHI r2){
Punct A;
A.x=min(r1.DJ.x, r2.DJ.x); A.y = max(r1.DJ.y, r2.DJ.y);
return A;
}
long long Arie(Punct A, Punct B){
return (B.x-A.x)*(A.y-B.y);
}
long long Perim(Punct A, Punct B){
return 2*((B.x-A.x)+(A.y-B.y));
}
int main(){
int i, x1, y1, x2, y2;
long long A0, A1, A2, A3, P0, P1, P2, P3;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
for(i=0; i<3; i++){
f>>x1>>y1>>x2>>y2;
a[i].SS.x = x1;
a[i].SS.y = y2;
a[i].DJ.x = x2;
a[i].DJ.y = y1;
}
if(intersect(a[0], a[1])){
a[3].SS = StangaSus(a[0], a[1]);
a[3].DJ = DreaptaJos(a[0], a[1]);
A0 = Arie(a[3].SS, a[3].DJ);
P0 = Perim(a[3].SS, a[3].DJ);
}
else {
A0 = 0;
P0 = 0;
}
if(intersect(a[1], a[2])){
a[4].SS = StangaSus(a[1], a[2]);
a[4].DJ = DreaptaJos(a[1], a[2]);
A1 = Arie(a[4].SS, a[4].DJ);
P1 = Perim(a[4].SS, a[4].DJ);
}
else {
A1 = 0;
P1 = 0;
}
if(intersect(a[0], a[2])){
a[5].SS = StangaSus(a[0], a[2]);
a[5].DJ = DreaptaJos(a[0], a[2]);
A2 = Arie(a[5].SS, a[5].DJ);
P2 = Perim(a[5].SS, a[5].DJ);
}
else {
A2 = 0;
P2 = 0;
}
if(intersect(a[2], a[3])){
a[6].SS = StangaSus(a[2], a[3]);
a[6].DJ = DreaptaJos(a[2], a[3]);
A3 = Arie(a[6].SS, a[6].DJ);
P3 = Perim(a[6].SS, a[6].DJ);
}
else {
A3 = 0;
P3 = 0;
}
g<<Arie(a[0].SS, a[0].DJ)+Arie(a[1].SS, a[1].DJ)+Arie(a[2].SS, a[2].DJ)-A0-A1-A2+A3<<" "<<Perim(a[0].SS, a[0].DJ)+Perim(a[1].SS, a[1].DJ)+Perim(a[2].SS, a[2].DJ)-P0-P1-P2+P3<<"\n";
f.close();
g.close();
return 0;
}