#include #include using namespace std; using ll = long long; using P = pair; using graph = vector>; constexpr ll MOD = 998244353; graph G; vector cnt, parent; ll modpow(ll a, ll x){ ll ans = 1; while(x > 0){ if(x & 1){ ans *= a; ans %= MOD; } a *= a; a %= MOD; x >>= 1; } return ans; } ll mygcd(ll a, ll b){ while(b != 0){ ll r = a%b; a = b; b = r; } return a; } int dfs(int c, int p){ if(cnt[c] != -1) return cnt[c]; cnt[c] = 1; for(auto &nex: G[c]){ if(nex == p) continue; cnt[c] += dfs(nex, c); } return cnt[c]; } int main(){ ll n; cin >> n; G = graph(n); cnt = vector(n, -1); parent = vector(n, -1); for(int i = 0; i < n-1; i++){ int u, v; cin >> u >> v; u--; v--; G[u].push_back(v); G[v].push_back(u); } dfs(0, -1); ll tot = 0; for(int i = 1; i < n; i++){ tot += (n-cnt[i])*(n-cnt[i]-1); tot += cnt[i]*(cnt[i]-1); tot %= MOD; } cout << tot*modpow(n*(n-1)*(n-1), MOD-2)%MOD << endl; return 0; }