fact = [1] + (1..10).map {|x| (1..x).inject(:*)}
require 'matrix'

s, n, k = gets.split.map(&:to_i)
s = -s if s < 0

if s == 0
	puts 0
	exit
end

if n == 1
	puts s % k == 0 ? s / k : -1
	exit
end

i = 0
total = 0
a = (0..n*k).map { (0..n*k).map { 0 } }
(1..n).to_a.repeated_combination(k).each do |comb|
	step = comb.inject(:+)
	num = fact[k] / comb.group_by{|x| x}.values.map{|a| fact[a.size]}.inject(:*)
	(1..n*k).each do |i|
		a[i][(i-step).abs] += num
	end
	total += num
end

a.map!{|row| row.map {|x| x.to_f / total}}
a[0][0] = 1.0
m = Matrix[*a]
absorb = (Matrix.I(n*k) - m.minor(1..n*k, 1..n*k)).inv * Matrix[*[[1] * (n*k)].transpose].column(0)

if s <= n * k
	puts absorb[s-1].to_f
	exit
end

absorb = Vector[*(absorb.to_a + [1])]

b = (0..n*k).map { (0..n*k).map { 0 } } 
(0..n*k-1).each do |i|
	b[i][i+1] = 1
end
b[-2] = a[-1]
b[-2][-1] = 1
b[-1][-1] = 1

def exp(n, k, v)
	result = v	
	r = n
	while k > 0
		result = r * result if k & 1 == 1
		r *= r		
		k >>= 1
	end
	result
end

p exp(Matrix[*b], (s-n*k), absorb).to_a[-2].to_f