#include <bits/stdc++.h>
using namespace std;

using ll = long long;

struct Mod
{
    static const auto P = static_cast<int>(1e9+7);
    ll k;

    Mod() = default;
    Mod(const ll k) : k(k%P) {}
};

Mod operator+(const Mod a, const Mod b) { return a.k + b.k; }
Mod operator*(const Mod a, const Mod b) { return a.k * b.k; }
Mod& operator+=(Mod& a, const Mod b) { return a = a+b; }

Mod cache[4000][4000];
bool seen[4000][4000];
Mod choose(int n, int k)
{
    if (seen[n][k]) return cache[n][k];
    seen[n][k] = true;

    auto& result = cache[n][k];
    if (k == 0 || n == k) result = 1;
    else if (k > n) result = 0;
    else result = choose(n-1, k-1) + choose(n-1, k);

    return result;
};

int main()
{
    int N, M, K; cin >> N >> M >> K;

    auto power = vector<Mod>(M+K+1);
    power[0] = 1;
    for (auto i = 1; i <= M+K; i++)
        power[i] = power[i-1] * 3;

    auto result = Mod(0);
    for (auto m = 0; m <= M; m++) for (auto k = 0; k <= K; k++)
        result += choose(N-1+m+k, N-1) * choose(m+k, m) * power[M-m+K-k];
    cout << result.k << endl;
}
