#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define minim(a,b) ((a)<(b)?(a):(b))
#define maxim(a,b) ((a)>(b)?(a):(b))
#define in "reuniune.in"
#define out "reuniune.out"
long double Ax, Ay, Bx, By;
long double Cx, Cy, Dx, Dy;
long double Ex, Ey, Fx, Fy;
long double Ox1, Ox2, Oy1, Oy2;
long double Px1, Py1, Px2, Py2;
long double aria;
long double perim;
int main ( void )
{
freopen ( in, "r", stdin );
freopen ( out, "w", stdout );
scanf ( "%llf%llf%llf%llf%llf%llf%llf%llf%llf%llf%llf%llf", &Ax, &Ay, &Bx, &By, &Cx, &Cy, &Dx, &Dy, &Ex, &Ey, &Fx, &Fy );
// prima intersectie de dreptunghiuri
Ox1 = maxim ( Ax, Cx );
Oy1 = maxim ( Ay, Cy );
Ox2 = minim ( Bx, Dx );
Oy2 = minim ( By, Dy );
// cea de-a doua
Px1 = maxim ( Ox1, Ex );
Py1 = maxim ( Oy1, Ey );
Px2 = minim ( Ox2, Fx );
Py2 = minim ( Oy2, Fy );
aria = fabs( Px1-Px2 )*fabs( Py1-Py2 ); // intersectia celor 3
aria += fabs(Ax-Bx)*fabs(Ay-By); // I
aria += fabs(Cx-Dx)*fabs(Cy-Dy); // II
aria += fabs(Ex-Fx)*fabs(Ey-Fy); // III
perim += 2*( fabs(Px1-Px2) + fabs(Py1-Py2) ); // intersectia celor 3
perim += 2*( fabs(Ax-Bx) + fabs(Ay-By) ); // I
perim += 2*( fabs(Cx-Dx) + fabs(Cy-Dy) ); // II
perim += 2*( fabs(Ex-Fx) + fabs(Ey-Fy) ); // III
Ox1 = maxim ( Ax, Cx );
Oy1 = maxim ( Ay, Cy );
Ox2 = minim ( Bx, Dx );
Oy2 = minim ( By, Dy );
aria -= fabs(Ox1-Ox2)*fabs(Oy1-Oy2);
perim -= 2 * ( fabs(Ox1-Ox2) + fabs(Oy1-Oy2) );
Ox1 = maxim ( Ax, Ex );
Oy1 = maxim ( Ay, Ey );
Ox2 = minim ( Bx, Fx );
Oy2 = minim ( By, Fy );
aria -= fabs(Ox1-Ox2)*fabs(Oy1-Oy2);
perim -= 2 * ( fabs(Ox1-Ox2) + fabs(Oy1-Oy2) );
Ox1 = maxim ( Cx, Ex );
Oy1 = maxim ( Cy, Ey );
Ox2 = minim ( Dx, Fx );
Oy2 = minim ( Dy, Fy );
aria -= fabs(Ox1-Ox2)*fabs(Oy1-Oy2);
perim -= 2 * ( fabs(Ox1-Ox2) + fabs(Oy1-Oy2) );
printf ( "%.0llf %.0llf\n", aria, perim); // aria
return 0;
}