#include <bits/stdc++.h>
using namespace std;
long long modpow(long long x, long long n) {
  long long res = 1;
  while (n > 0) {
    if (n & 1) res = res * x % 1000000007;
    x = x * x % 1000000007;
    n >>= 1;
  }
  return res;
}
int main() {
  long long int n, m, g;
  cin >> n >> m >> g;
  if (g == n && m == 1) {
    cout << 0 << endl;
    return 0;
  }
  if (!n && g == m && g == 1) {
    cout << 1 << endl;
    return 0;
  }
  if (!n && g) {
    cout << 0 << endl;
    return 0;
  }
  if (!n && !g) {
    cout << 1 << endl;
    return 0;
  }
  if (!m) {
    if (n % 2 == g)
      cout << 0 << endl;
    else
      cout << 1 << endl;
    return 0;
  }
  long long fir = 1LL;
  long long sec = 1LL;
  for (int i = 0; i < m - 1; i++) {
    fir = (fir * (n - g + m - 1 - i)) % 1000000007;
  }
  for (int i = 0; i < m - 1; i++) {
    sec = (sec * (i + 1)) % 1000000007;
  }
  fir = (fir * modpow(sec, 1000000007 - 2LL)) % 1000000007;
  long long ret = fir;
  long long prev;
  for (int i = g + 2; i <= n; i += 2) {
    if (i == n && m == 1) break;
    prev = fir;
    prev = (prev * (n - i + 2)) % 1000000007;
    prev = (prev * (n - i + 1)) % 1000000007;
    long long t =
        ((((n + m - i + 1)) % 1000000007) * ((n + m - i) % 1000000007)) %
        1000000007;
    prev = (prev * modpow(t, 1000000007 - 2LL)) % 1000000007;
    ret += prev;
    ret %= 1000000007;
    fir = prev;
  }
  if (m == 1 && n % 2 != g) ret++;
  ret %= 1000000007;
  cout << ret << endl;
}
