#include using namespace std; #include using namespace atcoder; using mint=atcoder::modint998244353; template struct factional_prime{ long long inv_[MAX_N+1]; long long fac_[MAX_N+1]; long long fac_inv_[MAX_N+1]; factional_prime(){ inv_[0]=0;inv_[1]=fac_[0]=fac_[1]=fac_inv_[0]=fac_inv_[1]=1; for(long long i=2;i<=MAX_N;i++){ inv_[i]=((mod-mod/i)*inv_[mod%i])%mod; fac_[i]=(fac_[i-1]*i)%mod; fac_inv_[i]=(fac_inv_[i-1]*inv_[i])%mod; } } long long inv(long long n){ if(n<0)return 0; return inv_[n]; } long long fac(long long n){ if(n<0)return 0; return fac_[n]; } long long finv(long long n){ if(n<0)return 0; return fac_inv_[n]; } long long nCr(long long n,long long r){ if(n fp; mint dp[309][309][309]; int main(){ int N,M,K;cin>>N>>M>>K; dp[0][0][0]=1; int T=max(M,K)+2; for(int i=1;i<=T;i++){ for(int j=0;j<=min(i-1,N);j++){ for(int k=0;k<=i-1;k++){ //0 dp[i][j][i]+=dp[i-1][j][k]*mint(i).pow(max(0,min(K,i)-k)); if(i<=M&&j