#include <bits/stdc++.h>
using namespace std;
const int MOD = (int)1e9 + 7;
const int N = 6e5 + 7;
long long fact[N], invfact[N];
long long power(long long a, long long n) {
  long long res = 1;
  while (n != 0) {
    if (n % 2 != 0) res = res * a % MOD;
    a = a * a % MOD;
    n /= 2;
  }
  return res;
}
long long inverse(int a) { return power(a, MOD - 2); }
long long c(int n, int k) {
  if (k < 0 || k > n) return 0;
  return fact[n] * invfact[k] % MOD * invfact[n - k] % MOD;
}
int main() {
  ios::sync_with_stdio(false);
  fact[0] = 1;
  for (int i = 1; i < N; ++i) fact[i] = fact[i - 1] * i % MOD;
  for (int i = 0; i < N; ++i) invfact[i] = inverse(fact[i]);
  int n, m, k;
  cin >> n >> m >> k;
  int lft = 0, rgt = -1;
  long long sum = 0, res = 0;
  for (int l = 0; l <= m + k; ++l) {
    int newLft = l - min(l, k);
    int newRgt = min(l, m);
    while (rgt < newRgt) sum += c(l, ++rgt);
    while (rgt > newRgt) sum -= c(l, rgt--);
    while (lft < newLft) sum -= c(l, lft++);
    while (lft > newLft) sum += c(l, --lft);
    sum %= MOD;
    res = (res + sum * power(3, m + k - l) % MOD * c(n + l - 1, n - 1)) % MOD;
    sum = (sum * 2 - c(l, lft++) - c(l, rgt)) % MOD;
  }
  if (res < 0) res += MOD;
  cout << res << endl;
  return 0;
}
