#include<cstdio>
#include<algorithm>
using namespace std;
struct point{
    int a, b, c;
}w[101000];
struct AA{
    int num;
    double y;
    bool operator<(const AA &p)const{
        return y<p.y;
    }
}P[101000];
int n, BIT[101000], Ord[101000];
void Add(int a){
    while(a<=n){
        BIT[a]++;
        a += (a&-a);
    }
}
int Sum(int a){
    int s = 0;
    while(a){
        s += BIT[a];
        a -= (a&-a);
    }
    return s;
}
long long Calc(double x){
    int i;
    for(i=1;i<=n;i++){
        P[i].y = -(w[i].c+x*w[i].a)/w[i].b;
        P[i].num = i;
        BIT[i] = 0;
    }
    sort(P+1,P+n+1);
    long long r = 0;
    for(i=n;i>=1;i--){
        r += Sum(Ord[P[i].num]);
        Add(Ord[P[i].num]);
    }
    return r;
}
double Get(){
    double b = -1e9, e = 1e9, mid;
    int i;
    for(i=1;i<=n;i++){
        P[i].y = -(w[i].c+(-1e9)*w[i].a)/w[i].b;
        P[i].num = i;
    }
    sort(P+1,P+n+1);
    for(i=1;i<=n;i++)Ord[P[i].num] = i;
    for(i=0;i<62;i++){
        mid = (b+e)*0.5;
        if(Calc(mid)*2 >= 1ll*n*(n-1)/2)e = mid;
        else b = mid;
    }
    return (b+e)*0.5;
}
int main(){
    int i;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        scanf("%d%d%d",&w[i].a,&w[i].b,&w[i].c);
        w[i].c = -w[i].c;
    }
    double x = Get();
    for(i=1;i<=n;i++)swap(w[i].a,w[i].b);
    double y = Get();
    printf("%.10f %.10f\n",x,y);
}