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.BigInteger;

public class C {
    public static void main(String[] args) throws Exception {
        FastScannerC fs = new FastScannerC();
        PrintWriter out = new PrintWriter(System.out);

        BigInteger[] fact = new BigInteger[31];
        fact[0] = BigInteger.ONE;
        fact[1] = BigInteger.ONE;
        for(int i = 2; i <= 30; i++) {
//            System.out.printf("%d ", i);
            fact[i] = BigInteger.valueOf(i).multiply(fact[i-1]);
        }
        int numBoys = fs.nextInt(), numGirls = fs.nextInt(), need = fs.nextInt();
        BigInteger res = BigInteger.ZERO;
        for(int i = 4; i <= numBoys; i++) {
            //combination with i boys and need - i girls
            if(need - i > numGirls) continue;
            int left = need - i;
            if(left < 1) continue;
            BigInteger r = ncr(fact, numBoys, numGirls, i, left);
//            System.out.printf("%s\n", r.toString());
            res = res.add(r);
        }
        out.println(res.toString());

        out.close();
    }

    static BigInteger ncr(BigInteger[] fact, int numBoys, int numGirls, int needBoys, int needGirls) {
        BigInteger b1 = fact[numBoys].divide(fact[numBoys - needBoys].multiply(fact[needBoys]));
//        System.out.printf("%s %s %s\n", fact[numBoys].toString(), fact[numBoys - needBoys].toString(), fact[needBoys].toString());
        BigInteger b2 = fact[numGirls].divide(fact[numGirls - needGirls].multiply(fact[needGirls]));
//        System.out.printf("%s %s %s\n", fact[numGirls].toString(), fact[numGirls - needGirls].toString(), fact[needGirls].toString());
//        System.out.printf("%s %s\n", b1.toString(), b2.toString());
        return b1.multiply(b2);
    }

}

class FastScannerC {
    BufferedReader br;
    StringTokenizer st;

    public FastScannerC() {
        try	{
//            br = new BufferedReader(new FileReader("testdata.out"));
            br = new BufferedReader(new InputStreamReader(System.in));
            st = new StringTokenizer("");
        } catch (Exception e){e.printStackTrace();}
    }

    public String next() {
        if (st.hasMoreTokens())	return st.nextToken();
        try {st = new StringTokenizer(br.readLine());}
        catch (Exception e) {e.printStackTrace();}
        return st.nextToken();
    }

    public int nextInt() {return Integer.parseInt(next());}

    public long nextLong() {return Long.parseLong(next());}

    public double nextDouble() {return Double.parseDouble(next());}

    public String nextLine() {
        String line = "";
        try {line = br.readLine();}
        catch (Exception e) {e.printStackTrace();}
        return line;
    }

    public Integer[] nextIntegerArray(int n) {
        Integer[] a = new Integer[n];
        for(int i = 0; i < n; i++) a[i] = nextInt();
        return a;
    }

    public int[] nextIntArray(int n) {
        int[] a = new int[n];
        for(int i = 0; i < n; i++) a[i] = nextInt();
        return a;
    }

    public char[] nextCharArray() {
        return nextLine().toCharArray();
    }
}