#include <fstream>
using namespace std;
int max(int a, int b) {
if (a >= b) return a;
else return b;
}
int min(int a, int b) {
if (a < b) return a;
else return b;
}
int main() {
ifstream f("reuniune.in");
ofstream g("reuniune.out");
long long coord[3][5], xDown, yDown, xUp, yUp, surfI = 0, surf = 0, per = 0, area1 = 0, area2 = 0, area3 = 0;
for ( int i = 0; i < 3; i++ )
for ( int j = 0; j < 4; j++ )
f >> coord[i][j];
for ( int i = 0; i < 3; i++ )
coord[i][4] = (coord[i][2] - coord[i][0]) * (coord[i][3] - coord[i][1]);
// coordonatele intersectiei celor 3 dreptunghiuri
xDown = max(coord[0][0],max(coord[1][0],coord[2][0]));
yDown = max(coord[0][1],max(coord[1][1],coord[2][1]));
xUp = min(coord[0][2],min(coord[1][2],coord[2][2]));
yUp = min(coord[0][3],min(coord[1][3],coord[2][3]));
// aria intersectiei celor 3 dreptunghiuri
if ( (xDown < xUp) && (yDown < yUp) ) {
surfI = (yUp - yDown) * (xUp - xDown);
}
// ariile comune pentru fiecare cupla de 2 dreptunghiuri
if ( (min(coord[0][2],coord[1][2]) > max(coord[0][0],coord[1][0])) && (min(coord[0][3],coord[1][3]) > max(coord[0][1],coord[1][1])) )
area1 = (min(coord[0][2],coord[1][2]) - max(coord[0][0],coord[1][0])) * (min(coord[0][3],coord[1][3]) - max(coord[0][1],coord[1][1]));
if ( (min(coord[0][2],coord[2][2]) > max(coord[0][0],coord[2][0])) && (min(coord[0][3],coord[2][3]) > max(coord[0][1],coord[2][1])) )
area2 = (min(coord[0][2],coord[2][2]) - max(coord[0][0],coord[2][0])) * (min(coord[0][3],coord[2][3]) - max(coord[0][1],coord[2][1]));
if ( (min(coord[1][2],coord[2][2]) > max(coord[1][0],coord[2][0])) && (min(coord[1][3],coord[2][3]) > max(coord[1][1],coord[2][1])) )
area3 = (min(coord[1][2],coord[2][2]) - max(coord[1][0],coord[2][0])) * (min(coord[1][3],coord[2][3]) - max(coord[1][1],coord[2][1]));
// aria totala a desenului
surf = coord[0][4] + coord[1][4] + coord[2][4] + surfI - area1 - area2 - area3;
// perimetrul total al desenului
for ( int j = 0; j < 2; j++ )
per += 2 * (max(coord[0][j+2],max(coord[1][j+2],coord[2][j+2])) - min(coord[0][j],min(coord[1][j],coord[2][j])));
g << surf << " " << per;
return 0;
}