#include <bits/stdc++.h>
using namespace std;
long long int One(long long int, long long int);
long long int Zero(long long int, long long int);
long long int n, m, q, Mod = 1000000007, fac[200010], ans;
long long int Pwr(long long int x, long long int p) {
  if (p == 0) return 1;
  if (p % 2 == 1) return (Pwr(x, p - 1) * x % Mod);
  long long int ret = (Pwr(x, p / 2) % Mod);
  return ((ret * ret) % Mod);
}
long long int Divide(long long int a, long long int b) {
  return (a * Pwr(b, Mod - 2) % Mod);
}
long long int NcR(long long int a, long long int b) {
  return Divide(fac[a], fac[a - b] * fac[b] % Mod) % Mod;
}
long long int One(long long int N, long long int M) {
  if (N < 0) return 0;
  if (N + M == 1) {
    if (M == 1) return 1;
    return 0;
  }
  return Zero(N - 1, M) % Mod;
}
long long int Zero(long long int N, long long int M) {
  if (N < 0) return 0;
  if (N + M == 1) {
    if (N == 1) return 1;
    return 0;
  }
  return (NcR(N + M - 1, M - 1) + One(N - 1, M)) % Mod;
}
int main() {
  scanf("%I64d %I64d %I64d", &n, &m, &q);
  fac[0] = 1;
  for (int i = 1; i <= n + m; i++) fac[i] = (fac[i - 1] * i) % Mod;
  if (q == 0)
    ans = Zero(n, m);
  else
    ans = One(n, m);
  printf("%I64d", ans);
  return 0;
}
