#include <iostream>
#include <complex>
#include <cmath>
#include <vector>
#include <cstdio>
using namespace std;

typedef complex<double> P;

double cross(const P &a, const P &b){
	return a.real() * b.imag() - a.imag() * b.real();
}

vector<P> intersect(const P &p1, const P &p2, double r){
	double d = abs(p2 - p1);
	double phi = arg(p2 - p1);
	double theta = acos(0.5 * d / r);
	
	vector<P> ret(2);

	ret[0] = p1 + polar(r, phi + theta);
	ret[1] = p1 + polar(r, phi - theta);
	return ret;
}

bool contains(const vector<P> &plg, const P &pt){
	int cnt = 0;
	double y = imag(pt);

	for(int i = 0; i < plg.size(); ++i){
		int j = (i + 1 == plg.size() ? 0: i + 1);

		double dyi = imag(plg[i]) - y;
		double dyj = y - imag(plg[j]);
		double tx = (dyi * real(plg[j]) + dyj * real(plg[i])) / (dyi + dyj);

		if(imag(plg[i]) >= y && imag(plg[j]) < y){
			if( tx < real(pt) ) ++cnt;
		}
		else if(imag(plg[i]) < y && imag(plg[j]) >= y){
			if( tx < real(pt) ) ++cnt;
		}
	}
	
	return (cnt % 2 != 0);
}

P centroid(const vector<P> &p){
	double sum = 0.0;
	P c;
	int n = p.size();

	for(int i = 0; i < n; ++i){
		int next = (i + 1) % n;

		double crs = cross(p[i], p[next]);
		c += (p[i] + p[next]) * crs;
		sum += crs;
	}
	
	return c / (3.0 * sum);
}

int main(){
	double pi = acos(-1.0);

	vector<P> pt;
	pt.reserve(102000);
	
	string type;
	double x, y, r;

	while( cin >> type, type[0] != 'e' ){
		pt.clear();
		
		cin >> x >> y;
		pt.push_back( P(x, y) );

		while( cin >> type, type[0] != 'c' ){
			if( type[0] == 'l' ){
				cin >> x >> y;
				pt.push_back( P(x, y) );
			}
			else{
				cin >> x >> y >> r;
				double absr = abs(r);
				
				P p(x, y);
				vector<P> intr = intersect(pt.back(), p, absr);

				P c;
				double crs = cross(p - pt.back(), intr[0] - pt.back());
				if( (r < 0) == (crs > 0) ){
					c = intr[0];
				}
				else{
					c = intr[1];
				}

				double arg1 = arg(pt.back() - c);
				double arg2 = arg(p - c);
				if( arg1 > arg2 + pi ){	arg2 += 2.0 * pi;	}
				else if( arg2 > arg1 + pi ){	arg1 += 2.0 * pi;	}

				double darg = arg2 - arg1;
				for(int j = 1; j <= 1000; ++j){
					pt.push_back( c + polar(absr, arg1 + j * 0.001 * darg ) );
				}
			}
		}
		
		P cent = centroid(pt);
		bool cont = contains(pt, cent);
		
		printf("%f %f %c\n", cent.real(), cent.imag(), cont ? '+' : '-' );
	}
}