#include<bits/stdc++.h>

#define ll long long
#define fornum(A,B,C) for(A=B;A<C;A++)
#define mp make_pair
#define pii pair<int,int>
#define pll pair<ll,ll>

using namespace std;

/////////////////////////////////////////////////////
#define MOD 998244353
ll N,M;
ll Fa[5050505];
ll i,j,k,ans;
ll moddiv(ll a,ll b){
    a %= MOD;
    b %= MOD;
    for(ll m=MOD-2;m>0;m/=2){
        if(m&1){
            a=a*b%MOD;
        }
        b=b*b%MOD;
    }
    return a;
}
int main(){
    scanf("%lld%lld", &N,&M);
    Fa[0] = 1;
    fornum(i,0,N+M*3){
        Fa[i + 1] = (Fa[i] * (i + 1)) % MOD;
    }

    for (i = M%2; i<=N&&i <= M;i+=2)
    {
        ll b = 3 * M - i;
        ans = (ans + moddiv(Fa[N], Fa[i] * Fa[N - i]) * (moddiv(Fa[b / 2 + N - 1], Fa[N - 1] * Fa[b / 2]))) % MOD;
        ll c = M - i;
        if(i==N){
            ans = (ans - moddiv(Fa[c / 2 + N - 1], Fa[N - 1] * Fa[c / 2]) * N % MOD+MOD) % MOD;
        }else{
            ans = (ans 
                -(moddiv(Fa[N], Fa[N - i] * Fa[i]) * moddiv(Fa[c / 2 + N - 1], Fa[N - 1] * Fa[c / 2]) % MOD * N % MOD)
                +(moddiv(Fa[N - 1], Fa[N - 1 - i] * Fa[i]) * moddiv(Fa[c / 2 + N - 2], Fa[N - 2] * Fa[c / 2]) % MOD* N % MOD)+MOD)%MOD;
        }
        //printf("%lld\n", ans);
    }
    printf("%lld",ans);

    return 0;
}
### Prompt

Please create a solution in CPP to the following problem:

We have a sequence of N integers: x=(x_0,x_1,\cdots,x_{N-1}). Initially, x_i=0 for each i (0 \leq i \leq N-1).

Snuke will perform the following operation exactly M times:

* Choose two distinct indices i, j (0 \leq i,j \leq N-1,\ i \neq j). Then, replace x_i with x_i+2 and x_j with x_j+1.



Find the number of different sequences that can result after M operations. Since it can be enormous, compute the count modulo 998244353.

Constraints

* 2 \leq N \leq 10^6
* 1 \leq M \leq 5 \times 10^5
* All values in input are integers.

Input

Input is given from Standard Input in the following format:


N M


Output

Print the number of different sequences that can result after M operations, modulo 998244353.

Examples

Input

2 2


Output

3


Input

3 2


Output

19


Input

10 10


Output

211428932


Input

100000 50000


Output

3463133

### Response

```cpp
#include<bits/stdc++.h>

#define ll long long
#define fornum(A,B,C) for(A=B;A<C;A++)
#define mp make_pair
#define pii pair<int,int>
#define pll pair<ll,ll>

using namespace std;

/////////////////////////////////////////////////////
#define MOD 998244353
ll N,M;
ll Fa[5050505];
ll i,j,k,ans;
ll moddiv(ll a,ll b){
    a %= MOD;
    b %= MOD;
    for(ll m=MOD-2;m>0;m/=2){
        if(m&1){
            a=a*b%MOD;
        }
        b=b*b%MOD;
    }
    return a;
}
int main(){
    scanf("%lld%lld", &N,&M);
    Fa[0] = 1;
    fornum(i,0,N+M*3){
        Fa[i + 1] = (Fa[i] * (i + 1)) % MOD;
    }

    for (i = M%2; i<=N&&i <= M;i+=2)
    {
        ll b = 3 * M - i;
        ans = (ans + moddiv(Fa[N], Fa[i] * Fa[N - i]) * (moddiv(Fa[b / 2 + N - 1], Fa[N - 1] * Fa[b / 2]))) % MOD;
        ll c = M - i;
        if(i==N){
            ans = (ans - moddiv(Fa[c / 2 + N - 1], Fa[N - 1] * Fa[c / 2]) * N % MOD+MOD) % MOD;
        }else{
            ans = (ans 
                -(moddiv(Fa[N], Fa[N - i] * Fa[i]) * moddiv(Fa[c / 2 + N - 1], Fa[N - 1] * Fa[c / 2]) % MOD * N % MOD)
                +(moddiv(Fa[N - 1], Fa[N - 1 - i] * Fa[i]) * moddiv(Fa[c / 2 + N - 2], Fa[N - 2] * Fa[c / 2]) % MOD* N % MOD)+MOD)%MOD;
        }
        //printf("%lld\n", ans);
    }
    printf("%lld",ans);

    return 0;
}
```