#include <bits/stdc++.h>
using namespace std;
int A, B, C, dp[1009][1009], pw[900009], fact[900009], inv[900009],
    finv[900009], mod = 1000000007;
int comb(int x, int y) {
  return y < 0 || x < y ? 0 : 1LL * fact[x] * finv[y] % mod * finv[x - y] % mod;
}
int main() {
  cin >> A >> B >> C;
  assert(A <= 1000 && B <= 1000 && C <= 1000);
  pw[0] = fact[0] = inv[1] = finv[0] = 1;
  for (int i = 1; i <= A + B + C; i++) {
    if (i >= 2) inv[i] = 1LL * inv[mod % i] * (mod - mod / i) % mod;
    pw[i] = 3LL * pw[i - 1] % mod;
    fact[i] = 1LL * fact[i - 1] * i % mod;
    finv[i] = 1LL * finv[i - 1] * inv[i] % mod;
  }
  dp[0][0] = 1;
  int ret = 0;
  for (int i = 0; i <= B; i++) {
    for (int j = 0; j <= C; j++) {
      if (i >= 1) dp[i][j] += dp[i - 1][j];
      if (j >= 1) dp[i][j] += dp[i][j - 1];
      if (dp[i][j] >= mod) dp[i][j] -= mod;
      ret = (ret + 1LL * pw[B + C - i - j] * dp[i][j] % mod *
                       comb(A + i + j - 1, A - 1)) %
            mod;
    }
  }
  cout << ret << endl;
  return 0;
}
