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

Solution (in CPP):

Solution:
#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],Finv[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;
}
ll C(ll a,ll b){
    return Fa[a] * Finv[a - b]%MOD * Finv[b]%MOD;
}
int main(){
    scanf("%lld%lld", &N,&M);
    Fa[0] = 1;
    fornum(i,0,N+M*3){
        Fa[i + 1] = (Fa[i] * (i + 1)) % MOD;
    }
    Finv[i] = moddiv(1, Fa[i]);
    for (i = i; i > 0;i--){
        Finv[i - 1] = Finv[i] * i % MOD;
    }

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

    return 0;
}