#include<bits/stdc++.h>
using namespace std;
void *wmem;
template<class T1, class T2> void sortA_L(int N, T1 a[], T2 b[], void *mem = wmem){
  int i;
  pair<T1, T2> *arr=(pair<T1, T2> *) mem;
  for(i=0;i<N;i++){
    arr[i].first = a[i],
    arr[i].second = b[i];
  }
  sort(arr, arr+N);
  for(i=0;i<N;i++){
    a[i] = arr[i].first,
    b[i] = arr[i].second;
  }
}
template<class T1, class T2, class T3, class T4> void sortA_L(int N, T1 a[], T2 b[], T3 c[], T4 d[], void *mem = wmem){
  int i;
  pair<pair<T1, T2>, pair<T3, T4> > *arr=(pair<pair<T1, T2>, pair<T3, T4> > *) mem;
  for(i=0;i<N;i++){
    arr[i].first.first = a[i],
    arr[i].first.second = b[i],
    arr[i].second.first = c[i],
    arr[i].second.second = d[i];
  }
  sort(arr, arr+N);
  for(i=0;i<N;i++){
    a[i] = arr[i].first.first,
    b[i] = arr[i].first.second,
    c[i] = arr[i].second.first,
    d[i] = arr[i].second.second;
  }
}
void rd(int &x){
  int k, m=0;
  x=0;
  for(;;){
    k = getchar_unlocked();
    if(k=='-'){
      m=1;
      break;
    }
    if('0'<=k&&k<='9'){
      x=k-'0';
      break;
    }
  }
  for(;;){
    k = getchar_unlocked();
    if(k<'0'||k>'9'){
      break;
    }
    x=x*10+k-'0';
  }
  if(m){
    x=-x;
  }
}
void rd(double &x){
  scanf("%lf",&x);
}
void wt_L(double x){
  printf("%.15f",x);
}
char memarr[64000000];
double A[100000], B[100000], C[100000], x[100000];
int N, ind[100000];
template<class T> struct fenwick{
  T *data;
  int memory, size;
  void malloc(int mem){
    memory=mem;
    data=(T*)std::malloc(sizeof(T)*mem);
  }
  void *malloc(int mem, void *workMemory){
    memory=mem;
    data=(T*)workMemory;
    return (void*)(data+mem);
  }
  void free(void){
    memory=0;
    free(data);
  }
  void init(int N){
    size=N;
    memset(data,0,sizeof(T)*N);
  }
  void add(int k, T val){
    while(k<size){
      data[k]+=val,
      k|=k+1;
    }
  }
  T get(int k){
    T res=0;
    while(k>=0){
      res+=data[k],
      k=(k&(k+1))-1;
    }
    return res;
  }
  T range(int a, int b){
    if(b==-1){
      b=size-1;
    }
    return get(b)-get(a-1);
  }
  int kth(T k){
    T v;
    int c, i=0, j=size;
    while(i<j){
      c=(i+j)/2;
      v=get(c);
      if(v<=k){
        i=c+1;
      }
      else{
        j=c;
      }
    }
    return i==size?-1:i;
  }
}
;
fenwick<int> t;
double solve(int mode){
  double a, b, c;
  int all=N * (N-1) / 2, cross, i, j, k, loop;
  if(mode==0){
    for(i=0;i<N;i++){
      x[i] = (-(A[i] * -1e18) + C[i]) / B[i];
    }
  }
  else{
    for(i=0;i<N;i++){
      x[i] = (-(B[i] * -1e18) + C[i]) / A[i];
    }
  }
  sortA_L(N, x, A, B, C);
  a = -1e18;
  b =  1e18;
  for(loop=0;loop<200;loop++){
    c = (a+b) / 2;
    if(mode==0){
      for(i=0;i<N;i++){
        x[i] = (-(A[i] * c) + C[i]) / B[i];
      }
    }
    else{
      for(i=0;i<N;i++){
        x[i] = (-(B[i] * c) + C[i]) / A[i];
      }
    }
    for(i=0;i<N;i++){
      ind[i] = i;
    }
    sortA_L(N, x, ind);
    cross = 0;
    t.init(N);
    for(i=N-1;i>=0;i--){
      cross += t.get(ind[i]);
      t.add(ind[i], 1);
    }
    if(cross > (all-1)/2){
      b = c;
    }
    else{
      a = c;
    }
  }
  return (a+b) / 2;
}
int main(){
  double x, y;
  wmem = memarr;
  rd(N);
  {
    int Lj4PdHRW;
    for(Lj4PdHRW=0;Lj4PdHRW<N;Lj4PdHRW++){
      rd(A[Lj4PdHRW]);
      rd(B[Lj4PdHRW]);
      rd(C[Lj4PdHRW]);
    }
  }
  t.malloc(N);
  x = solve(0);
  y = solve(1);
  wt_L(x);
  putchar_unlocked(' ');
  wt_L(y);
  putchar_unlocked('\n');
  return 0;
}
// cLay varsion 20170910-1

// --- original code ---
// template<class T>
// struct fenwick{
//   int size, memory; T *data;
//   void malloc(int mem){memory=mem;data=(T*)std::malloc(sizeof(T)*mem);}
//   void *malloc(int mem, void *workMemory){memory=mem;data=(T*)workMemory;return (void*)(data+mem);}
//   void free(void){memory=0;free(data);}
//   void init(int N){size=N;memset(data,0,sizeof(T)*N);}
//   void add(int k, T val){while(k<size)data[k]+=val,k|=k+1;}
//   T get(int k){T res=0;while(k>=0)res+=data[k],k=(k&(k+1))-1;return res;}
//   T range(int a, int b){if(b==-1)b=size-1;return get(b)-get(a-1);}
//   int kth(T k){int i=0,j=size,c;T v;while(i<j){c=(i+j)/2;v=get(c);if(v<=k)i=c+1;else j=c;}return i==size?-1:i;}
// };
// 
// int N;
// double A[100000], B[100000], C[100000];
// double x[100000]; int ind[100000];
// inplace_L fenwick<int> t;
// 
// double solve(int mode){
//   int i, j, k, loop;
//   int all = N * (N-1) / 2;
//   int cross;
//   double a, b, c;
// 
//   if(mode==0){
//     rep(i,N) x[i] = (-(A[i] * -1e18) + C[i]) / B[i];
//   } else {
//     rep(i,N) x[i] = (-(B[i] * -1e18) + C[i]) / A[i];
//   }
// 
//   sortA(N, x, A, B, C);
// 
//   a = -1e18;
//   b =  1e18;
//   rep(loop,200){
//     c = (a+b) / 2;
//     
//     if(mode==0){
//       rep(i,N) x[i] = (-(A[i] * c) + C[i]) / B[i];
//     } else {
//       rep(i,N) x[i] = (-(B[i] * c) + C[i]) / A[i];
//     }
// 
//     rep(i,N) ind[i] = i;
//     sortA(N, x, ind);
// 
//     cross = 0;
//     t.init(N);
//     for(i=N-1;i>=0;i--){
//       cross += t.get(ind[i]);
//       t.add(ind[i], 1);
//     }
// 
//     if(cross > (all-1)/2) b = c; else a = c;
//   }
//   return (a+b) / 2;
// }
// 
// {
//   double x, y;
//   rd(N,(A,B,C)(N));
// 
//   t.malloc(N);
//   
//   x = solve(0);
//   y = solve(1);
//   wt(x,y);
// }


Measured memory_bytes: 5504