#include using namespace std; using ll=long long; const ll mod=998244353; #define rep(i,a) for (ll i=0;i>t; rep(i,t) solve(); } void solve(){ int N; cin>>N; vector> G(N); rep(i,N-1){ int a,b; cin>>a>>b; a--,b--; G[a].push_back(b); G[b].push_back(a); } vector pare(N,-1),order={0}; pare[0]=-2; for(int i=0;i> dp(N,vector(4)); for(int i=N-1;i>=0;i--){ int a=order[i]; dp[a][1]=1; //ll X=1,Y=1,Z=1,W=0; for(auto x:G[a]){ if(pare[x]!=a) continue; ll tmp1=(dp[x][1]+dp[x][2])%mod; ll tmp2=(dp[x][0]+dp[x][3])%mod; dp[a][3]=((dp[a][3]*tmp2)%mod+(dp[a][0]*tmp1)%mod)%mod; dp[a][0]=((dp[a][0]*tmp2)%mod+(dp[a][1]*tmp1)%mod)%mod; dp[a][1]=(dp[a][1]*tmp2)%mod; } dp[a][2]=dp[a][0]; //vec_out(dp[a]); } cout<<(dp[0][0]+dp[0][3])%mod<<"\n"; }