#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
const int N = 5e5 + 10;
int n;
struct node {
  int v, nxt;
} e[N << 1];
int first[N], cnt, dp[N];
inline void add(int u, int v) {
  e[++cnt].v = v;
  e[cnt].nxt = first[u];
  first[u] = cnt;
}
inline int inc(int x, int y) { return (x + y >= mod) ? x + y - mod : x + y; }
inline int dec(int x, int y) { return (x - y < 0) ? x - y + mod : x - y; }
const int iv = (mod + 1) / 2;
inline void dfs(int u, int f) {
  dp[u] = 1;
  for (int i = first[u]; i; i = e[i].nxt) {
    int v = e[i].v;
    if (v == f) continue;
    dfs(v, u);
    dp[u] = 1ll * dp[u] * (1 + dp[v]) % mod * iv % mod;
  }
  dp[u] = dec(1, dp[u]);
}
int main() {
  scanf("%d", &n);
  int t = 2;
  for (int i = 1, u, v; i < n; ++i) {
    scanf("%d%d", &u, &v);
    add(u, v);
    add(v, u);
    t = inc(t, t);
  }
  dfs(1, 0);
  int ans = 0;
  for (int i = 1; i <= n; ++i) ans = inc(ans, dp[i]);
  printf("%d\n", 1ll * t * ans % mod);
  return 0;
}
