import sys ni = lambda :int(input()) na = lambda :list(map(int,input().split())) yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES") no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO") ####################################################################### mod = 998244353 n = ni() g = [[] for i in range(n)] for _ in range(n-1): u,v = na() u-=1 v-=1 g[u].append(v) g[v].append(u) et = [] chi = [[] for i in range(n)] d = [0] seen = [0] * n while d: x = d.pop() seen[x] = 1 et.append(x) for y in g[x]: if seen[y] ^ 1: chi[x].append(y) d.append(y) dp1 = [1] * n dp2 = [1] * n for x in et[::-1]: for y in chi[x]: dp1[x],dp2[x] = dp1[x] * dp2[y] + dp2[x] * dp1[y] + dp1[x] * dp1[y], dp2[x] * (dp2[y] + dp1[y]) dp1[x] %= mod dp2[x] %= mod #print(x,dp1[x],dp2[x]) print(dp1[0])