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.awt.List;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map.Entry;
import java.util.Queue;
import java.util.Scanner;
import java.util.Set;
import java.util.Stack;
import java.util.StringTokenizer;
import java.util.TreeMap;
import java.util.Vector;
 
 
public class Main {
	static boolean f =true;
	static boolean ff= true ;
	static long n,m;
	static long dpn[][]=new long[100][100];
	static long dpm[][]= new long[100][100];
	public static void main(String[] args) throws IOException{
		  	FastScanner sc = new FastScanner();
			PrintWriter out = new PrintWriter(System.out);
			for(int i=0;i<dpn.length;i++){
				Arrays.fill(dpn[i], -1);
				Arrays.fill(dpm[i], -1);
			}
		
			n =sc.nextLong();
			m=sc.nextLong();
			long t =sc.nextLong();
			BigInteger ans =BigInteger.ZERO;
			for(int i=1;i<=n;i++){
				BigInteger x =Cn(n,i);
						BigInteger y =Cm(m,t-i);
				BigInteger m =x.multiply(y);
				//System.out.println(x+" "+y);
				ans =ans.add(m);
				f=true; ff=true;
			}
			out.print(ans);
			out.close();
			
			
			
	
		 
	}
	public static BigInteger Cn(long n,long k){
		if((k <4 || k>n) &&f==true)
			return BigInteger.ZERO;
		if (k==0 && f)
			return BigInteger.ZERO;
		if(k==0)
			return BigInteger.ONE;
		f=false;
		if(n==k)
			return BigInteger.ONE;
		BigInteger x =fac(n);
		BigInteger y =fac(k);
		BigInteger z =fac(n-k);
		BigInteger ans =x.divide(y);
		ans =ans.divide(z);
		return ans;
		
		
	}
	public static BigInteger Cm(long n,long k){
		if((k<1 || k>m) && ff)
			return BigInteger.ZERO;
		if (k==0 && ff)
			return BigInteger.ZERO;
		if(k==0)
			return BigInteger.ONE;
		ff =false;
		if(n==k)
			return BigInteger.ONE;
		BigInteger x =fac(n);
		BigInteger y =fac(k);
		BigInteger z =fac(n-k);
		BigInteger ans =x.divide(y);
		ans =ans.divide(z);
		return ans;


		
		
	}
	public static BigInteger fac(long n){
		if(n==0 || n==1)
			return BigInteger.ONE;
		BigInteger ans =BigInteger.ONE;
		for(int i=1;i<=n;i++){
			ans =ans.multiply(BigInteger.valueOf(i));
			
		}
		return ans ;
	}
	


	
	
	
	
	static void generate(int[] p, int L, int R) {
		  if (L == R) {
			  //do some thing
		  
		  }else { // numbers at positions [0, L-1] are set, try to set L-th position
		    for (int i = L; i <= R; i++) {
		      int tmp = p[L]; p[L] = p[i]; p[i] = tmp;
		      generate(p, L+1, R);
		      tmp = p[L]; p[L] = p[i]; p[i] = tmp;
		    }
		  }
		}
	
}
		 


	
	
	
	











	
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
class FastScanner {
 
 
 
 
    BufferedReader br;
    StringTokenizer st;
 
    public FastScanner() {
        br = new BufferedReader(new InputStreamReader(System.in));
    }
 
    public FastScanner(String s) {
        try {
            br = new BufferedReader(new FileReader(s));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
 
    String nextToken() {
        while (st == null || !st.hasMoreElements()) {
            try {
 
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }
 
    int nextInt() {
        return Integer.parseInt(nextToken());
    }
 
    long nextLong() {
        return Long.parseLong(nextToken());
    }
 
    double nextDouble() {
        return Double.parseDouble(nextToken());
    }
 
 
}