class Integer def combination(k) return 0 if k < 0 self.factorial/(k.factorial*(self-k).factorial) end def permutation(k) self.factorial/(self-k).factorial end def factorial return 1 if self == 0 (1..self).inject(:*) end end class Yukicoder def initialize n = gets.to_i answer = 0.0 1.upto(n) do |i| if i == 1 answer += 1.0 else size = i.combination(2) answer += 2 * Rational(1, i) [*(1..i-1)].combination(2) do |list| answer += Rational(list[0]*list[1], size) end end end puts answer end end Yukicoder.new