#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define mo 1000000007
int i,j,k,m,n,x,y,z,S,Ans,ans,dp[41][1<<17];
inline ll Pow(ll x,ll d) {
    ll ans = 1, y = x;
    for (; d; y = y * y % mo, d >>= 1)d & 1 ? ans = ans * y % mo : 0;
    return ans;
}
int main() {
    cin >> n >> x >> y >> z;
    S = (1 << x + y + z) - 1;
    ans = (1 << x - 1) | (1 << x + y - 1) | (1 << x + y + z - 1);
    dp[0][0] = 1;
    for (i = 1; i <= n; ++i)
        for (j = 0; j <= S; ++j)
            if (dp[i - 1][j])
                for (k = 1; k <= 10; ++k) {
                    int o = ((j << k) | (1 << k - 1)) & S;
                    if ((o & ans) == ans)(Ans += 1ll * dp[i - 1][j] * Pow(10, n - i) % mo) %= mo;
                    else (dp[i][o] += (dp[i - 1][j]) % mo) %= mo;
                }
    printf("%d\n", Ans);
}
#include<bits/stdc++.h>
using namespace std;
#define MOD 1000000007

long long N, M, K;
long long res = 0;

// mod. m での a の逆元 a^{-1} を計算する
long long Modinv(long long a, long long m) {
    long long b = m, u = 1, v = 0;
    while (b) {
        long long t = a / b;
        a -= t * b; swap(a, b);
        u -= t * v; swap(u, v);
    }
    u %= m;
    if (u < 0) u += m;
    return u;
}



long long ModComb(long long n, long long a, long long mod){
  long long i = 0;
  long long res = 1;
  while(a > 0){
    res *= ((n-i) * Modinv(a, MOD)) % MOD;
    res %= MOD;
    --a; ++i;
  }

  return res;
}


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

  long long MC = ModComb(N * M - 2, K - 2, MOD);

  for(int d = 1; d < N; d++)
    res = ((d * ((((N-d) * M * M) * MC) % MOD)) % MOD + res) % MOD;

  for(int d = 1; d < M; d++)
    res = ((d * ((((M-d) * N * N) * MC) % MOD)) % MOD + res) % MOD;

  cout << res << endl;
  return 0;

}




    