# 中心座標と半径を求める
class SolvCircle

	LOOP_MAX = 100

	# 移動距離がこの値以下になったら処理を終了させる
	CONVRGV = 1.0e-10

	#
	#=== 円の中心座標と半径を求める
	#
	#_pt_x_ :: n個の点のx座標の配列
	#_pt_y_ :: n個の点のy座標の配列
	# 
	#返り値::配列を返す。[中心点のx座標, 中心点のy座標, 円の半径]
	#
	def solv_circle(pt_x, pt_y)
		mv_rate  = 0.5 # 移動係数
		max_dist = 0.0 # 中心点から最遠点までの距離
		xsv      = 0.0 # 中心点のx座標
		ysv      = 0.0 # 中心点のy座標
		cx       = 0.0 # 仮中心点のx座標
		cy       = 0.0 # 仮中心点のy座標
		k        = 0
		cvgflg   = false

		while (cvgflg == false)

			LOOP_MAX.times { |t|
				# 最遠点を求める
				max_dist = 0.0
				pt_x.length.times { |i|
					dist = distance(cx, cy, pt_x[i], pt_y[i])
					if (dist > max_dist)
						max_dist = dist
						k        = i
					end
				}

				# 仮の中心点を計算
				cx += (pt_x[k] - xsv) * mv_rate
				cy += (pt_y[k] - ysv) * mv_rate

				# 移動距離が境界値を下回っていればループを抜ける
				if (distance(cx, cy, xsv, ysv) <= CONVRGV)
					cx     = xsv
					cy     = ysv
					cvgflg = true
					break
				end

				xsv = cx
				ysv = cy
			}

			mv_rate /= 2.0

		end

		return [cx, cy, max_dist]
	end

	#
	#=== 二点の距離を求める
	#
	def distance(x1, y1, x2, y2)
		dx = x2 - x1
		dy = y2 - y1
		Math.sqrt(dx * dx + dy * dy)
	end
end

n = gets.chomp!.to_i
ptx = []
pty = []
n.times{
	a,b = gets.chomp!.split(/ /).map(&:to_i)
	ptx.push(a)
	pty.push(b)
}
hoge = SolvCircle.new()
x,y,r = hoge.solv_circle(ptx,pty)
puts r