#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
long long fact[100000];
struct cww {
  cww() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    fact[0] = 1;
    for (long long i = 1; i < 100000; i++) fact[i] = fact[i - 1] * i % MOD;
  }
} init;
long long extgcd(long long a, long long b, long long &x, long long &y) {
  long long g = a;
  x = 1;
  y = 0;
  if (b != 0) g = extgcd(b, a % b, y, x), y -= (a / b) * x;
  return g;
}
long long invMod(long long a) {
  long long x, y;
  if (extgcd(a, MOD, x, y) == 1)
    return (x + MOD) % MOD;
  else
    return 0;
}
long long Comb(long long n, long long k) {
  long long u = fact[n];
  long long d = (fact[k] * fact[n - k]) % MOD;
  return (u * invMod(d)) % MOD;
}
long long pow_mod(long long a, long long n) {
  long long res = 1;
  long long b = 1;
  a %= MOD;
  while (n >= b) {
    if (n & b) res = (res * a) % MOD;
    a = (a * a) % MOD;
    b <<= 1;
  }
  return res;
}
int main() {
  long long N, M, K;
  cin >> N >> M >> K;
  if (N > 1000 || M > 1000 || K > 1000) return -1;
  long long res = 0;
  for (long long i = 0; i <= M; i++)
    for (long long j = 0; j <= K; j++) {
      long long a = Comb(N - 1 + i + j, N - 1) * Comb(i + j, i) % MOD;
      a = a * pow_mod(3, M + K - i - j) % MOD;
      res = (res + a) % MOD;
    }
  cout << res << endl;
}
