There are n boys and m girls attending a theatre club. To set a play "The Big Bang Theory", they need to choose a group containing exactly t actors containing no less than 4 boys and no less than one girl. How many ways are there to choose a group? Of course, the variants that only differ in the composition of the troupe are considered different.

Perform all calculations in the 64-bit type: long long for С/С++, int64 for Delphi and long for Java.

Input

The only line of the input data contains three integers n, m, t (4 ≤ n ≤ 30, 1 ≤ m ≤ 30, 5 ≤ t ≤ n + m).

Output

Find the required number of ways.

Please do not use the %lld specificator to read or write 64-bit integers in С++. It is preferred to use cin, cout streams or the %I64d specificator.

Examples

Input

5 2 5


Output

10


Input

4 3 5


Output

3
import java.io.*;
import java.util.*;
import java.math.*;

public class C131{

	public static BufferedReader read = null;
	public static PrintWriter out = null;
	public static StringTokenizer token = null;
	
	
	public static void solve()
	{
		int n = nint(), m = nint(), t = nint();
		//answer:
		// (n choose 4) * (m choose 1) * ((n+m-5) choose (t-5))
		long[][] c = new long[n+m+1][n+m+1];
		//c[i][j] is  i choose j
		c[0][0]=1;
		for(int i = 1; i<=n+m; i++)
		{
			for(int j=0; j<=n+m; j++)
			{
				if(j == 0) c[i][j] = 1;
				else if(j > i) break;
				else if(j == 1) c[i][j] = i;
				else
				{
					c[i][j] = c[i-1][j-1]+c[i-1][j];
				}
			}
		}
		long sum = 0;
		int k = t-5;
		while(k>=0)
		{
			sum+=c[n][4+k]*c[m][1+(t-5-k)];
			k--;
		}
		out.println(sum);
		
	}
	
	public static void main(String[] args)
	{
		read = new BufferedReader(new InputStreamReader(System.in));
		out = new PrintWriter(System.out);
		solve();
		out.flush();
		out.close();
		
	}
	
	// i/o functions
	public static String next() // returns the next string
	{
		while(token == null || !token.hasMoreTokens())
		{
			try {
				token = new StringTokenizer(read.readLine());
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return token.nextToken();
	}
	
	public static int nint()
	{
		return Integer.parseInt(next());
	}
	public static long nlong()
	{
		return Long.parseLong(next());
	}
	public static double ndouble()
	{
		return Double.parseDouble(next());
	}
	public static int[] narr(int n)
	{
		int[] a = new int[n];
		for(int i=0; i<n; i++) a[i] = nint();
		return a;
	}
	
	public static long[] nal(int n)
	{
		long[] a = new long[n];
		for(int i=0; i<n; i++) a[i] = nlong();
		return a;
	}
	
	
}
