/*
   題意:給出n個點的坐標,現要求一個點(x,0),使得這n個點離它最遠的點的距離最小
   二分距離limit,對每個點,可知道所求的點的坐標范圍[xi-s,xi+s]
   然后判斷這所有n個坐標范圍是否有交集  O(n)做到!!

   注意的地方:
   1)題目要求1e-5,  由于有平方,所以EPS開到1e-11
   2)如果比較有加了EPS,那么自己調用函數時也需要加EPS
     統一加,同一不加!!
 
*/
#include 
<iostream>
#include 
<cstdio>
#include 
<cstring>
#include 
<cmath>
#include 
<string>
#include 
<vector>
#include 
<algorithm>

using namespace std;

const double EPS = 1e-10;
const double DINF = 1e10;

const int MAXN = 50010;

struct Point{double x,y;}pt[MAXN];

int n;
double ans;

int sign(double x)
{
    
return x<-EPS?-1:x>EPS;
}

bool possible(double limit)
{
   
// printf("limit  %f\n",limit);
    double left = -DINF;
    
double right = DINF;
    
for(int i=0;i<n;i++)
    {
        
double delta = limit*limit - pt[i].y*pt[i].y;
        
if(sign(delta)<0)return false;
        
double S = sqrt(delta+EPS);
        
double _left = pt[i].x-S;
        
double _right = pt[i].x+S;
        
//O(n)求交集
        left = max(left,_left);
        right 
= min(right,_right);
        
if(sign(left-right)>0)return false;
    }
    ans 
= left;
    
return true;
}

int main()
{
#ifdef ONLINE_JUDGE
#else
    freopen(
"in","r",stdin);
#endif

    
while(scanf("%d",&n),n)
    {
        
for(int i=0;i<n;i++)
            scanf(
"%lf%lf",&pt[i].x,&pt[i].y);
        
double left = 0.0,right = DINF;
        
for(int cnt = 0;right-left>EPS && cnt <= 100;cnt++)//100次一般來說夠了
        {
            
double mid = (right+left)/2.0;
            
if(possible(mid))right = mid ;
            
else left = mid;
        }
        printf(
"%.9f %.9f\n",ans,left);
    }
    
return 0;
}