#include <bits/stdc++.h>
const int MOD = 1000000007;
void gcd(long long a, long long b, long long& d, long long& x, long long& y) {
  if (!b) {
    d = a;
    x = 1;
    y = 0;
  } else {
    gcd(b, a % b, d, y, x);
    y -= x * (a / b);
  }
}
long long mod(long long x, long long n) { return (x % n + n) % n; }
long long inv(long long a, long long n) {
  long long d, x, y;
  gcd(a, n, d, x, y);
  return d == 1 ? mod(x, n) : -1;
}
int n, m, g, ans;
long long f[200005];
int main() {
  scanf("%d%d%d", &n, &m, &g);
  if (!m) {
    ans = n % 2 == !g ? 1 : 0;
  } else {
    f[m] = m == 1 ? 1 : 0;
    f[m + 1] = 1 - f[m];
    long long c = 1;
    for (int i = m + 2; i <= m + n + 1; ++i) {
      c = c * (i - 1) % MOD * inv(i - m - 1, MOD) % MOD;
      f[i] = mod(c - f[i - 1], MOD);
    }
    ans = (int)(g ? f[m + n] : f[m + n + 1]);
  }
  printf("%d\n", ans);
}
