#include <bits/stdc++.h>
using namespace std;
int N, M, K;
long long ans;
long long fact[900002], inv[900002], three[900002], two[900002];
long long mul(long long x, long long y) {
  if (y == 0) return 1;
  long long tmp = mul(x, y / 2);
  tmp *= tmp;
  tmp %= 1000000007;
  if (y % 2 == 1) {
    tmp *= x;
    tmp %= 1000000007;
  }
  return tmp;
}
long long comb(long long x, long long y) {
  return (fact[x] * inv[x - y] % 1000000007) * inv[y] % 1000000007;
}
int main() {
  scanf("%d %d %d", &N, &M, &K);
  fact[0] = inv[0] = three[0] = two[0] = 1;
  for (int i = 1; i <= 900000; i++) {
    fact[i] = (fact[i - 1] * i) % 1000000007;
    inv[i] = mul(fact[i], 1000000007 - 2);
    three[i] = (three[i - 1] * 3) % 1000000007;
    two[i] = (two[i - 1] * 2) % 1000000007;
  }
  if (M < K) swap(M, K);
  for (int i = 0; i <= M + K; i++) {
    long long tmp;
    if (i <= K)
      tmp = two[i];
    else {
      tmp = 0;
      for (int j = max(0, i - K); j <= min(i, M); j++) {
        tmp += comb(i, j);
        tmp %= 1000000007;
      }
    }
    tmp *= comb(N - 1 + i, N - 1);
    tmp %= 1000000007;
    tmp *= three[M + K - i];
    tmp %= 1000000007;
    ans += tmp;
    ans %= 1000000007;
  }
  printf("%lld\n", ans);
  return 0;
}
