#ifndef akinyan #define akinyan #include using namespace std; using ch = char; using ll = long long; using ld = long double; using db = double; using st = string; using vdb = vector; using vvdb = vector; using vl = vector; using vvl = vector; using vvvl = vector; using vd = vector; using vvd = vector; using vs = vector; using vvs = vector; using vc = vector; using vvc = vector; using vb = vector; using vvb = vector; using vvvb = vector; const ll mod = 998244353; const ll MOD = 1000000007; const ll INF = 1000000000000000000LL; using pall = pair; using vp = vector; #endif #include using mint = atcoder::modint998244353; int main(){ ll N,M,K; cin>>N>>M>>K; vector DP(M,vector((1 << N),mint(0))); for(int i=0; i<(1 << N); i++){ DP[0][i] = 1; } for(int i=1; i= K){ DP[i][k] += DP[i-1][j]; } } } } mint ans = 0; for(int i=0; i<(1 << N); i++){ ans += DP[M-1][i]; } cout << ans.val() << endl; }