To AmShZ, all arrays are equal, but some arrays are more-equal than others. Specifically, the arrays consisting of n elements from 1 to n that can be turned into permutations of numbers from 1 to n by adding a non-negative integer to each element.

Mashtali who wants to appear in every problem statement thinks that an array b consisting of k elements is compatible with a more-equal array a consisting of n elements if for each 1 ≤ i ≤ k we have 1 ≤ b_i ≤ n and also a_{b_1} = a_{b_2} = … = a_{b_k}.

Find the number of pairs of arrays a and b such that a is a more-equal array consisting of n elements and b is an array compatible with a consisting of k elements modulo 998244353.

Note that the elements of b are not necessarily distinct, same holds for a.

Input

The first line of input contains two integers n and k (1 ≤ n ≤ 10^9 , 1 ≤ k ≤ 10^5).

Output

Print a single integer — the answer to the problem modulo 998244353.

Examples

Input


1 1


Output


1


Input


2 2


Output


8


Input


5 4


Output


50400


Input


20 100


Output


807645526


Input


10000000 10000


Output


883232350

Note

There are eight possible pairs for the second example: 

  1. a = \{1, 1\}, b = \{1, 1\} 
  2. a = \{1, 1\}, b = \{1, 2\} 
  3. a = \{1, 1\}, b = \{2, 1\} 
  4. a = \{1, 1\}, b = \{2, 2\} 
  5. a = \{1, 2\}, b = \{1, 1\} 
  6. a = \{1, 2\}, b = \{2, 2\} 
  7. a = \{2, 1\}, b = \{1, 1\} 
  8. a = \{2, 1\}, b = \{2, 2\} 
#include <bits/stdc++.h>
const int mod=998244353,G=3,inv2=(mod+1)/2,U=1050000; 
#define ll long long
#define ull unsigned ll
#define sull static ull
#define sint static int
using namespace std;
int ksm(int a,int k){
	int res=1;
	for(;k;k>>=1,a=1ll*a*a%mod) if(k&1) res=1ll*a*res%mod;
	return res;
}
void qmo(int &x){
	x+=(x>>31)&mod;
}
int lim,len,rev[U],w[2][U],inv[U],fac[U],ifac[U];
void calc(int N){
	for(lim=1,len=0;lim<N;lim<<=1,len++);
	for(int i=0;i<lim;i++) rev[i]=rev[i>>1]>>1|((i&1)<<(len-1));
}
void init(int N){
	fac[0]=ifac[0]=fac[1]=ifac[1]=inv[1]=1;
	for(int i=2;i<=N;i++) fac[i]=1ll*i*fac[i-1]%mod,inv[i]=mod-1ll*inv[mod%i]*(mod/i)%mod,ifac[i]=1ll*inv[i]*ifac[i-1]%mod;
	for(lim=1;lim<N;lim<<=1);
	for(int mid=1;mid<lim;mid<<=1){
		w[0][mid]=w[1][mid]=1,w[0][mid+1]=ksm(G,(mod-1)/(mid<<1));
		for(int j=2;j<mid;j++) w[0][mid+j]=1ll*w[0][mid+1]*w[0][mid+j-1]%mod;
		for(int j=1;j<mid;j++) w[1][mid+j]=mod-w[0][2*mid-j];
	}
}
void NTT(int *a,int fl){
	sull A[U];
	for(int i=0;i<lim;i++) A[i]=a[i];
	for(int i=0;i<lim;i++) if(i<rev[i]) swap(A[i],A[rev[i]]);
	for(int mid=1;mid<lim;mid<<=1){
		for(int j=0;j<lim;j+=(mid<<1)){
			for(int k=0;k<mid;k++){
				ull x=A[j+k],y=w[fl][mid+k]*A[mid+j+k]%mod;
				A[j+k]=x+y,A[mid+j+k]=x-y+mod;
			}
		}
	}
	for(int i=0;i<lim;i++) a[i]=A[i]%mod;
	if(fl>0) return;
	int inv=ksm(lim,mod-2);
	for(int i=0;i<lim;i++) a[i]=1ll*a[i]*inv%mod;
}
int n,k,f[U],g[U];
void STL(int n){
	n++;
	for(int i=0;i<n;i++) f[i]=1ll*(i&1?mod-1:1)*ifac[i]%mod;
	for(int i=0;i<n;i++) g[i]=1ll*ksm(i,n-1)*ifac[i]%mod;
	calc(2*n);
	NTT(f,1),NTT(g,1);
	for(int i=0;i<lim;i++) f[i]=1ll*f[i]*g[i]%mod;
	NTT(f,0);
}
int main(){
	scanf("%d%d",&n,&k),init(2*k+2);
	STL(k);
	int res=0;
	for(int i=0,C=1;i<=min(n,k);i++){
		res=(res+1ll*C*f[i]%mod*fac[i]%mod*ksm(n+1,n-i))%mod;
		C=1ll*C*inv[i+1]%mod*(n-i)%mod;
	}
	printf("%d\n",res);
}