#include <bits/stdc++.h>
using namespace std;
const int P = 1e9 + 7, N = 9 * 1e5 + 10;
int Pow(int x, int t) {
  int r = 1;
  for (; t; t >>= 1, x = 1ll * x * x % P)
    if (t & 1) r = 1ll * r * x % P;
  return r;
}
int a, b, c, f[N] = {1}, rf[N], p2[N], p3[N];
int C(int n, int m) { return 1ll * f[n] * rf[m] % P * rf[n - m] % P; }
void pp(int &x, int d) {
  x += d;
  if (x >= P) x -= P;
}
int main() {
  for (int i = 1; i < (N); ++i) f[i] = 1ll * f[i - 1] * i % P;
  p2[0] = p3[0] = 1;
  for (int i = 1; i < (N); ++i)
    p2[i] = 1ll * p2[i - 1] * 2 % P, p3[i] = 1ll * p3[i - 1] * 3 % P;
  rf[N - 1] = Pow(f[N - 1], P - 2);
  for (int i = N - 2; i >= 0; --i) rf[i] = rf[i + 1] * 1ll * (i + 1) % P;
  scanf("%d%d%d", &a, &b, &c);
  ++b;
  ++c;
  int n = a + b + c;
  int ans = 0;
  for (int i = a; i + 2 <= n; ++i) {
    int tmp = C(i - 1, a - 1), all = p2[i - a];
    for (int j = b; j <= i - a; ++j) pp(all, P - C(i - a, j));
    for (int j = c; j <= i - a; ++j) pp(all, P - C(i - a, j));
    pp(ans, 1ll * tmp * all % P * p3[n - i - 2] % P);
  }
  printf("%d\n", ans);
  return 0;
}
