#include using namespace std; using ll = long long; const int MAXN = 1.2e6 + 5, Mod = 1e9 + 7; ll ans, fac[MAXN] = {1}, inv[MAXN], facinv[MAXN] = {1}, a[MAXN]; int p, q, r, n; ll C(int n, int m) { if (n < m) return (n == -1); return fac[n] * facinv[m] % Mod * facinv[n - m] % Mod; } int main() { ios::sync_with_stdio(0), cin.tie(0); cin >> p >> q >> r; n = p + q + r + 1; for (int i = 1; i <= n + max({p, q, r}); i++) { fac[i] = fac[i - 1] * i % Mod; inv[i] = (i > 1 ? (Mod - Mod / i) * inv[Mod % i] % Mod : 1); facinv[i] = facinv[i - 1] * inv[i] % Mod; } for (int i = 0; i <= n; i++) { a[i] = C(n, i) * ((n - i + 1) & 1 ? -1 : 1); //cout << a[i] << ' '; a[i] += (i ? a[i - 1] : 1), (a[i] *= (Mod + 1) / 2) %= Mod; (ans += a[i] * C(i + p - 1, p) % Mod * C(i + q - 1, q) % Mod * C(i + r - 1, r)) %= Mod; //cout << a[i] << ' ' << ans << " | "; } cout << (ans + Mod) % Mod; return 0; }