package main
import (
"bufio"
"fmt"
"os"
)
const MOD int64 = 1000000007
func modPow(a, e int64) int64 {
res := int64(1)
for e > 0 {
if e&1 == 1 {
res = res * a % MOD
}
a = a * a % MOD
e >>= 1
}
return res
}
func main() {
in := bufio.NewReaderSize(os.Stdin, 1<<20)
var n, m, g int
fmt.Fscan(in, &n, &m, &g)
if m == 0 {
if ((n - 1) & 1) == g {
fmt.Println(1)
} else {
fmt.Println(0)
}
return
}
if m == 1 {
ans := 0
if g == 0 {
ans += (n + 1) / 2
} else {
ans += n / 2
}
if (1^(n&1)) == g {
ans++
}
fmt.Println(ans % int(MOD))
return
}
N := n + m
fac := make([]int64, N+1)
invfac := make([]int64, N+1)
fac[0] = 1
for i := 1; i <= N; i++ {
fac[i] = fac[i-1] * int64(i) % MOD
}
invfac[N] = modPow(fac[N], MOD-2)
for i := N; i >= 1; i-- {
invfac[i-1] = invfac[i] * int64(i) % MOD
}
comb := func(a, b int) int64 {
if b < 0 || b > a {
return 0
}
return fac[a] * invfac[b] % MOD * invfac[a-b] % MOD
}
var ans int64
for l := g; l <= n; l += 2 {
ans += comb(N-l-1, m-1)
if ans >= MOD {
ans -= MOD
}
}
fmt.Println(ans)
}