#include <bits/stdc++.h>

using namespace std;

const double eps = 1e-10;

struct point {
	double x, y;
	void scan() {
		scanf("%lf%lf", &x, &y);
	}
	point() {
	}
	point(const double & a, const double & b) : x(a), y(b) {
	}
	double sqrlen() const {
		return x * x + y * y;
	}
	double len() const {
		return sqrt(max(0., sqrlen()));
	}
	point zoom(const double & l) const {
		double lambda(l / len());
		return point(lambda * x, lambda * y);
	}
	point rev() const {
		return point(-y, x);
	}
	void print() const {
		printf("%.10f %.10f\n", x, y);
	}
};
double sqr(double x) { return x * x; }
point operator + (const point& p1, const point& p2) { return point(p1.x + p2.x, p1.y + p2.y); }
point operator - (const point& p1, const point& p2) { return point(p1.x - p2.x, p1.y - p2.y); }
point operator * (const point& p1, double d) { return point(p1.x * d, p1.y * d); }
point operator / (const point& p1, double d) { return point(p1.x / d, p1.y / d); }
int dcmp(double x) { return fabs(x) <= eps ? 0 : (x > 0 ? 1 : -1); }
double det(point p1, point p2) { return p1.x * p2.y - p1.y * p2.x; }
double dist(point p1, point p2) { return sqrt(sqr(p1.x - p2.x) + sqr(p1.y - p2.y)); }
point nor(point p) { return p / sqrt(max(0., sqr(p.x) + sqr(p.y))); }

struct Line {
	point s, d;
	Line(const point & a, const point & b) : s(a), d(b) {
	}
	Line() {
	}
} l[10001], p[10001][2];

int n;
point a[10001], b[10001];

point inter(point p, point v, point q, point w) {
	point u = p - q;
	double t = det(w, u) / det(v, w);
	return p + v * t;
}

double D(point p, point p1, point p2) {
	return fabs(det(p - p1, p - p2)) / dist(p1, p2);
}
bool operator < (const point& p1, const point& p2) {
	if (dcmp(p1.x - p2.x)) return p1.x < p2.x;
	if (dcmp(p1.y - p2.y)) return p1.y < p2.y;
	return false;
}
__inline double operator * (const point & a, const point & b) {
	return a.x * b.y - a.y * b.x;
}
__inline point intersection(const Line & a, const Line & b) {
	double lambda((b.s - a.s) * b.d / (a.d * b.d));
	return a.s + a.d * lambda;
}
__inline bool equal(const double & a, const double & b) {
	return dcmp(a - b) == 0;
}

__inline double dis(const point & a, const point & s, const point & t) {
	Line lp(a, (t - s).rev());
	point p(intersection(lp, Line(s, t - s)));
	return (a - p).len();
}
int main( ) {
	while (1) {
		scanf("%d", &n);
		if (n == 0) break;
		for (int i = 1; i <= n; i ++) {
			scanf("%lf %lf", &a[i].x, &a[i].y);
			scanf("%lf %lf", &b[i].x, &b[i].y);
		}
		if (n <= 2) { printf("Many\n"); continue; }
		for(int i(1); i <= 3; i++) {
			l[i] = Line(a[i], b[i] - a[i]);
		}
		for (int i = 1; i <= 2; i ++) {
			if (dcmp(l[i].d * l[i + 1].d) == 0) 
				p[i][0] = p[i][1] = Line((l[i].s + l[i + 1].s) * 0.5, l[i].d);
			else {
				p[i][0] = Line(intersection(l[i], l[i + 1]), (l[i].d.zoom(1) + l[i + 1].d.zoom(1)) * 0.5);
				p[i][1] = Line(intersection(l[i], l[i + 1]), (l[i].d.zoom(-1) + l[i + 1].d.zoom(1)) * 0.5);
			}
		}
		set<point> S;
		for (int i = 0; i < 2; i ++)
			for (int j = 0; j < 2; j ++) {
				point x = p[1][i].d;
				point y = p[2][j].d;

				if (dcmp(det(x, y)) == 0) continue;
				point o = intersection(p[1][i], p[2][j]);
				bool flag = false;
				for (int j = 2; j <= n; ++ j)
					if (dcmp(dis(o, a[j], b[j]) - dis(o, a[1], b[1]))) {
						flag = true;
						break;
					}
				if (flag == false) S.insert(o);
			}
		if (S.size() == 0) printf("None\n");
		else if (S.size() > 1) printf("Many\n");
		else S.begin() -> print();
	}
	return 0;
}

Measured memory_bytes: 1272