#include <bits/stdc++.h>
int const MOD = 1000000007;
int const N = 1234567;
int INV[N], FACT[N], INVFACT[N];
int mul(int a, int b) { return (int)((long long)a * b % MOD); }
void add(int &a, int b) {
  a += b;
  if (a >= MOD) a -= MOD;
}
int c(int n, int k) { return mul(FACT[n], mul(INVFACT[k], INVFACT[n - k])); }
int get(int n, int a, int b) {
  int ways = 0;
  for (int i = 0; i <= a && i <= n; i++) {
    if (n - i > b) continue;
    add(ways, c(n, i));
  }
  return ways;
}
int main() {
  FACT[0] = 1;
  for (int i = 1; i < N; i++) FACT[i] = mul(FACT[i - 1], i);
  INV[1] = 1;
  for (int i = 2; i < N; i++) {
    INV[i] = mul(INV[MOD % i], MOD - MOD / i);
  }
  INVFACT[0] = 1;
  for (int i = 1; i < N; i++) {
    INVFACT[i] = mul(INVFACT[i - 1], INV[i]);
  }
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  int three = 1;
  int ans = 0;
  for (int i = m + k; i >= 0; i--) {
    int ways = mul(three, c(n + i - 1, n - 1));
    ways = mul(ways, get(i, m, k));
    add(ans, ways);
    three = mul(three, 3);
  }
  printf("%d\n", ans);
}
