#include <bits/stdc++.h>
using namespace std;
long long N, M, K, Ans, P3[600001];
long long Frc[900001], Fnv[900001];
inline long long C(int N, int M) {
  if (M < 0 || M > N) return 0ll;
  return Frc[N] * Fnv[M] % 1000000007 * Fnv[N - M] % 1000000007;
}
int main() {
  scanf("%lld%lld%lld", &N, &M, &K);
  P3[0] = 1;
  for (int i = 1; i <= (M + K); ++i) P3[i] = P3[i - 1] * 3 % 1000000007;
  Frc[0] = 1;
  for (int i = 1; i <= (N + M + K); ++i) Frc[i] = Frc[i - 1] * i % 1000000007;
  Fnv[0] = Fnv[1] = 1;
  for (int i = 2; i <= (N + M + K); ++i)
    Fnv[i] = (1000000007 - 1000000007 / i) * Fnv[1000000007 % i] % 1000000007;
  for (int i = 2; i <= (N + M + K); ++i)
    Fnv[i] = Fnv[i - 1] * Fnv[i] % 1000000007;
  long long Thi = 1;
  for (int i = N; i <= (N + M + K); ++i) {
    Ans = (Ans + P3[N + M + K - i] * C(i - 1, N - 1) * Thi) % 1000000007;
    Thi = (2 * Thi - C(i - N, i - N - K) - C(i - N, M) + 2 * 1000000007) %
          1000000007;
  }
  printf("%lld", Ans);
  return 0;
}
