#include <bits/stdc++.h>
using namespace std;
long long fac[3010], inv[3010], ivf[3010];
void initmo() {
  fac[0] = ivf[0] = inv[1] = 1;
  for (long long i = 1; i < 3010; i++) {
    if (i > 1)
      inv[i] =
          (1000000007 - 1000000007 / i * inv[1000000007 % i] % 1000000007) %
          1000000007;
    fac[i] = fac[i - 1] * i % 1000000007;
    ivf[i] = ivf[i - 1] * inv[i] % 1000000007;
  }
}
long long po(long long x, long long y) {
  long long res = 1;
  for (; y; y >>= 1) {
    if (y & 1) res = res * x % 1000000007;
    x = x * x % 1000000007;
  }
  return res;
}
int main() {
  initmo();
  long long a, b, c;
  cin >> a >> b >> c;
  a--;
  if (a > 3010 || b > 3010 || c > 3010) return 0;
  long long ans = 0;
  for (long long k = a; k <= a + b + c; k++) {
    for (long long t = 0; t <= b; t++) {
      long long r = k - a - t;
      if (not(0 <= r && r <= c)) continue;
      long long cur = fac[k] * po(3, a + b + c - k) % 1000000007;
      cur = cur * ivf[a] % 1000000007;
      cur = cur * ivf[t] % 1000000007;
      cur = cur * ivf[r] % 1000000007;
      ans = (ans + cur) % 1000000007;
    }
  }
  cout << ans << endl;
  return 0;
}
