#include <bits/stdc++.h>
using namespace std;
const int p = 1e9 + 7;
const int N = 1500010;
int fac[N], inv[N], pwr[N];
inline int qp(int x, int y) {
  int res = 1;
  for (; y; y >>= 1, x = (long long)x * x % p)
    if (y & 1) res = (long long)res * x % p;
  return res;
}
inline void init(int n) {
  fac[0] = pwr[0] = 1;
  for (int i = 1; i <= n; i++)
    fac[i] = (long long)i * fac[i - 1] % p,
    pwr[i] = pwr[i - 1] * (long long)3 % p;
  inv[n] = qp(fac[n], p - 2);
  for (int i = n; i >= 1; i--) inv[i - 1] = (long long)i * inv[i] % p;
}
inline long long c(int n, int m) {
  if (n < m) return 0;
  return (long long)fac[n] * inv[m] % p * inv[n - m] % p;
}
int main() {
  int A, B, C;
  scanf("%d%d%d", &A, &B, &C);
  init(A + B + C);
  A--;
  long long ans = 0;
  for (int i = 0; i <= B + C; i++) {
    long long tmp = 0;
    for (int x = 0; x <= B && x <= i; x++)
      if (i - x <= C) {
        tmp = (tmp + c(i, x)) % p;
      }
    ans = (ans + c(i + A, A) * pwr[B + C - i] % p * tmp % p) % p;
  }
  printf("%lld\n", ans);
  getchar(), getchar();
}
