#include <bits/stdc++.h>
static const int MAXN = 3e5 + 4;
static const int MODULUS = 1e9 + 7;
int n, m, k;
long long fact[MAXN * 3], fact_inv[MAXN * 3];
inline long long fpow(long long base, int exp) {
  long long ans = 1;
  for (; exp; exp >>= 1, (base *= base) %= MODULUS)
    if (exp & 1) (ans *= base) %= MODULUS;
  return ans;
}
void preprocess() {
  fact[0] = 1;
  for (int i = 1; i < MAXN * 3; ++i) fact[i] = fact[i - 1] * i % MODULUS;
  fact_inv[MAXN * 3 - 1] = fpow(fact[MAXN * 3 - 1], MODULUS - 2);
  for (int i = MAXN * 3 - 2; i >= 0; --i)
    fact_inv[i] = fact_inv[i + 1] * (i + 1) % MODULUS;
}
inline long long binom(int n, int m) {
  if (n < m)
    return 0;
  else
    return fact[n] * fact_inv[m] % MODULUS * fact_inv[n - m] % MODULUS;
}
int main() {
  preprocess();
  scanf("%d%d%d", &n, &m, &k);
  if (n > 1000) {
    puts("> <");
    return 0;
  }
  long long ans = 0;
  for (int s = n + 1; s <= n + m + k + 1; ++s) {
    for (int t = std::max(0, s - n - 1 - k); t <= m; ++t)
      (ans += binom(s - 2, n - 1) * binom(s - n - 1, t) % MODULUS *
              fpow(3, n + m + k + 1 - s)) %= MODULUS;
  }
  printf("%lld\n", ans);
  return 0;
}
