#include <bits/stdc++.h>
using namespace std;
const int N = 9e5 + 5;
long long n, m, k;
long long fac[N], inv[N], p[N];
long long ksm(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % 1000000007;
    a = a * a % 1000000007, b >>= 1;
  }
  return ans;
}
long long C(long long x, long long y) {
  return fac[x] * inv[y] % 1000000007 * inv[x - y] % 1000000007;
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  n--;
  fac[0] = p[0] = inv[0] = 1ll;
  for (int i = 1; i < N; i++)
    fac[i] = fac[i - 1] * i % 1000000007, p[i] = p[i - 1] * 3ll % 1000000007;
  inv[N - 1] = ksm(fac[N - 1], 1000000007 - 2);
  for (int i = N - 2; i; i--) inv[i] = inv[i + 1] * (i + 1) % 1000000007;
  long long ans = 0, x = 1ll;
  for (int i = 0; i <= m + k; i++) {
    ans = (ans + C(n + i, n) * p[m + k - i] % 1000000007 * x) % 1000000007;
    if (i < k)
      x = x * 2ll % 1000000007;
    else if (i < m)
      x = (x * 2ll - C(i, k)) % 1000000007;
    else
      x = (x * 2ll - C(i, k) - C(i, m)) % 1000000007;
  }
  printf("%lld\n", (ans + 1000000007) % 1000000007);
  return 0;
}
