func_code_string: #include <bits/stdc++.h>   using namespace std;   mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());   const int N = 1100;   int n;   vector<int> g[N];   int ed[N][3];   int ans[10 * N][3];   int ansSz;   void addAns(int v, int u, int x) {     ans[ansSz][0] = v + 1;     ans[ansSz][1] = u + 1;     ans[ansSz][2] = x;     ansSz++;   }   int getLeaf(int v, int par, int u) {     if (v == u) return -1;     if ((int)g[v].size() == 1) return v;     int res = -2;     for (int w : g[v]) {       if (w == par) continue;       int z = getLeaf(w, v, u);       if (z == -1) return -1;       res = z;     }     return res;   }   int main() {     scanf( %d , &n);     for (int i = 1; i < n; i++) {       int v, u, w;       scanf( %d%d%d , &v, &u, &w);       v--;       u--;       ed[i][0] = v;       ed[i][1] = u;       ed[i][2] = w;       g[v].push_back(u);       g[u].push_back(v);     }     for (int v = 0; v < n; v++) {       if ((int)g[v].size() == 2) {         printf( NO n );         return 0;       }     }     for (int i = 1; i < n; i++) {       int v = ed[i][0], u = ed[i][1], x = ed[i][2] / 2;       vector<int> vv, uu;       if ((int)g[v].size() == 1) {         vv.push_back(v);       } else {         for (int w : g[v]) {           int z = getLeaf(w, v, u);           if (z != -1) vv.push_back(z);           if ((int)vv.size() == 2) break;         }       }       if ((int)g[u].size() == 1) {         uu.push_back(u);       } else {         for (int w : g[u]) {           int z = getLeaf(w, u, v);           if (z != -1) uu.push_back(z);           if ((int)uu.size() == 2) break;         }       }       if ((int)uu.size() == 1) swap(vv, uu);       if ((int)uu.size() == 1) {         addAns(vv[0], uu[0], 2 * x);       } else if ((int)vv.size() == 1) {         addAns(vv[0], uu[0], x);         addAns(vv[0], uu[1], x);         addAns(uu[0], uu[1], -x);       } else {         addAns(vv[0], uu[0], x);         addAns(vv[1], uu[1], x);         addAns(vv[0], vv[1], -x);         addAns(uu[0], uu[1], -x);       }     }     printf( YES n );     printf( %d n , ansSz);     for (int i = 0; i < ansSz; i++)       printf( %d %d %d n , ans[i][0], ans[i][1], ans[i][2]);     return 0;   }   