func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 1e5 + 5;   int n, sz[maxn], ans[maxn];   long long sum;   vector<int> adj[maxn], vec;   void dfs(int u, int par) {     sz[u] = 1;     for (auto v : adj[u])       if (v != par) {         dfs(v, u);         sz[u] += sz[v];       }   }   void DFSend(int u, int par) {     vec.push_back(u);     for (auto v : adj[u])       if (v != par) DFSend(v, u);   }   int centroid(int u, int par) {     for (auto v : adj[u])       if (v != par && sz[v] * 2 > n) return centroid(v, u);     return u;   }   void read_input() {     cin >> n;     for (int i = 1; i < n; i++) {       int u, v;       cin >> u >> v;       adj[u].push_back(v);       adj[v].push_back(u);     }   }   void solve() {     dfs(1, 0);     for (int i = 1; i <= n; i++) sum += min(sz[i], n - sz[i]);     sum *= 2;     DFSend(centroid(1, 0), -1);     for (int i = 0; i < n; i++) ans[vec[i]] = vec[(i + n / 2) % n];     cout << sum <<   n ;     for (int i = 1; i <= n; i++) cout << ans[i] <<    ;   }   int main() {     read_input(), solve();     return 0;   }   