#include <bits/stdc++.h>
const int dx[] = {1, 0, -1, 0};
const int dy[] = {0, -1, 0, 1};
using namespace std;
long long mod_pow(long long x, long long p, long long MOD) {
  long long a = 1;
  while (p) {
    if (p % 2) a = a * x % MOD;
    x = x * x % MOD;
    p /= 2;
  }
  return a;
}
long long mod_inverse(long long a, long long m) { return mod_pow(a, m - 2, m); }
const int MOD = 1e9 + 7;
const int MAX = 1000000;
long long fact[MAX], rfact[MAX];
long long p3[MAX];
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  fact[0] = rfact[0] = 1;
  for (int i = 1; i < MAX; i++) {
    fact[i] = i * fact[i - 1] % MOD;
    rfact[i] = mod_inverse(fact[i], MOD);
  }
  p3[0] = 1;
  for (int i = 1; i < MAX; i++) {
    p3[i] = p3[i - 1] * 3 % MOD;
  }
  int N, M, K;
  cin >> N >> M >> K;
  if (N > 1000 || M > 1000 || K > 1000) return 0;
  long long ans = 0;
  for (int m = 0; m <= M; m++) {
    for (int k = 0; k <= K; k++) {
      long long tmp = fact[N - 1 + m + k];
      (tmp *= rfact[N - 1]) %= MOD;
      (tmp *= rfact[m]) %= MOD;
      (tmp *= rfact[k]) %= MOD;
      (tmp *= p3[M + K - m - k]) %= MOD;
      (ans += tmp) %= MOD;
    }
  }
  cout << ans << endl;
  return 0;
}
