#include <bits/stdc++.h>
using namespace std;
const long long int N = 500005;
const long long int mod = 119 << 23 | 1;
vector<long long int> v[N];
pair<long long int, long long int> dp[N][2];
long long int power(long long int a, long long int b, long long int c) {
  long long int ans = 1;
  while (b > 0) {
    if (b & 1) ans = (ans * a) % c;
    a = (a * a) % c;
    b = b >> 1;
  }
  return ans;
}
void dfs(long long int node, long long int par) {
  long long int num = 0;
  long long int den = 1;
  for (auto i : v[node]) {
    if (i != par) {
      dfs(i, node);
      num = ((((((2LL * num) % mod) * den) % mod) * dp[i][0].second) % mod +
             ((((den * (den - num + mod)) % mod) * dp[i][0].first) % mod)) %
            mod;
      den = (den * ((den * dp[i][0].second) % mod) * 2LL) % mod;
    }
  }
  dp[node][1].first = (num) % mod;
  dp[node][1].second = (den) % mod;
  dp[node][0].first = (den - num + mod) % mod;
  dp[node][0].second = (den) % mod;
}
signed main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  long long int n;
  cin >> n;
  for (long long int i = 0; i < n - 1; i++) {
    long long int x, y;
    cin >> x >> y;
    v[x].push_back(y);
    v[y].push_back(x);
  }
  for (long long int i = 0; i < N; i++) {
    dp[i][0] = {1LL, 1LL};
    dp[i][1] = {0LL, 1LL};
  }
  dfs(1, 1);
  long long int ans = 0;
  for (long long int i = 1; i <= n; i++) {
    ans += ((dp[i][1].first * power(dp[i][1].second, mod - 2, mod)) % mod);
    ans %= mod;
  }
  ans = ans % mod;
  ans = ans * power(2LL, n, mod);
  ans %= mod;
  cout << ans << '\n';
  return 0;
}
