#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <cstdio>
#include <functional>
#define int long long
using namespace std;
 
const int depth = 16;
class Segtree {
	int data[1 << (depth + 1)];
public:
 
	void init() { for (int i = 0; i < (1 << (depth + 1)); i++) data[i] = 0; }
	
	//区間[l, r)にvを足す
	void add(int l, int r, int v, int a = 0, int b = (1 << depth), int id = 0) {
		if (l >= b || r <= a) return;
		if (l <= a && b <= r) { data[id] += v; return; }
		add(l, r, v, a, a + (b - a) / 2, id * 2 + 1);
		add(l, r, v, a + (b - a) / 2, b, id * 2 + 2);
	}
	
	//要素posの値
	int getNum(int pos) {
		pos = (1 << depth) - 1 + pos;
		int ret = data[pos];
		while (pos > 0) {
			pos = (pos - 1) / 2;
			ret += data[pos];
		}
		return ret;
	}
};

Segtree seg;

int getHanten(vector<double> a) {
	map<double, int> pos;
	int i;
	int n = a.size();
	
	seg.init();
	for (i = 0; i < n; i++) {
		pos[a[i]] = i;
	}
	for (i = 0; i < n; i++) seg.add(i, i + 1, i);
	
	sort(a.begin(), a.end());
	
	int ans = 0;
	for (i = 0; i < n; i++) {
		ans += seg.getNum(pos[a[i]]);
		seg.add(pos[a[i]] + 1, n, -1);
	}
	return ans;
}

int n;
int a[40000], b[40000], c[40000];

int countX(double l) {
	int i;
	typedef pair<double, double> P;
	vector<P> ys;
	
	for (i = 0; i < n; i++) {
		double y = (c[i] - a[i] * l) / (double)b[i];
		double katamuki = -a[i] / (double)b[i];
		ys.push_back(P(y, katamuki));
	}
	sort(ys.begin(), ys.end(), greater<P>());
	
	vector<double> a;
	for (i = 0; i < n; i++) {
		a.push_back(ys[i].second);
	}
	
	return getHanten(a);
}

int countY(double l) {
	int i;
	typedef pair<double, double> P;
	vector<P> xs;
	
	for (i = 0; i < n; i++) {
		double x = (c[i] - b[i] * l) / (double)a[i];
		double kt = -b[i] / (double)a[i];
		xs.push_back(P(x, kt));
	}
	sort(xs.begin(), xs.end(), greater<P>());
	
	vector<double> a;
	for (i = 0; i < n; i++) {
		a.push_back(xs[i].second);
	}
	return getHanten(a);
}

signed main() {
	int i;
	
	cin >> n;
	for (i = 0; i < n; i++) cin >> a[i] >> b[i] >> c[i];
	
	int k = n * (n - 1) / 2;
	double st, ed, mid;
	
	st = -1e+9;
	ed = 1e+9;
	for (i = 0; i < 70; i++) {
		mid = (st + ed) / 2;
		if (countX(mid) >= (k - 1) / 2 + 1) { ed = mid; }
		else { st = mid; }
	}
	double ansX = st;
	
	st = -1e+9;
	ed = 1e+9;
	for (i = 0; i < 70; i++) {
		mid = (st + ed) / 2;
		if (countY(mid) >= (k - 1) / 2 + 1) { ed = mid; }
		else { st = mid; }
	}
	double ansY = st;
	
	printf("%.14f %.14f\n", ansX, ansY);
	return 0;
}