#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
long long fpow(long long b, long long x) {
  long long res = 1;
  while (x) {
    if (x & 1) res = (res * b) % MOD;
    b = (b * b) % MOD;
    x >>= 1;
  }
  return res;
}
long long c(long long k, long long r) {
  if (r < 0) return 0;
  if (r == 0) return 1;
  return c(k, r - 1) * (k - r + 1) % MOD * fpow(r, MOD - 2) % MOD;
}
int main() {
  long long n, m, g;
  cin >> n >> m >> g;
  if (m == 1) {
    if (n & 1) {
      if (g)
        cout << (n - 1) / 2 << endl;
      else
        cout << (n - 1) / 2 + 2 << endl;
    } else {
      if (g)
        cout << n / 2 + 1 << endl;
      else
        cout << n / 2 << endl;
    }
    return 0;
  }
  if (m == 0) {
    if (g == !(n & 1))
      printf("1\n");
    else
      printf("0\n");
    return 0;
  }
  if (n == 0) {
    if (g)
      printf("0\n");
    else
      printf("1\n");
    return 0;
  }
  long long k = 1 + g;
  long long C = c(n + m - k, m - 1);
  long long ans = C;
  for (k = k + 2; k <= n + 1; k += 2) {
    C = C * (n - k + 2) % MOD * (n - k + 3) % MOD *
        fpow(n + m - k + 2, MOD - 2) % MOD * fpow(n + m - k + 1, MOD - 2) % MOD;
    ans = (ans + C) % MOD;
  }
  cout << ans << endl;
  return 0;
}
