#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 10;
const long long int Mod = 998244353;
vector<int> adj[maxn];
long long int dp[maxn], pd[maxn], alone[maxn];
int n;
void dfs(int u, int p = -1) {
  dp[u] = pd[u] = 0;
  alone[u] = 1;
  for (auto v : adj[u])
    if (v ^ p) {
      dfs(v, u);
      dp[u] = ((dp[u] * (2 * dp[v] + alone[v]) % Mod) +
               ((alone[u] + pd[u]) * (alone[v] + pd[v]) % Mod)) %
              Mod;
      pd[u] = (pd[u] * (dp[v] * 2 + alone[v]) + alone[u] * dp[v]) % Mod;
      alone[u] = (alone[u] * (alone[v] + dp[v])) % Mod;
    }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 1; i < n; i++) {
    int fi, se;
    cin >> fi >> se;
    fi--, se--;
    adj[fi].push_back(se);
    adj[se].push_back(fi);
  }
  dfs(0);
  cout << (dp[0] + alone[0]) % Mod << endl;
  return 0;
}
