#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 10, mod = 998244353;
long long dp1[maxn], dp2[maxn], dp3[maxn], pd1, pd2, pd3;
vector<int> adj[maxn];
int add(long long a, long long b) { return (a + b) % mod; }
int mul(long long a, long long b) { return (a * b) % mod; }
void dfs(int v, int par) {
  dp2[v] = dp3[v] = 1;
  for (auto u : adj[v]) {
    if (u == par) continue;
    dfs(u, v);
    pd3 = add(pd3, mul(dp3[v], add(dp1[u], dp3[u])));
    pd2 = add(pd2, mul(dp2[v], add(dp1[u], dp3[u])));
    pd2 = add(pd2, mul(dp2[v], dp1[u]));
    pd1 = add(pd1, mul(dp1[v], add(dp1[u], dp3[u])));
    pd1 = add(pd1, add(mul(dp1[v], dp1[u]), mul(dp2[v], dp2[u])));
    dp1[v] = pd1, dp2[v] = pd2, dp3[v] = pd3;
    pd1 = pd2 = pd3 = 0;
  }
  return;
}
int main() {
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 0; i < n - 1; i++) {
    int u, v;
    cin >> u >> v;
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  dfs(1, 1);
  cout << add(dp1[1], dp3[1]);
}
