#include <bits/stdc++.h>
using namespace std;
bool chkmin(int &a, int b) { return b < a ? a = b, 1 : 0; }
bool chkmax(int &a, int b) { return b > a ? a = b, 1 : 0; }
inline int read() {
  int x = 0, fh = 1;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar())
    if (ch == '-') fh = -1;
  for (; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + (ch ^ '0');
  return x * fh;
}
void File() {}
const int Mod = 1e9 + 7, N = 1e6 + 1e3;
long long fac[N], ifac[N], pow3[N];
long long fpm(long long x, int power) {
  long long res = 1;
  for (; power; power >>= 1, (x *= x) %= Mod)
    if (power & 1) (res *= x) %= Mod;
  return res;
}
long long C(int m, int n) {
  if (m > n || n < 0 || m < 0) return 0;
  return fac[n] * ifac[m] % Mod * ifac[n - m] % Mod;
}
int n, m, k, tot;
void Init(int maxn) {
  fac[0] = pow3[0] = 1;
  for (int i = (1), iend = (int)(maxn); i <= iend; ++i)
    fac[i] = fac[i - 1] * i % Mod, pow3[i] = pow3[i - 1] * 3 % Mod;
  ifac[maxn] = fpm(fac[maxn], Mod - 2);
  for (int i = (maxn - 1), iend = (int)(0); i >= iend; --i)
    ifac[i] = ifac[i + 1] * (i + 1) % Mod;
}
int main() {
  File();
  cin >> n >> m >> k;
  tot = n + m + k;
  Init(tot);
  long long ans = 0;
  for (int x = (0), xend = (int)(m); x <= xend; ++x)
    for (int y = (0), yend = (int)(k); y <= yend; ++y)
      (ans += pow3[tot - (n + x + y)] * C(n - 1, (n - 1) + x + y) % Mod *
              C(x, x + y) % Mod) %= Mod;
  printf("%lld\n", ans);
  return 0;
}
