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

inline double add(double a, double b){
    return abs(a+b)<(1e-10)*(abs(a)+abs(b)) ? 0.0 : a+b;
}

struct vec{
    long double x,y;
    vec operator-(vec b){
        return (vec){add(x,-b.x),add(y,-b.y)};
    }
    vec operator+(vec b){
        return (vec){add(x,b.x),add(y,b.y)};
    }
    vec operator*(long double d){
        return (vec){x*d,y*d};
    }
    bool operator==(vec b){
        return x==b.x&&y==b.y;
    }
    bool operator!=(vec b){
        return x!=b.x||y!=b.y;
    }
    bool operator<(const vec&r) const{
    return this->x==r.x?this->y<r.y:this->x<r.x;
    }
    long double dot(vec v){
        return add(x*v.x,y*v.y);
    }
    long double cross(vec v){
        return add(x*v.y,-y*v.x);
    }
    long double norm(){
        return sqrt(x*x+y*y);
    }
};

int main(){
    int N; cin>>N;
    vec V[N];
    for(auto& v:V) cin>>v.x>>v.y;
    if(N%2){
        cout << "NA" << endl;
        return 0;
    }
    vec M[N/2];
    for(int i=0;i<N/2;i++){
        M[i]=(V[i]+V[N/2+i])*0.5;
    }
    for(int i=1;i<N/2;i++){
        if((M[0]-M[i]).norm()>1e-4){
            cout << "NA" << endl;
            return 0;
        }
    }
    cout.precision(5);
    cout << fixed;
    cout << M[0].x << " " << M[0].y << endl;
    return 0;
}