func_code_string: #include <bits/stdc++.h>   using namespace std;   const double PI = 4 * atan(1);   template <int p>   struct FF {     long long val;     FF(long long x = 0) { val = (x % p + p) % p; }     bool operator==(const FF<p> other) { return val == other.val; }     bool operator!=(const FF<p> other) { return val != other.val; }     FF operator+() const { return val; }     FF operator-() const { return -val; }     FF& operator+=(const FF<p> other) {       val = (val + other.val) % p;       return *this;     }     FF& operator-=(const FF<p> other) {       *this += -other;       return *this;     }     FF& operator*=(const FF<p> other) {       val = (val * other.val) % p;       return *this;     }     FF& operator/=(const FF<p> other) {       *this *= other.inv();       return *this;     }     FF operator+(const FF<p> other) const { return FF(*this) += other; }     FF operator-(const FF<p> other) const { return FF(*this) -= other; }     FF operator*(const FF<p> other) const { return FF(*this) *= other; }     FF operator/(const FF<p> other) const { return FF(*this) /= other; }     static FF<p> pow(const FF<p> a, long long b) {       if (!b) return 1;       return pow(a * a, b >> 1) * (b & 1 ? a : 1);     }     FF<p> pow(long long b) const { return pow(*this, b); }     FF<p> inv() const { return pow(p - 2); }   };   template <int p>   FF<p> operator+(long long lhs, const FF<p> rhs) {     return FF<p>(lhs) += rhs;   }   template <int p>   FF<p> operator-(long long lhs, const FF<p> rhs) {     return FF<p>(lhs) -= rhs;   }   template <int p>   FF<p> operator*(long long lhs, const FF<p> rhs) {     return FF<p>(lhs) *= rhs;   }   template <int p>   FF<p> operator/(long long lhs, const FF<p> rhs) {     return FF<p>(lhs) /= rhs;   }   int N;   vector<int> adj[500013];   FF<998244353> dp[500013];   FF<998244353> ans;   void dfs(int n, int par = -1) {     dp[n] = 1;     for (int v : adj[n])       if (v != par) {         dfs(v, n);         dp[n] *= 1 - dp[v] / 2;       }     ans += 1 - dp[n];   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cin >> N;     for (int i = 0; i < N - 1; i++) {       int u, v;       cin >> u >> v;       --u;       --v;       adj[u].push_back(v);       adj[v].push_back(u);     }     dfs(0);     for (int i = 0; i < N; i++) ans = ans * 2;     cout << ans.val << endl;     return 0;   }   