#include <bits/stdc++.h>
using namespace std;
template <typename A, typename B>
inline void chmin(A &a, B b) {
  if (a > b) a = b;
}
template <typename A, typename B>
inline void chmax(A &a, B b) {
  if (a < b) a = b;
}
const long long mod = 1000000007;
long long fact[333333], inv[333333];
long long mpow(long long n, long long m) {
  long long ret = 1;
  while (m) {
    if (m & 1) ret = ret * n % mod;
    n = n * n % mod;
    m >>= 1;
  }
  return ret;
}
long long C(long long n, long long k) {
  return fact[n] * inv[k] % mod * inv[n - k] % mod;
}
long long pow3[333333];
signed main() {
  fact[0] = 1;
  for (long long i = 1; i < 333333; i++) fact[i] = fact[i - 1] * i % mod;
  for (long long i = 0; i < 333333; i++) inv[i] = mpow(fact[i], mod - 2);
  pow3[0] = 1;
  for (long long i = 1; i < 333333; i++) pow3[i] = pow3[i - 1] * 3 % mod;
  long long N, M, K;
  cin >> N >> M >> K;
  long long ans = 0;
  for (long long i = 0; i <= M; i++) {
    for (long long j = 0; j <= K; j++) {
      long long len = N + i + j - 1;
      long long t = C(len, i);
      t = t * C(len - i, j) % mod;
      t = t * pow3[M + K - i - j] % mod;
      ans = (ans + t) % mod;
    }
  }
  cout << ans << endl;
  return 0;
}
