/*



























































































4
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 404
10 20 30 40





















//#include <bits/stdc++.h>
//using namespace std;
//string s[5][3055],s1,s2;
//int sol,dp[5][3055],ans,n,m,ma;
//int main()
//{
//
//    cin>>s1>>s2;
//    if (s1.size()>s2.size()) swap(s1,s2);
//    n=s1.size();
//    m=s2.size();
//    for (int i=0; i<n; i++)
//    {
//        for (int j=0; j<m; j++)
//        {
//            sol=0;
//            if (s1[i]==s2[j])
//            {
//                dp[1][j+1]=dp[0][j]+1;
//                sol=1;
//
//            }
//            if (dp[1][j+1]<dp[1][j])
//            {
//                dp[1][j+1]=dp[1][j];
//                sol=2;
//
//            }
//            if (dp[0][j+1]>dp[1][j+1])
//            {
//                dp[1][j+1]=dp[0][j+1];
//                sol=3;
//
//            }
//            if (sol==1)  s[1][j+1]=s[0][j]+s1[i];
//            if (sol==2)  s[1][j+1]=s[1][j];
//            if (sol==3)  s[1][j+1]=s[0][j+1];
//            if (i==n-1)
//            {
//                if (dp[1][j+1]>ma)
//                {
//                    ma=dp[1][j+1];
//                    ans=j+1;
//                }
//            }
//        }
//        for (int j=0;j<m;j++)
//        {
//            dp[0][j+1]=dp[1][j+1];
//            s[0][j+1]=s[1][j+1];
//        }
//
//    }
//    cout<<s[1][ans];
}*/
#include <bits/stdc++.h>
using namespace std;
long long n,dp[100099][2],md=1e9+7;
vector <int> v[100999];
int dfs(int node,int p,int color)
{
    if (dp[node][color]!=-1) return dp[node][color];
    if (v[node].size()==1 && v[node][0]==p)
    {
        return 1;
    }
    long long &ret=dp[node][color]=1;
    for (int i=0;i<v[node].size();i++)
    {
        int u=v[node][i];
        if (u==p) continue;
        if (color==1)
        {
            ret*=dfs(u,node,0)%md;
            ret%=md;
        }
        else ret*=dfs(u,node,0)%md+dfs(u,node,1)%md;
        ret%=md;
    }
    return ret;

}
int main()
{
    memset(dp,-1,sizeof(dp));
    cin>>n;
    for (int i=0;i<n-1;i++)
    {
        int a,b;
        cin>>a>>b;
        a--;
        b--;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    cout<<(dfs(0,-1,0)%md+dfs(0,-1,1)%md)%md;
}


Measured memory_bytes: 17024