#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<iomanip>
#include<math.h>
#include<complex>
#include<queue>
#include<deque>
#include<map>
#include<set>
#include<bitset>
using namespace std;
#define REP(i,m,n) for(int i=(int)m ; i < (int) n ; i++ )
#define rep(i,n) REP(i,0,n)
typedef long long ll;
typedef pair<int,int> pint;
const int inf=1e9+7;
const ll longinf=1LL<<60 ;
const ll mod=1e9+7 ;
int dx[4]={1,0,-1,0} , dy[4]={0,1,0,-1} ;

const double eps=1e-6;
double add(double a,double b){
    if(abs(a+b)<eps)return 0;
    return a+b;
}

typedef pair<double,double> P;
P operator+(const P& x,const P& y){
    return {add(x.first,y.first),add(x.second,y.second)};
}

P operator-(const P& x,const P& y){
    return {add(x.first,-y.first),add(x.second,-y.second)};

}

P operator*(const P& x,const double& y){
    return {x.first*y,x.second*y};
}
double dot(P x,P y){
    return add(x.first*y.first,x.second*y.second);


}

double det(P x,P y){
    return add(x.first*y.second,-x.second*y.first);
}

bool onseg(P p1,P p2,P q){
    return det(p1-q,p2-q)==0 &&dot(p1-q,p2-q)<=0; 
}

P intersection(P p1,P p2,P q1,P q2){
    return p1+(p2-p1)*(det(q2-q1,q1-p1)/det(q2-q1,p2-p1));
}

bool cross(P p1,P p2,P q1,P q2){
    if(det(p1-p2,q1-q2)==0)return onseg(p1,p2,q1)||onseg(p1,p2,q2)||onseg(q1,q2,p1)||onseg(q1,q2,p2);
    P ret=intersection(p1,p2,q1,q2);
    return onseg(p1,p2,ret)&&onseg(q1,q2,ret);
}

double dist(P p1,P p2,P q){
    if(dot(q-p1,p2-p1)<=0)return sqrt(dot(q-p1,q-p1));
    if(dot(q-p2,p1-p2)<=0)return sqrt(dot(q-p2,q-p2));
    P d=p1-p2;
    P ret=q+P{d.second,-d.first};
    P h=intersection(p1, p2, q, ret);
    return sqrt(dot(q-h,q-h));
}
double d(P p,P q){
    return sqrt(dot(p-q,p-q));
}

double area(P p1,P p2,P p3){
    P q1=p2-p1,q2=p3-p1;
    return abs(det(q1,q2)/2);
}
double Parea(vector<P> vp){
    int m=vp.size();
    if(m<2)return 0;
    double ret=0;
    rep(i,m-2){
        ret+=area(vp[0],vp[i+1],vp[i+2]);
    }
    return ret;
}

int n;
P a[30];
double calc(double arg){
    P b={cos(arg),sin(arg)};
    b=b*300;
    while(onseg(b,b*(-1),a[0])){
        P c[n];
        rep(i,n)c[i]=a[(i+1)%n];
        rep(i,n)a[i]=c[i];
    }
    bool flag=(det(a[0],b)>0);
    vector<P> v[2];
    v[flag].push_back(a[0]);
    rep(i,n-1){
        if(cross(a[i],a[i+1],b,b*(-1))&&!onseg(b,b*(-1),a[i])){
            flag=1-flag;
            v[0].push_back(intersection(a[i], a[i+1], b, b*(-1)));
            v[1].push_back(intersection(a[i], a[i+1], b, b*(-1)));
        }
        v[flag].push_back(a[i+1]);
    }
    if(cross(a[0],a[n-1],b,b*(-1))&&!onseg(b,b*(-1),a[n-1])){
            v[0].push_back(intersection(a[0], a[n-1], b, b*(-1)));
            v[1].push_back(intersection(a[0], a[n-1], b, b*(-1)));
    }
    return Parea(v[0])-Parea(v[1]);
}

const double pi=acos(-1);
int main(){
    cout<<fixed<<setprecision(16);
    while(cin>>n,n!=0){
        rep(i,n)cin>>a[i].first>>a[i].second;
        double left=0,right=pi,mid;
        while(right-left>1e-10){
            double ll=calc(left);
            double rr=calc(right);
            mid=(left+right)/2;
            double mm=calc(mid);
            if(abs(mm)<1e-7)break;
            if(ll*mm>0)left=mid;
            else right=mid;
        }
        cout<<10*cos(mid)<<" "<<10*sin(mid)<<endl;
    }
    return 0;
}


Measured memory_bytes: 3688