#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class BIT {
public:
	vector<int>dat; int size_ = 0;

	void init(int sz) {
		size_ = sz + 2;
		dat.resize(size_ + 2, 0);
	}
	void add(int pos, int x) {
		pos++;
		while (pos <= size_) {
			dat[pos] += x;
			pos += (pos&-pos);
		}
		return;
	}
	int sum(int pos) {
		int s = 0; pos++;
		while (pos >= 1) {
			s += dat[pos];
			pos -= (pos&-pos);
		}
		return s;
	}
};

long long hanten(vector<long long>E) {
	BIT Z; Z.init(E.size() + 2);
	long long Y = 0;
	for (int i = 0; i < E.size(); i++) {
		Y += (long long)(i - Z.sum(E[i]));
		Z.add(E[i], 1);
	}
	return Y;
}

long long N; long double A[100009], B[100009], C[100009];
int D1[100009];

long long solve_x(long double P1) {
	P1 -= 1e-13;
	vector<pair<long double, int>> vec1, vec2;
	for (int i = 0; i < N; i++) vec1.push_back(make_pair((C[i] - A[i] * -1000000000.0L) / B[i], i));
	for (int i = 0; i < N; i++) vec2.push_back(make_pair((C[i] - A[i] * P1) / B[i], i));

	sort(vec1.begin(), vec1.end());
	sort(vec2.begin(), vec2.end());

	for (int i = 0; i < vec1.size(); i++) D1[vec1[i].second] = i;
	
	vector<long long>G;
	for (int i = 0; i < vec2.size(); i++) G.push_back(D1[vec2[i].second]);
	
	return hanten(G);
}

long long solve_y(long double P1) {
	P1 -= 1e-13;
	vector<pair<long double, int>> vec1, vec2;
	for (int i = 0; i < N; i++) vec1.push_back(make_pair((C[i] - B[i] * -1000000000.0L) / A[i], i));
	for (int i = 0; i < N; i++) vec2.push_back(make_pair((C[i] - B[i] * P1) / A[i], i));

	sort(vec1.begin(), vec1.end());
	sort(vec2.begin(), vec2.end());

	for (int i = 0; i < vec1.size(); i++) D1[vec1[i].second] = i;

	vector<long long>G;
	for (int i = 0; i < vec2.size(); i++) G.push_back(D1[vec2[i].second]);

	return hanten(G);
}

int main() {
	cin >> N;
	for (int i = 0; i < N; i++) cin >> A[i] >> B[i] >> C[i];

	long long ZENBU = N * (N - 1) / 2;
	long long BORDER = (ZENBU + 1) / 2;

	long double L1 = -1e9, R1 = 1e9, M1;
	for (int i = 0; i < 80; i++) {
		M1 = (L1 + R1) / 2;
		long long G = solve_x(M1);
		if (G >= BORDER) R1 = M1;
		else L1 = M1;
	}

	long double L2 = -1e9, R2 = 1e9, M2;
	for (int i = 0; i < 80; i++) {
		M2 = (L2 + R2) / 2;
		long long G = solve_y(M2);
		if (G >= BORDER) R2 = M2;
		else L2 = M2;
	}

	printf("%.12Lf %.12Lf\n", M1, M2);
	return 0;
}