Problem:
Convex-Cut

N個の頂点からなる凸多角形が与えられる。各頂点の座標は反時計周りに(X1, Y1), (X2 ,Y2), ……, (XN, YN)で表わされる。
点Pを通るどのような直線で凸多角形を切断しても、切断後に得られる2つの凸多角形の面積が等しいような点Pの座標を求めよ。

Input

入力は以下の形式で与えられる。

N
X1 Y1
X2 Y2
……
XN YN

Constraints

入力は全て整数である

3 ≤ N ≤ 50

0 ≤ |Xi|, |Yi| ≤ 1000000

入力の多角形は単純な凸多角形である。

出力は、出力座標を(X, Y)、厳密解を(cX, cY)とした時にmax(|X-cX|, |Y-cY|) ≤ 0.0001を満たす必要がある

Output

問題文の条件を満たす点があるのならば、その点の座標を

X Y

の形式で出力せよ。
点が存在しない場合は"NA"と1行に出力せよ。

Sample Input 1

4
100 100
0 100
0 0
100 0

以下の図に対応する。

Output for the Sample Input 1

50.00000 50.00000

Sample Input 2

3
100 100
0 100
0 0

Output for the Sample Input 2

NA

以下の図に対応する。

Solution in Ruby (judge verdict: Wrong Answer)

require 'matrix'
ERROR = 1e-5
include Math
class Line
	#ax+by = c   (a > 0 or (a == 0 && b > 0))
	def self.through_two_points(x1, y1, x2, y2)
		a = y1 - y2
		b = x2 - x1
		c = a * x1 + b * y1
		new(a, b, c, x1, y1, x2, y2)
	end

	def cross_point(l)
		m = Matrix[
			[@a, @b],
			[l.a, l.b],
		];
		v = Vector[@c, l.c]
		(m.inv * v).to_a
	end

	private_class_method :new

	def initialize(*args)
		@a, @b, @c, @x1, @y1, @x2, @y2 = args	
	end

	attr_reader :a, :b, :c, :x1, :y1, :x2, :y2
end

n = gets.to_i
points = (1..n).map{ gets.split.map(&:to_i) }
vecs = (points + [points[0]]).each_cons(2).map do |(x1, y1), (x2, y2)|
	Vector[x2 - x1, y2 - y1]
end

R = vecs.map(&:r).inject(:+)

lines = []

get_bisection = -> do
	org = Vector[*points[0]]
	halfs = []
	r = 0
	until r >= R / 2
		halfs << vecs[halfs.size]
		r += halfs[-1].r
	end
	d = halfs[-1].r
	halfs[-1] *= (d - (r - R / 2)) / d
	vecs << vecs.shift
	points << points.shift
	Line.through_two_points(*org.to_a, *halfs.inject(org, &:+))
end

cx, cy = get_bisection[].cross_point(get_bisection[])
ok = (1..n).all? do
	l = get_bisection[]
	hypot(cx - (l.x1 + l.x2) / 2, cy - (l.y1 + l.y2) / 2) < ERROR
end

puts ok ? [cx, cy] * " " : 'NA'