func_code_string: #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;   }   