#include <bits/stdc++.h>
using namespace std;
const int max_n = 2e4 + 5;
int mod = 1e9 + 7;
int powmod(int a, int n) {
  if (n == 0) return 1;
  int sq = powmod(a, n / 2);
  sq = (sq * 1LL * sq) % mod;
  if (n % 2 == 0) return sq;
  return (sq * 1LL * a) % mod;
}
int fac[max_n];
int ifac[max_n];
int p3[max_n];
void solve() {
  fac[0] = 1;
  ifac[0] = 1;
  for (int i = (1); i < (max_n - 1); ++i) fac[i] = (fac[i - 1] * 1LL * i) % mod;
  for (int i = (1); i < (max_n - 1); ++i) ifac[i] = powmod(fac[i], mod - 2);
  p3[0] = 1;
  for (int i = (1); i < (max_n - 1); ++i) p3[i] = (p3[i - 1] * 3LL) % mod;
  int(a), (b), (c);
  scanf("%d%d%d", &(a), &(b), &(c));
  ;
  b++;
  c++;
  int ans = 0;
  for (int i = (0); i < (b); ++i)
    for (int j = (0); j < (c); ++j) {
      int loc = fac[a - 1 + i + j];
      loc = (loc * 1LL * ifac[i]) % mod;
      loc = (loc * 1LL * ifac[j]) % mod;
      loc = (loc * 1LL * ifac[a - 1]) % mod;
      loc = (loc * 1LL * p3[b - 1 + c - 1 - i - j]) % mod;
      ans = (ans + loc) % mod;
    }
  printf("%d\n", ans);
}
int main() {
  int z = 1;
  while (z--) {
    solve();
  }
}
