#include<bits/stdc++.h>
using namespace std;

typedef complex<double> P;
typedef pair<P,P> L;


const double EPS = 1e-8;
const double PI = 6.0 * asin(0.5);

namespace std {
  bool operator < (const P& a, const P& b){
    return fabs(real(a)-real(b)) < EPS ? imag(a) < imag(b) : real(a) < real(b);
  }
  bool operator == (const P& a, const P& b){
    return fabs(real(a)-real(b)) < EPS && fabs(imag(a) - imag(b)) < EPS;
  }
}

double dot(P a, P b){ return real(conj(a)*b); }
double cross(P a, P b){ return imag(conj(a)*b); }

int ccw(P a, P b, P c){
  b -= a;
  c -= a;
  if(cross(b,c) > EPS) return 1; //テ・ツ渉催ヲツ卍づィツィツ暗・ツ崢榲」ツつ?
  if(cross(b,c) < -EPS) return -1; // テヲツ卍づィツィツ暗・ツ崢榲」ツつ?
  if(dot(b,c) < -EPS) return 2; // c -- a -- b テ」ツ?ョテ、ツクツ?ァツ崢エテァツキツ?
  if(norm(b) < norm(c)) return -2; // a -- b -- c テ」ツ?ョテ、ツクツ?ァツ崢エテァツキツ?
  return 0; // a -- c -- b テ」ツ?ョテ、ツクツ?ァツ崢エテァツキツ?
}


double getDistanceSP(L s, P p){
  return abs(cross(s.second - s.first, p - s.first) / abs(s.second - s.first));  //テァツ崢エテァツキツ堙」ツ?ィテァツつケテ」ツ?ョティツキツ敕ゥツ崢「
}
// テッツシツ津ァツ崢エテァツキツ堙ゥツ鳴禿」ツ?ョテ、ツコツ、テァツつケ
P crossPoint(L l, L m){
  double A = cross(l.second - l.first, m.second - m.first);
  double B = cross(l.second - l.first, l.second - m.first);
  if(fabs(A) < EPS && fabs(B) < EPS) return m.first;
  else if(fabs(A) >= EPS) return m.first + B / A * (m.second - m.first);
}

bool ispara(L a,L b){
  P v1 = a.first - a.second;
  v1 /= abs(v1);
  P v2 = b.first - b.second;
  v2 /= abs(v2);
  if( v1 == v2 || -v1 == v2 ) return true;
  return false;
}

vector<L> getSS(L a,L b){
  vector<L> ret;
  if( ispara(a,b) ) {
    P vec = a.first - a.second;
    P nv = P(vec.imag()*1,vec.real()*-1);
    P ps = crossPoint( L(a.first, a.first + nv) , b );
    L r = L(  a.first + (ps - a.first) / 2.0 ,
              a.second + (ps - a.first) / 2.0 );
    ret.push_back( r );
    return ret;
  }
  P v = crossPoint(a,b);
  P ma = a.first - v;
  if( ma == P(0,0) ) ma = a.second - v;
  P mb = b.first - v;
  if( mb == P(0,0) ) mb = b.second - v;
  ma = ma / abs(ma);
  mb = mb / abs(mb);

  //cout << v << " "<< ma << " "<< mb << endl;
  
  ret.push_back( L( v, v + ma + mb ) );
  ma *= -1;
  ret.push_back( L( v, v + ma + mb ) );
}

int N;
int main(){
  while( cin >> N && N ){
    vector<L> s;
    for(int i=0;i<N;i++){
      int x1,y1,x2,y2;
      cin >> x1 >> y1 >> x2 >> y2;
      s.push_back( L( P(x1,y1), P(x2,y2) ) );      
    }

    if( N <= 2 ){
      cout << "Many" << endl;
    } else {
      
      vector<L> ss1,ss2; 
      ss1 = getSS(s[0],s[1]);
      ss2 = getSS(s[0],s[2]);


      vector<P> ans;
      for(int i=0;i<(int)ss1.size();i++){
        for(int j=0;j<(int)ss2.size();j++){
          P p  = crossPoint(ss1[i],ss2[j]);
          double d = getDistanceSP(s[0],p);
          //cout << ss1[i].first << " - " << ss1[i].second << endl;
          //cout << ss2[j].first << " - " << ss2[j].second << endl;
          //cout << p << " " << d<< endl;
          bool f = true;
          for(int k=1;k<N;k++){
            //cout << s[k].first << " "<< s[k].second << endl;
            //cout << getDistanceSP(s[k],p) << endl;
            if( fabs( d - getDistanceSP(s[k],p) ) < 1E-4 ) continue;
            f = false;
          }
          if( f ) ans.push_back( p );
        }        
      }

      sort(ans.begin(),ans.end());
      ans.erase(unique(ans.begin(),ans.end()),ans.end());

      if( ans.empty() ){
        cout << "None" << endl;
      } else if( ans.size() == 1 ){
        printf("%.10lf %.10lf\n",ans[0].real(),ans[0].imag());
      } else {
        cout << "Many" << endl;
      }
      

    }


  }
}

Measured memory_bytes: 1304