#include <bits/stdc++.h>
using namespace std;
using vi = vector<int>;
using ll = long long;
using vl = vector<ll>;
const ll mod = 998244353;
const int N = 2e5 + 5;
vl e[N];
vl dp[3][N];
ll solve(int u, int idx, int k){
if(e[u].size() == 0){
return 1;
}
if(idx == e[u].size()){
if(k == 1) return 0;
return 1;
}
ll& r = dp[k][u][idx];
if(r != -1) return r;
r = 0;
if(k == 0){ // don't need to return
// cut
r += solve(e[u][idx], 0, 1) * solve(u, idx + 1, 0);
// don't cut
r += solve(e[u][idx], 0, 0) * solve(u, idx + 1, 0);
}else if(k == 1){ // need to return
// cut
r += solve(e[u][idx], 0, 1) * solve(u, idx + 1, 1);
// don't cut
r += solve(e[u][idx], 0, 1) * solve(u, idx + 1, 0);
// don't cut and don't return
r += solve(e[u][idx], 0, 2) * solve(u, idx + 1, 1);
}else{ // don't return
// cut
r += solve(e[u][idx], 0, 1) * solve(u, idx + 1, 2);
// don't cut
r += solve(e[u][idx], 0, 2) * solve(u, idx + 1, 2);
}
r %= mod;
return r;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
for(int i = 1; i < n; i++){
int u,v;
cin >> u >> v;
e[u].push_back(v);
}
for(int i = 1; i <= n; i++){
dp[0][i] = vl(e[i].size() + 5, -1);
dp[1][i] = vl(e[i].size() + 5, -1);
dp[2][i] = vl(e[i].size() + 5, -1);
}
cout << solve(1, 0, 0) << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyB2aSA9IHZlY3RvcjxpbnQ+Owp1c2luZyBsbCA9IGxvbmcgbG9uZzsKdXNpbmcgdmwgPSB2ZWN0b3I8bGw+Owpjb25zdCBsbCBtb2QgPSA5OTgyNDQzNTM7CmNvbnN0IGludCBOID0gMmU1ICsgNTsKdmwgZVtOXTsKdmwgZHBbM11bTl07CmxsIHNvbHZlKGludCB1LCBpbnQgaWR4LCBpbnQgayl7CiAgICBpZihlW3VdLnNpemUoKSA9PSAwKXsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIGlmKGlkeCA9PSBlW3VdLnNpemUoKSl7CiAgICAgICAgaWYoayA9PSAxKSByZXR1cm4gMDsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIGxsJiByID0gZHBba11bdV1baWR4XTsKICAgIGlmKHIgIT0gLTEpIHJldHVybiByOwogICAgciA9IDA7CiAgICBpZihrID09IDApeyAvLyBkb24ndCBuZWVkIHRvIHJldHVybgogICAgICAgIC8vIGN1dCAKICAgICAgICByICs9IHNvbHZlKGVbdV1baWR4XSwgMCwgMSkgKiBzb2x2ZSh1LCBpZHggKyAxLCAwKTsKICAgICAgICAvLyBkb24ndCBjdXQKICAgICAgICByICs9IHNvbHZlKGVbdV1baWR4XSwgMCwgMCkgKiBzb2x2ZSh1LCBpZHggKyAxLCAwKTsKICAgIH1lbHNlIGlmKGsgPT0gMSl7ICAvLyBuZWVkIHRvIHJldHVybgogICAgICAgIC8vIGN1dAogICAgICAgIHIgKz0gc29sdmUoZVt1XVtpZHhdLCAwLCAxKSAqIHNvbHZlKHUsIGlkeCArIDEsIDEpOwogICAgICAgIC8vIGRvbid0IGN1dAogICAgICAgIHIgKz0gc29sdmUoZVt1XVtpZHhdLCAwLCAxKSAqIHNvbHZlKHUsIGlkeCArIDEsIDApOwogICAgICAgIC8vIGRvbid0IGN1dCBhbmQgZG9uJ3QgcmV0dXJuCiAgICAgICAgciArPSBzb2x2ZShlW3VdW2lkeF0sIDAsIDIpICogc29sdmUodSwgaWR4ICsgMSwgMSk7CiAgICB9ZWxzZXsgLy8gZG9uJ3QgcmV0dXJuCiAgICAgICAgLy8gY3V0CiAgICAgICAgciArPSBzb2x2ZShlW3VdW2lkeF0sIDAsIDEpICogc29sdmUodSwgaWR4ICsgMSwgMik7CiAgICAgICAgLy8gZG9uJ3QgY3V0CiAgICAgICAgciArPSBzb2x2ZShlW3VdW2lkeF0sIDAsIDIpICogc29sdmUodSwgaWR4ICsgMSwgMik7CiAgICB9CiAgICByICU9IG1vZDsKICAgIHJldHVybiByOwp9CmludCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICBpbnQgbjsKICAgIGNpbiA+PiBuOwogICAgZm9yKGludCBpID0gMTsgaSA8IG47IGkrKyl7CiAgICAgICAgaW50IHUsdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIGVbdV0ucHVzaF9iYWNrKHYpOwogICAgfQogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgIGRwWzBdW2ldID0gdmwoZVtpXS5zaXplKCkgKyA1LCAtMSk7CiAgICAgICAgZHBbMV1baV0gPSB2bChlW2ldLnNpemUoKSArIDUsIC0xKTsKICAgICAgICBkcFsyXVtpXSA9IHZsKGVbaV0uc2l6ZSgpICsgNSwgLTEpOwogICAgfQogICAgY291dCA8PCBzb2x2ZSgxLCAwLCAwKSA8PCAnXG4nOwp9