output_description: Print the number of ways in which the vertices can be painted, modulo 10^9 +
  7.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      x_1 y_1
      x_2 y_2
      :
      x_{N - 1} y_{N - 1}
attempt: import sys
  sys.setrecursionlimit(10**6)
  MOD = 10**9+7
  N = int(input())
  edge = [[] for _ in range(N+1)]
  dp = [[0]*2 for i in range(100005)]
  # dp[v][c]: 頂点vを色cの根とする部分木の塗り分け方の総数
  # 葉が決まると順々に求まっていく
  for i in range(N-1):
      x,y = map(int,input().split())
      edge[x].append(y)
      edge[y].append(x)
  
  # 0:white,1:black
  def dfs(v,last=-1):
      dp[v][0] = 1
      dp[v][1] = 1
      for nv in edge[v]:
          if nv == last:
              continue
          dfs(nv, v)
          dp[v][0] = dp[v][0] * ((dp[nv][0] + dp[nv][1]) % MOD) % MOD
          dp[v][1] = dp[v][1] * dp[nv][0] % MOD
  
  
  dfs(1)
  print(dp[1][0] + dp[1][1])MOD = 10**9+7
  N = int(input())
  edge = [[] for _ in range(N+1)]
  dp = [[0]*2 for i in range(100005)]
  # dp[v][c]: 頂点vを色cの根とする部分木の塗り分け方の総数
  # 葉が決まると順々に求まっていく
  for i in range(N-1):
      x,y = map(int,input().split())
      edge[x].append(y)
      edge[y].append(x)
  
  # 0:white,1:black
  def dfs(v,last=-1):
      dp[v][0] = 1
      dp[v][1] = 1
      for nv in edge[v]:
          if nv == last:
              continue
          dfs(nv, v)
          dp[v][0] = dp[v][0] * ((dp[nv][0] + dp[nv][1]) % MOD) % MOD
          dp[v][1] = dp[v][1] * dp[nv][0] % MOD
  
  
  dfs(1)
  print(dp[1][0] + dp[1][1])
problem_description: Statement
  
  There is a tree with N vertices, numbered 1, 2, \ldots, N. For each i (1 \leq
  i \leq N - 1), the i-th edge connects Vertex x_i and y_i.
  
  Taro has decided to paint each vertex in white or black. Here, it is not
  allowed to paint two adjacent vertices both in black.
  
  Find the number of ways in which the vertices can be painted, modulo 10^9 + 7.
samples: [{"input": "3\n    1 2\n    2 3", "output": "5\n    \n\nThere are five ways to paint the vertices, as follows:\n\n![](https://img.atcoder.jp/dp/indep_0_muffet.png)\n\n* * *"}, {"input": "4\n    1 2\n    1 3\n    1 4", "output": "9\n    \n\nThere are nine ways to paint the vertices, as follows:\n\n![](https://img.atcoder.jp/dp/indep_1_muffet.png)\n\n* * *"}, {"input": "1", "output": "2\n    \n\n* * *"}, {"input": "10\n    8 5\n    10 8\n    6 5\n    1 5\n    4 8\n    2 10\n    3 6\n    9 2\n    1 7", "output": "157"}]