#pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include using namespace std; typedef long long ll; typedef unsigned long long ull; constexpr int dx[]={1,0,0,-1},dy[]={0,1,-1,0}; constexpr int Dx[]={1,1,0,-1,-1,-1,0,1},Dy[]={0,1,1,1,0,-1,-1,-1}; constexpr int mod=998244353,Mod=1e9+7,inf=Mod; constexpr ll linf=(ll)inf*inf; typedef pairP; #define m_p make_pair struct fastio{ fastio(){ cin.tie(0); ios::sync_with_stdio(0); cout< bool chmax(T&a,const U&b){ if(a bool chmin(T&a,const U&b){ if(a>b){ a=b; return 1; } return 0; } //* #include using namespace atcoder; //*/ ll dp[200001][3]; int main(){ int t,n,m; cin>>t; while(cin>>n>>m){ for(int i=0;i<=m;i++) for(int j=0;j<3;j++) dp[i][j]=0; dp[0][0]=1; for(int i=0;i=4){ (dp[i+1][0]+=dp[i][2])%=mod; (dp[i+1][1]+=dp[i][2]*(n-2))%=mod; (dp[i+1][2]+=dp[i][0]*((n*(n-3ll)/2)%mod))%=mod; (dp[i+1][2]+=dp[i][1]*((n*(n-3ll)/2-(n-3))%mod))%=mod; (dp[i+1][2]+=dp[i][2]*((n*(n-3ll)/2-2*(n-3)+1)%mod))%=mod; } } cout<<(dp[m][0]+dp[m][1]+dp[m][2])%mod<