#include<bits/stdc++.h>

using namespace std;
#define int long long
// typedef long long int;

int const N = 4e6 + 10, mod = 1e9 + 7;
int fact[N], infact[N];
int n, m, k;

int qmi(int a, int k, int p) {
    int res = 1;
    while (k) {
        if (k & 1) res = res * a % p;
        k >>= 1;
        a = a * a % p;
    }
    return res;
}

// 预处理
void init() {
    fact[0] = infact[0] = 1;
    for (int i = 1; i < N; ++i) {
        fact[i] = (int)fact[i - 1] * i % mod;
        infact[i] = (int)infact[i - 1] * qmi(i, mod - 2, mod) % mod;
    }
}

int cnm(int a, int b) {
    return (int)fact[a] * infact[b] % mod * infact[a - b] % mod;
}

signed main() {
    init();  // 预处理
    cin >> n >> m >> k;  // c(n + m, n) - c(n + m, n - k - 1)
    if (n >= m + k + 1) cout << 0;
    else cout << ((cnm(n + m, n) % mod - cnm(n + m, n - k - 1) % mod) % mod + mod) % mod ;
    return 0;
}
#include <bits/stdc++.h>
using namespace std;

const long long MOD = 998244353;

long long fact[400005];
long long inv[400005];
long long invFact[400005];

long long powmod(long long a, long long b){
    long long ans = 1%MOD;
    a %= MOD;
    while(b){
        if(b&1){ans = (ans*a)%MOD;}
        b >>= 1;
        a = (a*a)%MOD;
    }
    return ans;
}

inline long long ncr(long long a, long long b){
    if(b < 0 || b > a || a < 0){return 0;}
    return ((fact[a]*invFact[b])%MOD * invFact[a-b])%MOD;
}

long long memo[5005][15];

int N, M;

long long dp(int i, int j){
    if(i == 0){
        return 1;
    }else if(j == 0){
        return 0;
    }else if(memo[i][j] != -1){
        return memo[i][j];
    }else{
        long long ans = 0;
        for(int k = 0; k <= (i>>j); k ++){
            ans += ncr(N, (k<<1)) * dp(i - (k<<j), j-1) % MOD;
        }
        ans %= MOD;
        return memo[i][j] = ans;
    }
}

int main(){
    scanf("%d%d", &N, &M);

    fact[0] = 1;
    for(int i = 1; i < 400004; i ++){
        fact[i] = i*fact[i-1]%MOD;
    }

    inv[1] = 1;
    for(int i = 2; i < 400004; i ++){
        inv[i] = inv[MOD%i]*(MOD-MOD/i)%MOD;
    }

    invFact[0] = 1;
    for(int i = 1; i < 400004; i ++){
        invFact[i] = inv[i]*invFact[i-1]%MOD;
    }

    memset(memo, -1, sizeof(memo));
    printf("%lld\n", dp(M, 12));
    return 0;
}
