#include <bits/stdc++.h>
using namespace std;
const int p = 1e9 + 7;
int n, m, k, f[1000015], finv[1000015], inv[1000015], bin[1000015];
inline int C(int nn, int mm) {
  if (nn == mm || mm == 0) return 1;
  if (nn < mm) return 0;
  return 1ll * f[nn] * finv[mm] % p * finv[nn - mm] % p;
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  if (m < k) swap(m, k);
  f[0] = finv[0] = f[1] = finv[1] = inv[1] = bin[0] = 1;
  bin[1] = 3;
  for (int i = 2; i <= n + m + k; i++) {
    bin[i] = 3ll * bin[i - 1] % p;
    inv[i] = 1ll * (p - p / i) * inv[p % i] % p;
    f[i] = 1ll * f[i - 1] * i % p;
    finv[i] = 1ll * finv[i - 1] * inv[i] % p;
  }
  int ans = 0;
  for (int i = 0; i <= m + k; i++) {
    int te = 0;
    for (int j = max(0, i - k); j <= min(i, m); j++) {
      te = (te + C(i, j)) % p;
    }
    te = 1ll * te * bin[m + k - i] % p * C(n + i - 1, n - 1) % p;
    ans = (ans + te) % p;
  }
  printf("%d\n", ans);
}
