#include <bits/stdc++.h>
int min(int a, int b) { return a < b ? a : b; }
long long power(int a, int k, int md) {
  long long b = a, p = 1;
  while (k) {
    if (k & 1) p = p * b % md;
    b = b * b % md;
    k >>= 1;
  }
  return p;
}
int ff[300000 * 2 + 1], gg[300000 * 2 + 1], p3[300000 * 2 + 1];
void init() {
  int i, f, p;
  f = 1;
  for (i = 0; i <= 300000 * 2; i++) {
    gg[i] = power(ff[i] = f, 1000000007 - 2, 1000000007);
    f = (long long)f * (i + 1) % 1000000007;
  }
  p = 1;
  for (i = 0; i <= 300000 * 2; i++) {
    p3[i] = p;
    p = (long long)p * 3 % 1000000007;
  }
}
long long choose(int n, int k) {
  return k < 0 || k > n
             ? 0
             : (long long)ff[n] * gg[k] % 1000000007 * gg[n - k] % 1000000007;
}
int main() {
  int n, m, k, i, ans, sum;
  init();
  scanf("%d%d%d", &n, &m, &k);
  ans = 0, sum = 1;
  for (i = 0; i <= m + k; i++) {
    ans = (ans + sum * choose(n - 1 + i, n - 1) % 1000000007 * p3[m + k - i]) %
          1000000007;
    sum = (sum * 2 - choose(i, i - k) - choose(i, min(i, m))) % 1000000007;
    if (i + 1 <= m) sum = (sum + 1) % 1000000007;
  }
  if (ans < 0) ans += 1000000007;
  printf("%d\n", ans);
  return 0;
}
