#include <bits/stdc++.h>
const int N = 500010, mod = 998244353, i2 = (mod + 1) >> 1;
int n, ans;
std::vector<int> G[N];
int f[N], g[N], pw[N], size[N];
void dfs(int x, int fa) {
  size[x] = 1;
  f[x] = 1;
  for (auto y : G[x])
    if (y ^ fa) {
      dfs(y, x);
      size[x] += size[y];
      g[x] = (long long)g[x] * (f[y] + g[y]) * 2 % mod;
      g[x] = (g[x] + (long long)f[x] * f[y]) % mod;
      f[x] = (long long)f[x] * (f[y] + 2ll * g[y]) % mod;
    }
  ans = (ans + mod - (long long)f[x] * pw[n - size[x]] % mod) % mod;
}
int main() {
  scanf("%d", &n);
  for (int i = 1, x, y; i < n; i++) {
    scanf("%d%d", &x, &y);
    G[x].push_back(y);
    G[y].push_back(x);
  }
  pw[0] = 1;
  for (int i = 1; i <= n; i++) {
    pw[i] = (pw[i - 1] << 1) % mod;
  }
  ans = (long long)n * pw[n - 1] % mod;
  dfs(1, -1);
  ans = (ans << 1) % mod;
  printf("%d\n", ans);
  return 0;
}
