#include <bits/stdc++.h>
long long factinv[300010], fact[300010];
void factorial(void) {
  int i, j;
  long long P, Q, R, EXP;
  fact[0] = 1;
  factinv[0] = 1;
  for (i = 1; i <= 300000; i++) {
    fact[i] = fact[i - 1];
    fact[i] *= i;
    fact[i] %= 1000000007LL;
  }
  for (i = 1; i <= 300000; i++) {
    factinv[i] = factinv[i - 1];
    P = 1;
    Q = i;
    EXP = 1000000005LL;
    while (EXP > 0) {
      if (EXP & 1) P *= Q;
      Q *= Q;
      EXP >>= 1;
      P %= 1000000007LL;
      Q %= 1000000007LL;
    }
    factinv[i] *= P;
    factinv[i] %= 1000000007LL;
  }
}
long long comb_mod(int a, int b) {
  long long P = 1;
  P = P * fact[a];
  P = P * factinv[a - b] % 1000000007LL;
  P = P * factinv[b] % 1000000007LL;
  return P;
}
int main() {
  int i, j, K, M, N, X, Y;
  long long P, Q, R;
  factorial();
  scanf("%d%d%d", &N, &M, &K);
  P = 0;
  for (i = N; i <= N + M + K; i++) {
    Q = 1;
    R = 3;
    j = N + M + K - i;
    while (j > 0) {
      if (j & 1) Q *= R;
      R *= R;
      j >>= 1;
      R %= 1000000007LL;
      Q %= 1000000007LL;
    }
    Q *= comb_mod(i - 1, N - 1);
    Q %= 1000000007LL;
    R = 0;
    if (i - N == 0)
      R = 1;
    else
      for (j = (((0) > (i - N - K)) ? (0) : (i - N - K));
           j <= (((i - N) > (M)) ? (M) : (i - N)); j++) {
        R += comb_mod(i - N, j);
        R %= 1000000007LL;
      }
    Q *= R;
    Q %= 1000000007LL;
    P += Q;
    P %= 1000000007LL;
  }
  printf("%lld\n", P);
  return 0;
}
