#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
const long long MOD = 1e9 + 7;
long long inv[N], fact[N];
long long bpow(long long a, long long b) {
  if (b == 0) return 1;
  long long x = bpow(a, b / 2);
  return b & 1 ? x * x % MOD * a % MOD : x * x % MOD;
}
long long c(long long a, long long b) {
  if (a > b) return 0;
  return fact[b] * inv[a] % MOD * inv[b - a] % MOD;
}
int main() {
  int n, m;
  bool g;
  cin >> n >> m >> g;
  fact[0] = inv[0] = 1;
  for (int i = 1; i < N; i++) {
    fact[i] = fact[i - 1] * i % MOD;
    inv[i] = inv[i - 1] * bpow(i, MOD - 2) % MOD;
  }
  long long ans = 0;
  while (n > 0) {
    if (!g) {
      ans += c(n, n + m - 1);
      ans %= MOD;
    }
    g = !g;
    n--;
  }
  if ((g && m <= 1) || (!g & m > 1)) ans++;
  cout << ans;
}
