#include <bits/stdc++.h>
using namespace std;
const int maxm = 3e5 + 10;
const int Mod = 1e9 + 7;
int N, M, K, Max;
long long Fac[maxm], Inv1[maxm], Inv2[maxm], P[maxm];
long long C(int x, int y) { return Fac[x] * Inv2[y] % Mod * Inv2[x - y] % Mod; }
int main() {
  register int i, j;
  register long long Ans = 0;
  scanf("%d%d%d", &N, &M, &K);
  Max = N + M + K;
  Fac[0] = Fac[1] = Inv1[0] = Inv1[1] = Inv2[0] = Inv2[1] = 1;
  P[0] = 1, P[1] = 3;
  for (i = 2; i <= Max; i++) {
    Fac[i] = Fac[i - 1] * i % Mod;
    Inv1[i] = (Mod - Mod / i) * Inv1[Mod % i] % Mod;
    Inv2[i] = Inv2[i - 1] * Inv1[i] % Mod;
    P[i] = P[i - 1] * 3 % Mod;
  }
  if (M < K) swap(M, K);
  for (i = 0, j = 1; i <= M + K; i++) {
    Ans = (Ans + C(N - 1 + i, N - 1) * P[M + K - i] % Mod * j) % Mod;
    if (i < K)
      j = j * 2 % Mod;
    else if (i >= M)
      j = ((j << 1) - C(i, K) - C(i, i - M) + (Mod << 1)) % Mod;
    else
      j = ((j << 1) - C(i, K) + Mod) % Mod;
  }
  printf("%lld", Ans);
  return 0;
}
