#pragma comment (linker,"/STACK:16777216")
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <deque>
#include <functional>
#include <string>
using namespace std;
const int inf = 2147483647;
const double pi = 2 * acos ( 0.0 );
const double eps = 1e-11;
int MIN ( int &a, int &b )
{
if ( a < b ) return a;
return b;
}
int MAX ( int &a, int &b )
{
if ( a > b ) return a;
return b;
}
double sres , lres , dif , tarea;
struct p {
double x , y;
}pp[8];
bool end_check() {
if( pp[0].x==0 && pp[0].y==0 && pp[2].x==0 && pp[2].y == 0 && pp[4].x == 0 && pp[4].y==0 && pp[6].x==0 && pp[6].y == 0 )
return true;
return false;
}
double quad_area( p a , p b , p c , p d ) {
double a1 , a2 , r;
a1 = a.x*b.y + b.x*c.y + c.x*d.y + d.x*a.y;
a2 = a.y*b.x + b.y*c.x + c.y*d.x + d.y*a.x;
r = 0.5 * ( a1 - a2 );
return r;
}
double tri_area( p a , p b , p c ) {
double a1 , a2 , r;
a1 = a.x*b.y + b.x*c.y + c.x*a.y;
a2 = a.y*b.x + b.y*c.x + c.y*a.x;
r = 0.5 * ( a1 - a2 );
return r;
}
void get_result() {
int i , j , k;
double a , b , d , mx , mn;
for( i = 0 ; i < 8 ; i++ ) {
if( i == 0 || i == 2 || i == 4 || i == 6 ) {
//printf( "Hello\n" );
for( j = 3 ; j <= 5 ; j++ ) {
k = ( i + j ) % 8;
if( j == 3 ) {
a = tri_area( pp[i] , pp[k-1] , pp[k] );
b = tarea - a;
}
else if( j == 4 ) {
a = tri_area( pp[i] , pp[k-2] , pp[k] );
b = tarea - a;
}
else {
a = tri_area( pp[i] , pp[k] , pp[k+1] );
b = tarea - a;
}
if( a > b + eps )
mx = a , mn = b;
else
mx = b , mn = a;
if( ( mx - mn ) < dif )
dif = mx - mn , lres = mx , sres = mn;
}
}
else {
for( j = 2 ; j <= 6 ; j++ ) {
if( j == 2 || j == 3 ) {
if( j == 2 ) k = 1;
else k = 2;
a = tri_area( pp[i] , pp[(i+j)%8-k] , pp[(i+j)%8] );
b = tarea - a;
}
else if( j == 4 ) {
a = quad_area( pp[i] , pp[(i+1)%8] , pp[(i+3)%8] , pp[(i+j)%8] );
b = tarea - a;
}
else {
if( j == 6 ) k = 1;
else k = 2;
a = tri_area( pp[i] , pp[(i+j)%8] , pp[(i+j)%8+k] );
b = tarea - a;
}
if( a > b + eps )
mx = a , mn = b;
else
mx = b , mn = a;
if( ( mx - mn ) < dif )
dif = mx - mn , lres = mx , sres = mn;
}
}
}
}
int main ()
{
int cn = 0;
//freopen ( "input.txt", "r", stdin );
//freopen ( "output.txt", "w", stdout );
while( scanf( "%lf%lf%lf%lf%lf%lf%lf%lf" , &pp[0].x,&pp[0].y,&pp[2].x,&pp[2].y,&pp[4].x,&pp[4].y,&pp[6].x,&pp[6].y) != EOF ) {
if( end_check() ) break;
dif = inf;
pp[1].x = ( pp[0].x + pp[2].x ) / 2;
pp[1].y = ( pp[0].y + pp[2].y ) / 2;
pp[3].x = ( pp[2].x + pp[4].x ) / 2;
pp[3].y = ( pp[2].y + pp[4].y ) / 2;
pp[5].x = ( pp[4].x + pp[6].x ) / 2;
pp[5].y = ( pp[4].y + pp[6].y ) / 2;
pp[7].x = ( pp[6].x + pp[0].x ) / 2;
pp[7].y = ( pp[6].y + pp[0].y ) / 2;
tarea = quad_area(pp[0],pp[2],pp[4],pp[6]);
//printf("%lf\n", tarea);
get_result();
printf( "Cake %d: %.3lf %.3lf\n" , ++cn , sres + eps , lres + eps );
}
return 0;
}