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

typedef complex<double> P;


// 許容する誤差ε
#define EPS (1e-6)
// 2つのスカラーが等しいかどうか
#define EQ(a,b) (abs((a)-(b)) < EPS)
// 2つのベクトルが等しいかどうか
#define EQV(a,b) ( EQ((a).real(), (b).real()) && EQ((a).imag(), (b).imag()) )


// 内積 (dot product) : a・b = |a||b|cosΘ
double dot(P a, P b) {
  return (a.real() * b.real() + a.imag() * b.imag());
}

// 外積 (cross product) : a×b = |a||b|sinΘ
double cross(P a, P b) {
  return (a.real() * b.imag() - a.imag() * b.real());
}

// 2直線の直交判定 : a⊥b <=> dot(a, b) = 0
int is_orthogonal(P a1, P a2, P b1, P b2) {
  return EQ( dot(a1-a2, b1-b2), 0.0 );
}

// 2直線の平行判定 : a//b <=> cross(a, b) = 0
int is_parallel(P a1, P a2, P b1, P b2) {
  return EQ( cross(a1-a2, b1-b2), 0.0 );
}

// 点cが直線a,b上にあるかないか
int is_point_on_line(P a, P b, P c) {
  return EQ( cross(b-a, c-a), 0.0 );
}

/*
// 点cが線分a,b上にあるかないか(1)
int is_point_on_line(P a, P b, P c) {
  return EQ( cross(b-a, c-a), 0.0 ) &&
         (dot(b-a, c-a) > -EPS) &&
         (dot(a-b, c-b) > -EPS);
}

// 点cが線分a,b上にあるかないか(2)
int is_point_on_line(P a, P b, P c) {
  // |a-c| + |c-b| <= |a-b| なら線分上
  return (abs(a-c) + abs(c-b) < abs(a-b) + EPS);
}
*/

// 点a,bを通る直線と点cとの距離
double distance_l_p(P a, P b, P c) {
  return abs(cross(b-a, c-a)) / abs(b-a);
}

// 点a,bを端点とする線分と点cとの距離
double distance_ls_p(P a, P b, P c) {
  if ( dot(b-a, c-a) < EPS ) return abs(c-a);
  if ( dot(a-b, c-b) < EPS ) return abs(c-b);
  return abs(cross(b-a, c-a)) / abs(b-a);
}

// a1,a2を端点とする線分とb1,b2を端点とする線分の交差判定
int is_intersected_ls(P a1, P a2, P b1, P b2) {
  return ( cross(a2-a1, b1-a1) * cross(a2-a1, b2-a1) < EPS ) &&
         ( cross(b2-b1, a1-b1) * cross(b2-b1, a2-b1) < EPS );
}

// a1,a2を端点とする線分とb1,b2を端点とする線分の交点計算
P intersection_ls(P a1, P a2, P b1, P b2) {
  P b = b2-b1;
  double d1 = abs(cross(b, a1-b1));
  double d2 = abs(cross(b, a2-b1));
  double t = d1 / (d1 + d2);

  return a1 + (a2-a1) * t;
}

// a1,a2を通る直線とb1,b2を通る直線の交差判定
int is_intersected_l(P a1, P a2, P b1, P b2) {
  return !EQ( cross(a1-a2, b1-b2), 0.0 );
}

// a1,a2を通る直線とb1,b2を通る直線の交点計算
P intersection_l(P a1, P a2, P b1, P b2) {
  P a = a2 - a1; P b = b2 - b1;
  return a1 + a * cross(b, b1-a1) / cross(b, a);
}


int n;
vector<P> point;
const double R = 2000.0;
const double pi = acos(-1.0);


double calcS( const vector<P> &pt ){
	double Stwice = 0.0;
	
	for( int i = 2; i < pt.size(); ++i ){
		Stwice += 
			pt[i].real() * (pt[i-1].imag() - pt[0].imag()) +
			pt[i-1].real() * (pt[0].imag() - pt[i].imag()) +
			pt[0].real() * (pt[i].imag() - pt[i-1].imag());
	}
	
	return abs(Stwice) / 2.0;
}


double calcSfromrad( double theta ){
	int a1 = -1, a2 = -1;

	P p_line( R * cos( theta ), R * sin( theta ) );
	P p_line_neg = -p_line;
	P p_zero( 0, 0 );

	vector<P> pt;

	for( int i = 0; i < point.size(); ++i ){
		if( is_intersected_ls( point[i], point[(i+1)%n], p_zero, p_line ) ){
			a1 = i;
			pt.push_back( intersection_ls( point[a1], point[(a1+1)%n], p_line, p_line_neg ) );
			break;
		}
	}
	if( a1 < 0 ){
		abort();	//交点がないよ！よ！
	}

	for( int i = (a1 + 1) % n; i != a1; i = ( i + 1 ) % n ){
		pt.push_back( point[i] );

		if( is_intersected_ls( point[i], point[(i+1)%n], p_zero, p_line_neg) ){
			a2 = i;
			pt.push_back( intersection_ls( point[a2], point[(a2+1)%n], p_line, p_line_neg ) );
			break;
		}
	}
	if( a2 < 0 ){
		abort();	//交点がないよ！よ！
	}
	return calcS( pt );
}


P solve(){
	double Shalf = calcS( point ) / 2.0;
	double theta1 = 0.0;
	double theta2 = pi;

	double S1 = calcSfromrad( theta1 );
	double S2 = calcSfromrad( theta2 );

	if( abs( S1 - Shalf ) < EPS ){
		return P( R, 0.0 );
	}
	if( abs( S2 - Shalf ) < EPS ){
		return P( 0.0, R );
	}

	double theta3;
	double S3;
	while(true){
		theta3 = ( theta1 + theta2 ) / 2.0;
		S3 = calcSfromrad( theta3 );
if(S1<-EPS||S2<-EPS||S3<-EPS)abort();
		if( abs( S3 - Shalf ) < EPS ){

			return P( R * cos( theta3 ), R * sin( theta3 ) );
		}
		if( (S1 < Shalf) == (S3 < Shalf) ){
			theta1 = theta3;
			S1 = S3;
		}
		else{
			theta2 = theta3;
			S2 = S3;
		}
	}
}


int main(){
	int x, y;
	for( ; scanf("%d", &n), n != 0; ){
		for( int i = 0; i < n; ++i ){
			scanf("%d%d", &x, &y );
			point.push_back( P( x, y ) );
		}
		
		P ans = solve();
		printf("%.15f %.15f\n", ans.real(), ans.imag() );
		
		point.clear();
	}

}

Measured memory_bytes: 856