#include <bits/stdc++.h>
int n, m, k, Fac[600005], Inv[600005];
const int p = 1000000007;
inline long long C(const int n, const int m) {
  return (long long)Fac[n] * Inv[m] % p * Inv[n - m] % p;
}
inline long long Pow(long long a, long long b, long long s = 1) {
  for (; b; b >>= 1, a = a * a % p)
    if (b & 1) s = s * a % p;
  return s % p;
}
int main() {
  scanf("%d%d%d", &n, &m, &k), --n;
  long long Sum = 1, Ans = 1;
  for (int i = Fac[0] = 1; i <= 600000; ++i)
    Fac[i] = (long long)Fac[i - 1] * i % p;
  Inv[600000] = Pow(Fac[600000], p - 2);
  for (int i = 600000; i >= 1; --i) Inv[i - 1] = (long long)Inv[i] * i % p;
  for (int i = 1; i <= m + k; ++i) {
    Sum = (Sum << 1) % p;
    if (i > m) Sum = (Sum - C(i - 1, m) + p) % p;
    if (i > k) Sum = (Sum - C(i - 1, k) + p) % p;
    Ans = (Ans * 3 + C(n + i, i) * Sum) % p;
  }
  printf("%d\n", (int)Ans);
  return 0;
}
