#include <bits/stdc++.h>
#define FOR(i, a, n) for(ll i = (ll)a; i < (ll)n; i++)
#define FORR(i, n) for(ll i = (ll)n - 1LL; i >= 0LL; i--)
#define rep(i, n) FOR(i, 0, n)
#define ALL(x) begin(x), end(x)
using namespace std;
using ll = long long;
constexpr ll Mod = 998244353;
constexpr ll mod = 1e9 + 7;
constexpr ll inf = 1LL << 60;
const double PI = acos(-1);
template <typename T1, typename T2> inline bool chmax(T1 &a, T2 b) {
    return a < b && (a = b, true);
}
template <typename T1, typename T2> inline bool chmin(T1 &a, T2 b) {
    return a > b && (a = b, true);
}
/*-------------------------------------------*/

template <typename T> struct BIT {
  private:
    int n;
    vector<T> dat; // 1-indexed

  public:
    BIT(vector<T> v) : n(v.size() - 1) {
        dat = v;
        for(int i = 1; i < n; i++)
            if(i + (i & -i) <= n) dat[i + (i & -i)] += dat[i];
    }
    BIT(int n) : n(n) { dat.assign(n + 1, 0); }
    void add(int k, T a) {
        while(k <= n) {
            dat[k] += a;
            k += k & -k;
        }
    }
    T sum(int a) {
        T ret = 0;
        while(a) {
            ret += dat[a];
            a -= a & -a;
        }
        return ret;
    }
    T sum(int a, int b) { return sum(b) - sum(a - 1); }
    int lowerBound(int w) {
        if(w <= 0) return 0;
        int x = 0;
        for(int k = 1 << int(log2(n)); k; k /= 2) {
            if(x + k <= n && dat[x + k] < w) {
                x += k;
                w -= dat[x];
            }
        }
        return x + 1;
    }
};

struct Line {
    int a, b, c;
};

int n;
vector<Line> vec;

ll x;

bool fx(double mid) {
    vector<double> v;
    for(auto &&d : vec)
        v.push_back((-d.a * mid + d.c) / d.b);
    vector<double> z = v;
    sort(ALL(z));
    BIT<int> bit(n + 10);
    ll cnt = 0;
    bool b[100009]{};
    for(auto &&d : v) {
        int a = lower_bound(ALL(z), d) - z.begin();
        while(b[a])
            a++;
        b[a] = true;
        cnt += a - bit.sum(a + 1);
        bit.add(a + 1, 1);
    }
    return cnt < x;
}

bool fy(double mid) {
    vector<double> v;
    for(auto &&d : vec)
        v.push_back((-d.b * mid + d.c) / d.a);
    vector<double> z = v;
    sort(ALL(z));
    BIT<int> bit(n + 10);
    ll cnt = 0;
    bool b[100009]{};
    for(auto &&d : v) {
        int a = lower_bound(ALL(z), d) - z.begin();
        while(b[a])
            a++;
        b[a] = true;
        cnt += a - bit.sum(a + 1);
        bit.add(a + 1, 1);
    }
    return cnt < x;
}

int main() {
    cin.tie(nullptr);
    ios::sync_with_stdio(false);

    cout << fixed << setprecision(12);

    cin >> n;
    rep(i, n) {
        int a, b, c;
        cin >> a >> b >> c;
        vec.push_back(Line{a, b, c});
    }

    x = (n * (n - 1) + 3) / 4;

    sort(ALL(vec),
         [](Line a, Line b) { return (double)a.a / a.b < (double)b.a / b.b; });
    double l = -inf, r = inf;
    rep(i, 100) {
        double mid = (l + r) / 2;
        (fx(mid) ? l : r) = mid;
    }

    cout << l << " ";

    sort(ALL(vec),
         [](Line a, Line b) { return (double)a.b / a.a < (double)b.b / b.a; });
    l = -inf, r = inf;
    rep(i, 100) {
        double mid = (l + r) / 2;
        (fy(mid) ? l : r) = mid;
    }

    cout << l << "\n";

    return 0;
}

Measured memory_bytes: 4800