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


/**
 * @title
 */
public class ProblemC implements Runnable {

    BufferedReader in;
    PrintWriter out;
    StringTokenizer tok = new StringTokenizer("");

    public static void main(String[] args) {
        new Thread(null, new ProblemC(), "", 256 * (1L << 20)).start();
    }

    public void run() {
        try {
            long t1 = System.currentTimeMillis();
            in = new BufferedReader(new InputStreamReader(System.in));
            out = new PrintWriter(System.out);
            Locale.setDefault(Locale.US);
            solve();
            in.close();
            out.close();
            long t2 = System.currentTimeMillis();
            System.err.println("Time = " + (t2 - t1));
        } catch (IOException t) {
            t.printStackTrace(System.err);
            System.exit(-1);
        }
    }

    String readString() throws IOException {
        while (!tok.hasMoreTokens()) {
            tok = new StringTokenizer(in.readLine());
        }
        return tok.nextToken();
    }

    int readInt() throws IOException {
        return Integer.parseInt(readString());
    }

    long readLong() throws IOException {
        return Long.parseLong(readString());
    }

    double readDouble() throws IOException {
        return Double.parseDouble(readString());
    }
    // solution

    void solve() throws IOException {
        int n=readInt();
        int m=readInt();
        int t=readInt();
        long count = 0;
        long res1 = 1,res2 = 1;
        boolean[] divisionDone = new boolean[31];
        for (int i = 4; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                if(i+j==t) {
                    if(n-i >= i) {
                        for (int k = n - i +1; k <= n; k++) {
                            res1 *= (long)k;
                            if(i>=2) {
                                for (int l = 2; l <= i; l++) {
                                    if (res1 % l == 0 && !divisionDone[l]) {
                                        res1 /= (long) l;
                                        divisionDone[l] = true;
                                    }
                                }
                            }
                        }

                    }
                    else {
                        for (int k = i+1; k <= n; k++) {
                            res1 *= (long)k;
                            if(n-i>=2) {
                                for (int l = 2; l <= n-i; l++) {
                                    if (res1 % l == 0 && !divisionDone[l]) {
                                        res1 /= (long) l;
                                        divisionDone[l] = true;
                                    }
                                }
                            }
                        }
                    }
                    Arrays.fill(divisionDone,false);
                    if(m-j >= j) {
                        for (int k = m - j +1; k <= m; k++) {
                            res2 *= (long)k;
                            if(j>=2) {
                                for (int l = 2; l <= j; l++) {
                                    if (res2 % l == 0 && !divisionDone[l]) {
                                        res2 /= (long) l;
                                        divisionDone[l] = true;
                                    }
                                }
                            }
                        }

                    }
                    else {
                        for (int k = j+1; k <= m; k++) {
                            res2 *= (long)k;
                            if(m-j>=2){
                                for (int l = 2; l <= m-j; l++) {
                                    if(res2%l == 0 && !divisionDone[l]) {
                                        res2 /= (long)l;
                                        divisionDone[l] = true;
                                    }
                                }
                            }
                        }
                    }
                    count += res1*res2;
                    res1=res2=1;
                    Arrays.fill(divisionDone,false);
                }
                else if(i+j > t)
                    break;
            }
        }
        out.println(count);
    }

}