func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e3 + 5;   int n, v, e;   bool bo[N][N], vis[N];   vector<int> path[N][N];   int a[N], b[N];   vector<int> G[N];   long long A, B;   void dfs(int x) {     A += a[x];     B += b[x];     vis[x] = 1;     for (int i = 0; i < G[x].size(); i++) {       int u = G[x][i];       if (vis[u]) continue;       dfs(u);     }   }   int ans, X[N * N], Y[N * N], D[N * N];   void dfs(int st, int pre, int ed) {     path[st][ed] = path[st][pre];     path[st][ed].push_back(ed);     vis[ed] = 1;     for (int i = 0; i < G[ed].size(); i++) {       int u = G[ed][i];       if (vis[u]) continue;       dfs(st, ed, u);     }   }   void work(int st, int ed, int flow, int id) {     int tmp = path[st][ed][id];     if (tmp == ed) return;     int tmp1 = path[st][ed][++id];     ++ans;     X[ans] = tmp;     Y[ans] = tmp1;     D[ans] = max(0, flow - a[tmp1]);     int rem = flow - D[ans];     if (rem == flow) ans--;     work(st, ed, flow, id);     if (rem) {       ++ans;       X[ans] = tmp;       Y[ans] = tmp1;       D[ans] = rem;     }   }   int main() {     scanf( %d%d%d , &n, &v, &e);     for (int i = 1; i <= n; i++) scanf( %d , a + i);     for (int i = 1; i <= n; i++) scanf( %d , b + i);     while (e--) {       int x, y;       scanf( %d%d , &x, &y);       G[x].push_back(y);       G[y].push_back(x);       bo[x][y] = bo[y][x] = 1;     }     for (int i = 1; i <= n; i++) {       if (vis[i]) continue;       A = B = 0;       dfs(i);       if (A != B) return puts( NO );     }     for (int i = 1; i <= n; i++)       for (int j = 1; j <= n; j++)         for (int k = 1; k <= n; k++) bo[j][k] |= bo[j][i] && bo[i][k];     for (int i = 1; i <= n; i++) {       for (int j = 1; j <= n; j++) vis[j] = 0;       dfs(i, 0, i);     }     while (1) {       bool ok = 1;       for (int i = 1; i <= n; i++) {         if (b[i] >= a[i]) continue;         for (int j = 1; j <= n; j++) {           if (i == j || !bo[i][j]) continue;           if (b[j] <= a[j]) continue;           int flow = min(a[i] - b[i], b[j] - a[j]);           work(i, j, flow, 0);           a[i] -= flow;           a[j] += flow;           ok = 0;         }       }       if (ok) break;     }     printf( %d n , ans);     for (int i = 1; i <= ans; i++) printf( %d %d %d n , X[i], Y[i], D[i]);   }   