func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize( 3 ,  inline ,  Ofast )   using namespace std;   template <class T>   inline void read(T &x) {     x = 0;     T f = 1;     char ch = getchar();     while (!isdigit(ch)) {       if (ch ==  - ) f = -1;       ch = getchar();     }     while (isdigit(ch)) x = x * 10 + ch - 48, ch = getchar();     x *= f;   }   inline void Setfile(string Str =   ) {     if (Str ==   ) return;     freopen((Str +  .in ).c_str(),  r , stdin);     freopen((Str +  .out ).c_str(),  w , stdout);   }   const int maxn = 500005, mod = 998244353;   int n, f[maxn][2], pw2[maxn], sz[maxn], ans;   vector<int> G[maxn];   inline int Add(int x, int y) { return (x += y) >= mod ? x - mod : x; }   inline int Mul(int x, int y) { return 1ll * x * y % mod; }   inline void dfs(int u = 1, int p = 0) {     f[u][0] = sz[u] = 1;     for (int i = 0; i < (int)G[u].size(); ++i) {       int v = G[u][i];       if (v == p) continue;       dfs(v, u), sz[u] += sz[v],           f[u][1] = Add(Mul(f[u][1], Mul(2, Add(f[v][0], f[v][1]))),                         Mul(f[u][0], f[v][0])),           f[u][0] = Mul(f[u][0], Add(Mul(f[v][1], 2), f[v][0]));     }     ans = Add(ans, Mul(f[u][1], pw2[n - sz[u] + 1]));   }   int main() {     Setfile();     pw2[0] = 1;     for (int i = 1; i < maxn; ++i) pw2[i] = Add(pw2[i - 1], pw2[i - 1]);     read(n);     for (int i = 1, x, y; i < n; ++i)       read(x), read(y), G[x].push_back(y), G[y].push_back(x);     dfs(), printf( %d n , ans);   }   