#include <bits/stdc++.h>
using namespace std;
const long long P = 1000000000ll + 7;
long long n, m, k;
long long fz[200010], fm[200010];
long long fb[200010], fc[200010];
long long mpow(long long x, long long y) {
  long long tmp = x, ret = 1;
  while (y) {
    if (y & 1) ret = ret * tmp % P;
    tmp = tmp * tmp % P;
    y >>= 1;
  }
  return ret;
}
long long C(int x, int y) {
  if (x < y) return 0;
  return fz[x] * fm[y] % P * fm[x - y] % P;
}
int main() {
  cin >> n >> m >> k;
  fz[0] = fm[0] = 1;
  for (int i = 1; i <= 100000; i++)
    fz[i] = fz[i - 1] * i % P, fm[i] = mpow(fz[i], P - 2);
  long long ans = 0;
  for (int i = n; i < n + m + k + 1; i++) {
    long long cnt = C(i - 1, n - 1);
    fb[i] = (fb[i - 1] * 2 % P + C(i - (n + 1), i - n - (m + 1))) % P;
    fc[i] = (fc[i - 1] * 2 % P + C(i - (n + 1), i - n - (k + 1))) % P;
    ans = (ans + cnt * ((mpow(2, i - n) - (fb[i] + fc[i]) % P) % P + P) % P *
                     mpow(3, n + m + k - i) % P) %
          P;
  }
  cout << ans << endl;
  return 0;
}
