#include <bits/stdc++.h>
using namespace std;
const int MAXN = 6e5 + 10, MOD = 1e9 + 7;
int fac[MAXN], ifac[MAXN], f3[MAXN];
void init() {
  fac[0] = fac[1] = 1;
  for (int i = 2; i < MAXN; ++i) fac[i] = 1ll * fac[i - 1] * i % MOD;
  ifac[0] = ifac[1] = 1;
  for (int i = 2; i < MAXN; ++i)
    ifac[i] = MOD - 1ll * ifac[MOD % i] * (MOD / i) % MOD;
  for (int i = 2; i < MAXN; ++i) ifac[i] = 1ll * ifac[i - 1] * ifac[i] % MOD;
  f3[0] = 1;
  for (int i = 1; i < MAXN; ++i) f3[i] = 1ll * f3[i - 1] * 3 % MOD;
}
int C(int a, int b) {
  if (b < 0 || b > a) return 0;
  return 1ll * fac[a] * ifac[b] % MOD * ifac[a - b] % MOD;
}
int n, m, k;
int main() {
  init();
  cin >> n >> m >> k;
  int ans = 0, last = 1, st = 0, ed = 0;
  for (int i = 0; i <= m + k; ++i) {
    ans = (ans + 1ll * last * f3[m + k - i] % MOD * C(n + i - 1, n - 1)) % MOD;
    last = 2ll * last % MOD;
    last = (last + C(i, st - 1)) % MOD;
    last = (last + MOD - C(i, ed)) % MOD;
    if (i - st >= m) {
      last = (last + MOD - C(i + 1, st)) % MOD;
      st++;
    }
    if (ed < k) {
      ed++;
      last = (last + C(i + 1, ed)) % MOD;
    }
    if (st > ed) break;
  }
  cout << ans << endl;
  return 0;
}
