#include using namespace std; using ll = long long; const int MX = 400010; ll f[MX],inv[MX],fi[MX]; constexpr ll mod = 998244353; void solve(){ inv[1] = 1; for(int i=2;i> n; solve(); dp[0][0] = 1; for(i=0;i<=n;i++){ for(j=0;j<=n;j++){ if(i && j) dp[i][j] += dp[i - 1][j - 1]; if(i) dp[i][j] += dp[i - 1][j]*j; dp[i][j] %= mod; } } ll ans = 1; for(i=1;i<=n;i++){ for(j=1;j<=i;j++){ ll val = dp[i][j]*nck(n,i)%mod; //ll val = nck(n,i)*nck(i - 1,i - j)%mod*nck(i,j)%mod; (val *= pw(pw(2,j) - j + mod,n - i)) %= mod; (ans += val) %= mod; //cout << i << " " << j << " " << val << "\n"; } } cout << ans << "\n"; }