func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e3 + 5;   int deg[N];   vector<int> adj[N];   int e[N][3];   int seen[N];   int dfs(int u) {     seen[u] = true;     if (deg[u] == 1) return u;     for (int i = 0; i < adj[u].size(); i++)       if (!seen[adj[u][i]]) return dfs(adj[u][i]);   }   int main() {     int n;     cin >> n;     if (n == 2) {       int x;       cin >> x >> x >> x;       cout <<  YES n ;       cout << 2 <<   n ;       cout <<  1 2 13 n ;       cout <<  1 2   << x - 13;       return 0;     }     if (n == 3) {       cout <<  NO n ;       return 0;     }     for (int i = 0; i < n - 1; i++) {       int u, v, val;       cin >> u >> v >> val;       u--, v--;       deg[u]++;       deg[v]++;       adj[u].push_back(v);       adj[v].push_back(u);       e[i][0] = u;       e[i][1] = v;       e[i][2] = val;     }     for (int i = 0; i < n; i++)       if (deg[i] == 2) {         cout <<  NO n ;         return 0;       }     vector<pair<int, pair<int, int>>> ans;     for (int i = 0; i < n - 1; i++) {       int u, v, val;       u = e[i][0];       v = e[i][1];       val = e[i][2];       if (deg[u] == 1 || deg[v] == 1) {         if (deg[v] == 1) swap(u, v);         int w, z;         memset(seen, 0, sizeof seen);         seen[v] = true;         vector<int> adj_temp;         for (int i = 0; adj_temp.size() < 2; i++)           if (adj[v][i] != u) adj_temp.push_back(adj[v][i]);         w = dfs(adj_temp[0]);         z = dfs(adj_temp[1]);         u++, w++, z++;         ans.push_back({u, {w, val / 2}});         ans.push_back({w, {z, -val / 2}});         ans.push_back({u, {z, val / 2}});       } else {         int x, y, w, z;         vector<int> u_adj, v_adj;         for (int i = 0; u_adj.size() < 2; i++)           if (adj[u][i] != v) u_adj.push_back(adj[u][i]);         for (int i = 0; v_adj.size() < 2; i++)           if (adj[v][i] != u) v_adj.push_back(adj[v][i]);         memset(seen, 0, sizeof seen);         seen[v] = seen[u] = true;         x = dfs(u_adj[0]);         y = dfs(u_adj[1]);         w = dfs(v_adj[0]);         z = dfs(v_adj[1]);         x++, y++, w++, z++;         ans.push_back({x, {w, val / 2}});         ans.push_back({x, {y, -val / 2}});         ans.push_back({w, {z, -val / 2}});         ans.push_back({y, {z, val / 2}});       }     }     cout <<  YES n ;     cout << ans.size() <<   n ;     for (int i = 0; i < ans.size(); i++)       cout << ans[i].first <<     << ans[i].second.first <<                << ans[i].second.second <<   n ;   }   