#include <bits/stdc++.h>
using namespace std;

#define MOD 1000000007LL

int N;
vector<vector<int>> graph(111111);

long long dp[111111][2];

void DFS(int x,int from){
	long long w=1,b=1;
	for(auto t:graph[x]){
		if(t==from)continue;
		DFS(t,x);
		w*=dp[t][0]+dp[t][1];
		w%=MOD;
		b*=dp[t][0];
		b%=MOD;
	}
	dp[x][0]=w;
	dp[x][1]=b;
}

int main(){
	cin >> N;
	for(int i=0;i<N-1;i++){
		int x,y;
		cin >> x >> y;
		x--;
		y--;
		graph[x].push_back(y);
		graph[y].push_back(x);
	}
	
	DFS(0,-1);
	
	cout << (dp[0][0]+dp[0][1])%MOD << endl;
	
	return 0;
}