#include <bits/stdc++.h>
using namespace std;
long long inv[900010], fac[900010], pow3[900010];
long long fsp(long long x, int y) {
  long long res = 1;
  while (y) {
    if (y & 1) res = res * x % 1000000007;
    x = x * x % 1000000007;
    y >>= 1;
  }
  return res;
}
long long C(int x, int y) {
  return fac[x] * inv[y] % 1000000007 * inv[x - y] % 1000000007;
}
int main() {
  pow3[0] = 1;
  fac[0] = 1;
  for (int i = 1; i <= 900000; i++) {
    pow3[i] = pow3[i - 1] * 3ll % 1000000007;
    fac[i] = fac[i - 1] * i % 1000000007;
  }
  inv[900000] = fsp(fac[900000], 1000000007 - 2);
  for (int i = 900000; i > 0; i--) inv[i - 1] = inv[i] * i % 1000000007;
  int n, m, k;
  while (scanf("%d%d%d", &n, &m, &k)) {
    n--;
    if (m < k) swap(m, k);
    long long j = 1, ans = 0;
    for (int i = 0; i <= m + k; i++) {
      ans = (ans + C(n + i, n) * pow3[m + k - i] % 1000000007 * j) % 1000000007;
      if (i < k)
        j = j * 2ll % 1000000007;
      else if (i < m)
        j = (j * 2ll - C(i, k)) % 1000000007;
      else
        j = (j * 2ll - C(i, k) - C(i, m)) % 1000000007;
    }
    ans = (ans + 1000000007) % 1000000007;
    printf("%lld\n", ans);
  }
}
