#include <bits/stdc++.h>
long long comb_mod(int a, int b) {
  long long i, j, P, Q, R, EXP;
  if (a == b || b == 0)
    return 1;
  else {
    P = 1;
    for (i = 1; i <= a; i++) {
      P *= i;
      P %= 1000000007LL;
    }
    Q = 1;
    for (j = 1; j <= (((b) > (a - b)) ? (b) : (a - b)); j++) {
      R = j;
      EXP = 1000000005LL;
      while (EXP > 0) {
        if (EXP & 1) Q *= R;
        R *= R;
        EXP >>= 1;
        R %= 1000000007LL;
        Q %= 1000000007LL;
      }
      if (j == (((b) > (a - b)) ? (a - b) : (b))) {
        P *= Q;
        P %= 1000000007LL;
      }
    }
    P *= Q;
    P %= 1000000007LL;
    return P;
  }
}
int main() {
  int i, j, K, M, N, X, Y;
  long long P, Q, R;
  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;
  }
  printf("%lld\n", P);
  return 0;
}
