#include <bits/stdc++.h>
using namespace std;
const int MAXN = 500007;
const int MOD = 998244353;
int n;
int dwa[MAXN], pod[MAXN];
vector<int> G[MAXN];
bool odw[MAXN];
int dfs(int v) {
  odw[v] = true;
  pod[v] = 1;
  for (auto w : G[v])
    if (!odw[w]) pod[v] += dfs(w);
  return pod[v];
}
int RET = 0;
int dfs2(int v) {
  odw[v] = true;
  int ret = 1;
  for (auto w : G[v])
    if (!odw[w]) {
      ret = (1LL * ret * (dwa[pod[w] - 1] + dfs2(w))) % MOD;
    }
  ret = (MOD - ret + dwa[pod[v] - 1]) % MOD;
  RET += (1LL * ret * dwa[n - pod[v]]) % MOD;
  RET %= MOD;
  return ret;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n;
  dwa[0] = 1;
  for (int i = 1; i < MAXN; i++) {
    dwa[i] = (2 * dwa[i - 1]) % MOD;
  }
  for (int i = 1; i < n; i++) {
    int a, b;
    cin >> a >> b;
    G[a].push_back(b);
    G[b].push_back(a);
  }
  dfs(1);
  for (int i = 1; i <= n; i++) odw[i] = false;
  dfs2(1);
  cout << (2 * RET) % MOD << "\n";
  return 0;
}
