#include <bits/stdc++.h>
int take() {
  int n;
  scanf("%d", &n);
  return n;
}
double ttake() {
  double n;
  scanf("%lf", &n);
  return n;
}
long long takes() {
  long long n;
  scanf("%lld", &n);
  return n;
}
int cas;
using namespace std;
bool approximatelyEqual(float a, float b, float epsilon) {
  return fabs(a - b) <= ((fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
bool essentiallyEqual(float a, float b, float epsilon) {
  return fabs(a - b) <= ((fabs(a) > fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
bool definitelyGreaterThan(float a, float b, float epsilon) {
  return (a - b) > ((fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
bool definitelyLessThan(float a, float b, float epsilon) {
  return (b - a) > ((fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
long long male[35], female[35];
int main() {
  int tc = 1;
  while (tc--) {
    int n = take(), m = take(), t = take();
    for (int i = 1; i <= n; i += 1) {
      int u = min(i, n - i), v = max(i, n - i);
      long long cur = 1, vaag = 1;
      for (int k = 1; k <= u; k += 1) vaag *= k;
      for (int k = n; k >= v + 1; k--) {
        cur *= k;
        if (cur % vaag == 0) cur /= vaag, vaag = 1;
      }
      male[i] = cur;
    }
    for (int i = 1; i <= m; i += 1) {
      int u = min(i, m - i), v = max(i, m - i);
      long long cur = 1, vaag = 1;
      for (int k = 1; k <= u; k += 1) vaag *= k;
      for (int k = m; k >= v + 1; k--) {
        cur *= k;
        if (cur % vaag == 0) cur /= vaag, vaag = 1;
      }
      female[i] = cur;
    }
    unsigned long long ans = 0;
    for (int i = 4; i <= t - 1; i += 1) {
      if (i > n || t - i <= 0 || t - i > m) continue;
      ans += (male[i] * female[t - i]);
    }
    cout << ans << "\n";
  }
  { return 0; };
}
