def solve(N, edges):
def visit(parent, self):
if parent != 0 and len(edges[self]) == 1:
# self is leaf
return (1, 2) # white, total
black = 1
white = 1
for child in edges[self]:
if child == parent:
continue
w, t = visit(self, child)
black *= w
black %= MOD
white *= t
white %= MOD
ret = (white, white + black)
return ret
return visit(0, 1)[1] % MOD