from collections import deque MOD = 998244353 N = int(input()) degrees = [0]*N connect = [[] for _ in range(N)] for _ in range(N-1): u,v = map(lambda x:int(x)-1,input().split()) connect[u].append(v) connect[v].append(u) degrees[u] += 1 degrees[v] += 1 q = deque([0]) visited = [False]*N visited[0] = True dist = [0]*N while q: v = q.popleft() for u in connect[v]: if not visited[u]: q.append(u) visited[u] = True dist[u] = dist[v] + 1 a = max(range(N),key=lambda x:dist[x]) q = deque([a]) visited = [False]*N visited[a] = True dist = [0]*N while q: v = q.popleft() for u in connect[v]: if not visited[u]: q.append(u) visited[u] = True dist[u] = dist[v] + 1 b = max(range(N),key=lambda x:dist[x]) d = dist[b] v = b path = [b] while d >= 0: for u in connect[v]: if dist[u] == d-1: path.append(u) d -= 1 v = u break else: break q = deque(path) visited = [False]*N for i in path: visited[i] = True dist = [0]*N while q: v = q.popleft() for u in connect[v]: if not visited[u]: q.append(u) visited[u] = True dist[u] = dist[v] + 1 #print(dist) c = max(range(N),key=lambda x:dist[x] if x != a and x != b else -1) #print(a,b,c) S = set(path) q = deque([c]) visited = [False]*N visited[c] = True dist = [0]*N while q: v = q.popleft() if v in S: F = v q = deque([]) break for u in connect[v]: if not visited[u]: q.append(u) visited[u] = True dist[u] = dist[v] + 1 #print(F) q = deque([F]) visited = [False]*N visited[F] = True dist = [0]*N while q: v = q.popleft() for u in connect[v]: if not visited[u]: q.append(u) visited[u] = True dist[u] = dist[v] + 1 x,y,z = dist[a],dist[b],dist[c] K = x+y+z #print(x,y,z) ans = pow(2,N+2,MOD) - pow(2,N-K,MOD) * (pow(2,x+1,MOD) + pow(2,y+1,MOD) + pow(2,z+1,MOD) - 3) ans %= MOD print(ans)