#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007ll;
const double EPS = 1e-11;
int n, m, k;
const int FMAX = 1252521;
long long fact[FMAX];
long long ifact[FMAX];
long long tri[FMAX];
long long modpow(long long a, long long b, long long c) {
  long long r = 1;
  while (b) {
    if (b & 1) r = r * a % c;
    a = a * a % c;
    b >>= 1;
  }
  return r;
}
long long modinv(long long a, long long c) { return modpow(a, c - 2, c); }
int main() {
  scanf("%d%d%d", &n, &m, &k);
  assert(n <= 1000 && m <= 1000 && k <= 1000);
  fact[0] = 1;
  for (int i = (int)(1); i < (int)(FMAX); ++i) fact[i] = fact[i - 1] * i % MOD;
  ifact[FMAX - 1] = modinv(fact[FMAX - 1], MOD);
  for (int i = (int)(FMAX - 1) - 1; i >= (int)(0); --i)
    ifact[i] = ifact[i + 1] * (i + 1) % MOD;
  tri[0] = 1;
  for (int i = (int)(1); i < (int)(FMAX); ++i) tri[i] = tri[i - 1] * 3 % MOD;
  long long ans = 0;
  int a = n - 1;
  for (int s = (int)(0); s < (int)(m + k + 1); ++s) {
    int abc = a + s;
    int rest = n + m + k - abc - 1;
    long long unit =
        fact[abc] * ifact[a] % MOD * ifact[s] % MOD * tri[rest] % MOD;
    long long add = 0;
    int beg = max(s - k, 0);
    int end = min(s, m);
    for (int b = (int)(beg); b < (int)(end + 1); ++b) {
      int c = s - b;
      add += fact[b + c] * ifact[b] % MOD * ifact[c] % MOD;
      if (add >= MOD) add -= MOD;
    }
    ans += unit * add % MOD;
    if (ans >= MOD) ans -= MOD;
  }
  printf("%lld\n", ans);
  return 0;
}
