#include <bits/stdc++.h>
using namespace std;
long long mod_pow(long long base, long long exp) {
  if (exp == 0) return 1;
  if (exp & 1)
    return (mod_pow(base, exp - 1) * base) % 1000000007;
  else
    return mod_pow((base * base) % 1000000007, exp / 2);
}
long long fac[3 * 100000 + 1];
long long fac_inv[3 * 100000 + 1];
long long C(long long n, long long k) {
  if (k < 0 || n < k) return 0;
  long long num = fac[n];
  long long den = (fac_inv[n - k] * fac_inv[k]) % 1000000007;
  return (num * den) % 1000000007;
}
int main() {
  fac[0] = 1;
  for (long long n = 1; n <= 3 * 100000; n++)
    fac[n] = (fac[n - 1] * n) % 1000000007;
  fac_inv[3 * 100000] = mod_pow(fac[3 * 100000], 1000000007 - 2);
  for (long long n = 3 * 100000 - 1; n >= 0; n--)
    fac_inv[n] = (fac_inv[n + 1] * (n + 1)) % 1000000007;
  long long a, b, c;
  cin >> a >> b >> c;
  a++;
  if (!(b > c)) {
    b = b ^ c;
    c = b ^ c;
    b = b ^ c;
  }
  long long ans = 0;
  long long sum = 1;
  long long pull = 0;
  for (long long n = a; n <= a + b + c; n++) {
    long long sub = 0;
    sub = (sub + sum - pull) % 1000000007;
    sub = (sub * C(n - 2, a - 2)) % 1000000007;
    sub = (sub * mod_pow(3, a + b + c - n)) % 1000000007;
    ans = (ans + sub) % 1000000007;
    sum = (2 * sum - C(n - a, c)) % 1000000007;
    pull = (2 * pull + C(n - a, n - a - b)) % 1000000007;
  }
  cout << (ans + 1000000007) % 1000000007 << endl;
  return 0;
}
