#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007;
const int MX = 300010;
int N, M, K;
long long p3[MX], fact[MX], ifact[MX], inv[MX];
long long comb(int n, int r) {
  if (n < 0 || r < 0 || r > n) return 0;
  return fact[n] * ifact[r] % MOD * ifact[n - r] % MOD;
}
int main() {
  inv[1] = 1;
  for (int i = 2; i < MX; ++i) {
    inv[i] = inv[MOD % i] * (MOD - MOD / i) % MOD;
  }
  fact[0] = ifact[0] = p3[0] = 1;
  for (int i = 1; i < MX; ++i) {
    p3[i] = p3[i - 1] * 3 % MOD;
    fact[i] = fact[i - 1] * i % MOD;
    ifact[i] = ifact[i - 1] * inv[i] % MOD;
  }
  cin >> N >> M >> K;
  if (M > K) {
    swap(M, K);
  }
  long long ret = 0;
  long long la = -1;
  long long p2 = 1;
  for (int t = N; t <= N + M + K; ++t) {
    long long u = 0;
    int tt = t - N;
    if (tt <= M) {
      u = p2;
      if (tt == M) {
        la = p2;
      } else {
        p2 = p2 * 2 % MOD;
      }
    } else if (tt <= K) {
      la = la * 2 % MOD;
      la = (la - comb(tt - 1, M)) % MOD;
      if (la < 0) la += MOD;
      u = la;
    } else {
      la = la * 2 % MOD;
      la = (la - comb(tt - 1, M)) % MOD;
      la = (la - comb(tt - 1, K)) % MOD;
      if (la < 0) la += MOD;
      u = la;
    }
    u = u * p3[N + M + K - t] % MOD * comb(t - 1, N - 1);
    ret = (ret + u) % MOD;
  }
  cout << ret << endl;
  return 0;
}
