As a big fan of Formula One, Charlie is really happy with the fact that he has to organize ticket sells for the next Grand Prix race in his own city. Unfortunately, the finacial crisis is striking everywhere and all the banknotes left in his country are valued either 10 euros or 20 euros. The price of all tickets for the race is 10 euros, so whenever someone comes to the ticket store only with 20 euro banknote Charlie must have a 10 euro banknote to give them change. Charlie realize that with the huge deficit of banknotes this could be a problem. Charlie has some priceless information but couldn't make use of it, so he needs your help. Exactly n + m people will come to buy a ticket. n of them will have only a single 10 euro banknote, and m of them will have only a single 20 euro banknote. Currently Charlie has k 10 euro banknotes, which he can use for change if needed. All n + m people will come to the ticket store in random order, all orders are equiprobable. Return the probability that the ticket selling process will run smoothly, i.e. Charlie will have change for every person with 20 euro banknote.

Input

The input consist of a single line with three space separated integers, n, m and k (0 ≤ n, m ≤ 105, 0 ≤ k ≤ 10).

Output

Output on a single line the desired probability with at least 4 digits after the decimal point.

Examples

Input

5 3 1


Output

0.857143


Input

0 5 5


Output

1


Input

0 1 0


Output

0

Difficulty: VERY_HARD
Tags: Combinatorics

Mathematics

Probability

Starter code:

Solutions:
(n, m, k) = map(int, input().split())
if k < m <= k + n:
	t = 1
	for i in range(k + 1):
		t *= (m - i) / (n + k - (i - 1))
	print(1 - t)
else:
	print(0 if m > n + k else 1)


(num10NotePeople, num20NotePeople, num10Notes) = input().split()
(num10NotePeople, num20NotePeople, num10Notes) = (int(num10NotePeople), int(num20NotePeople), int(num10Notes))
if num10Notes >= num20NotePeople:
	print(1)
elif num20NotePeople > num10NotePeople + num10Notes:
	print(0)
else:
	num = 1
	den = 1
	for i in range(num10Notes + 1):
		num *= num20NotePeople - i
		den *= num10NotePeople + i + 1
	prob = 1 - num / den
	print(prob)


import json
import sys

def main():
	(n, m, k) = map(int, input().strip().split())
	if n + k < m:
		print(0)
		return
	ans = 1.0
	for i in range(k + 1):
		ans *= (m - i) * 1.0 / (n + i + 1)
	print(1.0 - ans)
main()


import sys
from array import array
from math import log, e

def input():
	return sys.stdin.buffer.readline().decode('utf-8')
(n, m, k) = map(int, input().split())
if m <= k:
	print(1)
	exit()
if n + k < m:
	print(0)
	exit()
prob1 = 0.0
for i in range(m + n, m, -1):
	prob1 += log(i)
for i in range(2, n + 1):
	prob1 -= log(i)
prob2 = 0.0
for i in range(m + n, m - k - 1, -1):
	prob2 += log(i)
for i in range(2, n + k + 2):
	prob2 -= log(i)
print(1 - pow(e, prob2 - prob1))


def main():
	inp = input().split(' ')
	n = int(inp[0])
	m = int(inp[1])
	k = int(inp[2])
	if m - n > k:
		print(0)
	elif m <= k:
		print(1)
	else:
		det = 1
		num = 1
		for i in range(m, m - k - 1, -1):
			num *= i
		for i in range(n + 1, n + k + 2, 1):
			det *= i
		print(1 - num / det)
main()


(n, m, k) = map(int, input().split())
if k >= m:
	print(1)
elif k < m <= k + n:
	ans = 1
	for i in range(k + 1):
		ans *= (m - i) / (n + 1 + i)
	print(1 - ans)
else:
	print(0)


def find(A):
	(n, m, k) = A
	if m < k:
		return 1
	temp1 = 1
	temp2 = 1
	for i in range(k + 1):
		temp1 *= m - i
		temp2 *= n + i + 1
	return max(1 - temp1 / temp2, 0)
print(find(list(map(int, input().strip().split(' ')))))


(n, m, k) = map(int, input().split())
if m > k and m <= n + k:
	res = 1
	for x in range(k + 1):
		res *= (m - x) / (n + k - (x - 1))
	print(1 - res)
else:
	print(0 if m > n + k else 1)