#include <bits/stdc++.h>
using namespace std;
const int N = 1000005, p = 998244353, inv2 = (p + 1) / 2;
int read() {
  int f = 1, g = 0;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar())
    if (ch == '-') f = -1;
  for (; isdigit(ch); ch = getchar()) g = g * 10 + ch - '0';
  return f * g;
}
int n, ans, f[N], size, fir[N];
struct edge {
  int u, v, nex;
} e[N * 2];
void add(int u, int v) {
  e[++size] = (edge){u, v, fir[u]};
  fir[u] = size;
}
void check(int &x, int y) { x = (x + y < p) ? (x + y) : (x + y - p); }
void work(int x, int fa) {
  f[x] = 1;
  for (int i = fir[x]; i; i = e[i].nex)
    if (e[i].v != fa) {
      int y = e[i].v;
      work(y, x);
      f[x] = (long long)f[x] * (1 - (long long)f[y] * inv2 % p + p) % p;
    }
  check(ans, 1 - f[x] + p);
}
int main() {
  n = read();
  for (int i = 1; i < n; i++) {
    int u = read(), v = read();
    add(u, v);
    add(v, u);
  }
  work(1, 0);
  for (int i = 1; i <= n; i++) ans = ans * 2 % p;
  printf("%d\n", ans);
  return 0;
}
