# include <cstdio>
# define max(a,b) (a > b ? a : b);
# define min(a,b) (a < b ? a : b);
using namespace std;
struct camp
{
long long x0, x1, y0, y1;
}a, b, c;
camp intersectie(camp a, camp b)
{
camp rez;
rez.x0 = max(a.x0, b.x0); rez.y0 = max(a.y0, b.y0);
rez.x1 = min(a.x1, b.x1); rez.y1 = min(a.y1, b.y1);
return rez;
}
long long arie(camp a)
{
if (a.x0 <= a.x1 && a.y0 <= a.y1)
{
return (a.x1 - a.x0) * (a.y1 - a.y0);
}
return 0;
}
long long perimetru(camp a)
{
if (a.x0 <= a.x1 && a.y0 <= a.y1)
{
return ((a.x1 - a.x0) + (a.y1 - a.y0)) << 1;
}
return 0;
}
long long p, ar;
int main()
{
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
scanf("%lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld",&a.x0,&a.y0,&a.x1,&a.y1,&b.x0,&b.y0,&b.x1,&b.y1,&c.x0,&c.y0,&c.x1,&c.y1);
//printf("%d %d %d %d\n",rez1.x0,rez1.y0,rez1.x1,rez1.y1);
ar = arie(a) + arie(b) + arie(c)
- arie(intersectie(a,b))
- arie(intersectie(b,c))
- arie(intersectie(a,c))
+ arie(intersectie(intersectie(a,b),c));
p = perimetru(a) + perimetru(b) + perimetru(c)
- perimetru(intersectie(a,b))
- perimetru(intersectie(b,c))
- perimetru(intersectie(a,c))
+ perimetru(intersectie(intersectie(a,b),c));
printf("%lld %lld",ar,p);
return 0;
}