#include<bits/stdc++.h>
#define db long double
#define ll long long
#define inf 2333333333333333.233
using namespace std;

struct L{
	db k,b;
}l[44000];
int n,id=0;
db now;
ll aim;

int c[44000];
struct Node{
	db w;
	int pos;
}nd[44000];

bool xxx(L l1,L l2){
	return l1.k>l2.k;
}
bool yyy(L l1,L l2){
	return ( (l1.k<0.0) ^ (l2.k<0.0) )?  l1.k>l2.k :l1.k<l2.k;
}

bool cmp(Node d1,Node d2){
	return d1.w<d2.w;
}

void add(int x){
	for (;x<=n;x+=x&-x) c[x]++;
}
int que(int x){
	int t=0; for (;x;x-=x&-x) t+=c[x]; return t;
}

ll doitx(){
	memset(c,0,sizeof c);
	ll res=0;
	for (int i=1;i<=n;i++){
		nd[i]=(Node){l[i].k*now+l[i].b,i};
	}
	sort(nd+1,nd+n+1,cmp);
	for (int i=1;i<=n;i++){
		add(nd[i].pos);
		res+=i-que(nd[i].pos);
	}
	return res;
}

ll doity(){
	memset(c,0,sizeof c);
	ll res=0;
	for (int i=1;i<=n;i++){
		nd[i]=(Node){(now-l[i].b)/l[i].k,i};
	}
	sort(nd+1,nd+n+1,cmp);
	for (int i=1;i<=n;i++){
		add(nd[i].pos);
		res+=i-que(nd[i].pos);
	}
	return res;
}

int main(){
	scanf("%d",&n);
	aim=((ll)n*(n-1)/2+1)/2;
	int x,y,z;
	for (int i=1;i<=n;i++){
		scanf("%d%d%d",&x,&y,&z);
		l[i].k=-(db)x/y; l[i].b=(db)z/y;
	}
	
	sort(l+1,l+n+1,xxx);
	db st=-inf,en=inf;
	for (int i=1;i<=100;i++){
		now=(st+en)/2.0;
		if (doitx()>=aim){
			en=now;
		}else{
			st=now;
		}
	}
	printf("%.20lf ",(double)(st+en)/2.0);
	
	sort(l+1,l+n+1,yyy);
	st=-inf,en=inf;
	for (int i=1;i<=100;i++){
		now=(st+en)/2.0;
		if (doity()>=aim){
			en=now;
		}else{
			st=now;
		}
	}
	printf("%.20lf",(double)(st+en)/2.0);
}