#include <cstdio> #include <string> #include <cmath> #include <algorithm> usingnamespace std; #define _0 1e-10 int N, A, B, C; typedef struct ...{ double x, y; char ch; } Point; Point p[15]; double inline dabs ( double d ) ...{ return d < _0 ?-d : d; } int cmp ( Point &a, Point &b ) ...{ if ( a.y == b.y ) return a.x < b.x; return a.y < b.y; } int bCmp ( Point &a, Point &b, Point &c ) ...{ //if ac is longer than ab double del = ( c.x - a.x ) * ( c.x - b.x ) + ( c.y - a.y ) * ( c.y - b.y ); if ( del > _0 ) return1; if ( del <-_0 ) return-1; return0; } int crossDet ( Point &a, Point &b, Point &c ) ...{ //if ac is on left side of ab double del = ( b.x - a.x ) * ( c.y - a.y ) - ( c.x - a.x ) * ( b.y - a.y ); if ( del > _0 ) return1; if ( del <-_0 ) return-1; if ( bCmp ( a, b, c ) <=0 ) return0; return2; } int inArea ( int a, int b, int c, int d ) ...{ int x1 = crossDet ( p[a], p[b], p[d] ); int x2 = crossDet ( p[b], p[c], p[d] ); int x3 = crossDet ( p[c], p[a], p[d] ); if ( !x1 ||!x2 ||!x3 ) return1; if ( x1 == x2 && x2 == x3 ) return1; return0; } double calc ( int a, int b, int c ) ...{ double area = dabs ( 0.5* ( ( p[c].y - p[a].y ) * ( p[b].x - p[a].x ) - ( p[b].y - p[a].y ) * ( p[c].x - p[a].x ) ) ); int d; for ( d =0; d < N; d ++ ) ...{ if ( d == a || d == b || d == c ) continue; if ( inArea ( a, b, c, d ) ) return0.00; } return area; } int main () ...{ //freopen ( "in.txt", "r", stdin ); while ( scanf ( "%d ", &N ) && N ) ...{ int i; for ( i =0; i < N; i ++ ) scanf ( "%c %lf %lf ", &p[i].ch, &p[i].x, &p[i].y ); int a, b, c; double t, ans =-1; for ( a =0; a < N; a ++ ) for ( b = a +1; b < N; b ++ ) for ( c = b +1; c < N; c ++ ) if ( ( t = calc ( a, b, c ) ) > ans ) ans = t, A = p[a].ch, B = p[b].ch, C = p[c].ch; printf ( "%c%c%c ", A, B, C ); } return0; }