#include <bits/stdc++.h>
using namespace std;
const long long Mod = 1e9 + 7;
int n, m, k, N;
long long ans, fac[900005], inv[900005], er[900005], san[900005], b, c;
long long quipow(long long x, long long m) {
  long long res = 1;
  while (m) {
    if (m & 1) res = res * x % Mod;
    x = x * x % Mod;
    m >>= 1;
  }
  return res;
}
long long C(int y, int u) {
  if (y > u) return 0;
  return fac[u] * inv[y] % Mod * inv[u - y] % Mod;
}
int main() {
  fac[0] = fac[1] = 1;
  for (long long i = 2; i <= 900000; i++) fac[i] = fac[i - 1] * i % Mod;
  inv[900000] = quipow(fac[900000], Mod - 2);
  for (long long i = 899999; i >= 0; i--) inv[i] = inv[i + 1] * (i + 1) % Mod;
  er[0] = 1;
  for (long long i = 1; i <= 300000; i++) er[i] = er[i - 1] * 2 % Mod;
  san[0] = 1;
  for (long long i = 1; i <= 300000; i++) san[i] = san[i - 1] * 3 % Mod;
  scanf("%d%d%d", &n, &m, &k);
  N = n + m + k;
  for (int i = n; i <= N; i++) {
    int la = i - n;
    long long now = C(n - 1, i - 1), gg = er[la];
    b = (b + (m + 1 == la
                  ? 1
                  : (m + 1 < la ? (b + C(i - n - m - 1, i - n - 1)) : 0))) %
        Mod;
    c = (c + (k + 1 == la
                  ? 1
                  : (k + 1 < la ? (c + C(i - n - k - 1, i - n - 1)) : 0))) %
        Mod;
    gg = (gg - b + Mod) % Mod;
    gg = (gg - c + Mod) % Mod;
    ans = (ans + now * gg % Mod * san[N - i] % Mod) % Mod;
  }
  printf("%lld", ans);
}
