#include<bits/stdc++.h>
#define f first
#define s second
#define mp make_pair
#define inf 1000000000
#define eps (1e-11)
#define equals(a,b) (fabs((a)-(b))<eps)
using namespace std;

class Point{
public:
  double x,y;
  Point(double x=0,double y=0):x(x),y(y){}

  Point operator+(Point p){ return Point(x+p.x,y+p.y);}
  Point operator-(Point p){ return Point(x-p.x,y-p.y);}
  Point operator*(double k){ return Point(x*k,y*k);}
  Point operator/(double k){ return Point(x/k,y/k);}
  bool operator<(Point p)const{ return (x!=p.x ? x<p.x : y<p.y);}
  bool operator==(Point p)const{ return fabs(x-p.x)<eps && fabs(y-p.y)<eps;}

  double abs(){ return sqrt(norm());}
  double norm(){ return (x*x+y*y);}
};
typedef Point Vector;
typedef vector<Point> Polygon;

Point median_Point(Point a,Point b){
  Vector v=a-b;
  return b+(v/2);
}

Point Convexcut(Polygon p){
  Point res(inf,inf),tmp;
  int n=p.size();
  for(int i=0;i<n/2;i++){
    if(res.x==inf){
      res=median_Point(p[i],p[i+n/2]);
    }
    else {
      tmp=median_Point(p[i],p[i+n/2]);
      if((res.x-tmp.x)>eps || (res.y-tmp.y)>eps)return Point(inf,inf);
    }
  }
  return res;
}

int main()
{
  int n;
  Polygon p;

  cin>>n;
  p.resize(n);
  for(int i=0;i<n;i++)cin>>p[i].x>>p[i].y;

  if(n%2==1){
    cout<<"NA"<<endl;
  }else {
    Point ans=Convexcut(p);
    if(ans.x==inf)cout<<"NA"<<endl;
    else printf("%.10f %.10f\n",ans.x,ans.y);
  }
  return 0;
}