#include <bits/stdc++.h>
using namespace std;
long long bigmod(long long a, long long p) {
  long long ret = 1;
  while (p > 0) {
    if ((p & 1)) ret = (ret * a) % 998244353LL;
    p >>= 1;
    a = (a * a) % 998244353LL;
  }
  return ret;
}
long long modinverse(long long a) { return bigmod(a, 998244353LL - 2); }
long long n, fre[300009], eng[300009], mat[300009];
vector<int> graph[300009];
void dfs(int u, int par) {
  fre[u] = eng[u] = mat[u] = 0;
  long long mul = 1, mul2 = 1;
  for (int i = 0; i < graph[u].size(); i++) {
    int v = graph[u][i];
    if (v == par) continue;
    dfs(v, u);
    mul *= (fre[v] + eng[v]);
    mul2 *= (fre[v] + 2 * eng[v]);
    mul %= 998244353LL;
    mul2 %= 998244353LL;
  }
  fre[u] = mul;
  mat[u] = mul2;
  for (int i = 0; i < graph[u].size(); i++) {
    int v = graph[u][i];
    if (v == par) continue;
    eng[u] += (modinverse((fre[v] + 2 * eng[v]) % 998244353LL) * mat[v]) %
              998244353LL;
  }
  eng[u] %= 998244353LL;
  eng[u] *= mul2;
  eng[u] %= 998244353LL;
}
int main() {
  scanf("%lld", &n);
  int u, v;
  for (int i = 1; i < n; i++) {
    scanf("%d %d", &u, &v);
    graph[u].push_back(v);
    graph[v].push_back(u);
  }
  dfs(1, -1);
  long long ans = (fre[1] + eng[1]) % 998244353LL;
  cout << ans << endl;
  return 0;
}
