#include <bits/stdc++.h>
using namespace std;
using LL = long long;
const LL MOD = 1000000007ll;
LL m_pow(LL a, LL n) {
  if (n == 0) return 1;
  LL half = m_pow(a, n / 2);
  half *= half;
  half %= MOD;
  return (half * (n % 2 ? a : 1)) % MOD;
}
vector<LL> fact;
LL comb(LL n, LL r) {
  LL shi = fact[n];
  LL bo1 = m_pow(fact[r], MOD - 2);
  LL bo2 = m_pow(fact[n - r], MOD - 2);
  shi *= bo1;
  shi %= MOD;
  shi *= bo2;
  shi %= MOD;
  return shi;
}
int main() {
  fact.push_back(1);
  for (int i = 1; i < 5e6; ++i) fact.push_back(fact.back() * i % MOD);
  int N, M, K;
  cin >> N >> M >> K;
  LL val = 1;
  LL ans = 0;
  for (int P = N; P <= N + M + K; ++P) {
    int down = P - N - K;
    int up = M;
    if (P != N) val *= 2;
    val %= MOD;
    if (down > 0) {
      val -= comb(P - N - 1, down - 1);
      val += MOD;
      val %= MOD;
    }
    if (P - N > up) {
      val -= comb(P - N - 1, up);
      val += MOD;
      val %= MOD;
    }
    LL plus = val;
    plus *= m_pow(3, N + M + K - P);
    plus %= MOD;
    plus *= comb(P - 1, N - 1);
    plus %= MOD;
    ans += plus;
    ans %= MOD;
    cerr << plus << endl;
  }
  cout << ans << endl;
  return 0;
}
