#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 5, mod = 998244353;
int n;
vector<int> to[maxn];
long long f[3][maxn];
void dfs(int u, int fa) {
  f[0][u] = f[1][u] = f[2][u] = 1;
  for (int v : to[u])
    if (v != fa) {
      dfs(v, u);
      f[0][u] = ((f[0][u] *
                  ((((((2 * f[0][v]) % mod) + ((2 * f[1][v]) % mod)) % mod) -
                    f[2][v]) %
                   mod)) %
                 mod);
      f[1][u] =
          ((f[1][u] *
            ((((((2 * f[0][v]) % mod) + f[1][v]) % mod) - f[2][v]) % mod)) %
           mod);
      f[2][u] =
          ((f[2][u] * ((((f[0][v] + f[1][v]) % mod) - f[2][v]) % mod)) % mod);
    }
}
int main() {
  scanf("%d", &n);
  for (int i = (1); i <= (n - 1); i++) {
    int u, v;
    scanf("%d", &u), scanf("%d", &v);
    to[u].push_back(v);
    to[v].push_back(u);
  }
  dfs(1, 0);
  long long ans = ((((((f[0][1] + f[1][1]) % mod) - f[2][1]) % mod) - 1) % mod);
  printf("%lld\n", ((ans + mod) % mod));
}
