#include <bits/stdc++.h>
const int kN = 300000 + 5;
const int MOD = (int)1e9 + 7;
int Inv[kN], Finv[kN], F[kN], n, m, k;
int pascal[kN];
int binom(int a, int b) {
  if (b < 0 || b > a) return 0;
  return F[a] * 1LL * Finv[b] % MOD * Finv[a - b] % MOD;
}
inline void add(int &a, int b) {
  a += b;
  if (a >= MOD) a -= MOD;
}
int power(int a, int b, int p) {
  int ret = 1;
  for (; b; b >>= 1, a = a * 1LL * a % MOD)
    if (b & 1) ret = ret * 1LL * a % MOD;
  return ret;
}
int main() {
  Inv[1] = 1;
  for (int i = 2; i < kN; ++i)
    Inv[i] = (MOD - MOD / i) * 1LL * Inv[MOD % i] % MOD;
  F[0] = Finv[0] = 1;
  for (int i = 1; i < kN; ++i) {
    F[i] = F[i - 1] * 1LL * i % MOD;
    Finv[i] = Finv[i - 1] * 1LL * Inv[i] % MOD;
  }
  scanf("%d%d%d", &n, &m, &k);
  pascal[0] = 1;
  for (int i = 1; i <= m + k; ++i) {
    pascal[i] = (pascal[i - 1] << 1) % MOD;
    if (i >= m + 1) add(pascal[i], MOD - binom(i - 1, m));
    if (i >= k + 1) add(pascal[i], MOD - binom(i - 1, i - (k + 1)));
  }
  int result = 0;
  int t = n + m + k;
  for (int i = n; i <= t; ++i) {
    add(result, binom(i - 1, n - 1) * 1LL * power(3, t - i, MOD) % MOD *
                    pascal[i - n] % MOD);
  }
  printf("%d\n", result);
}
