func_code_string: #include <bits/stdc++.h>   const int mod = 1e9 + 7;   const int N = 1010;   const int inf = 0x3f3f3f3f;   using namespace std;   long long sum[N];   int n, a[N], b[N], v, e;   int p[N];   int find(int x) {     if (p[x] != x) p[x] = find(p[x]);     return p[x];   }   vector<int> vt[N];   bool vis[N];   struct Data {     int a, b, c;   };   Data que[N * N];   int head;   bool dfs(int from, int to, int cap) {     if (from == to) return 1;     vis[from] = 1;     for (int i = 0; i < vt[from].size(); i++) {       int t = vt[from][i];       if (vis[t]) continue;       if (a[t] < cap) {         int tmp = cap - a[t];         a[from] -= cap - a[t];         a[t] += tmp;         que[head++] = (Data{from, t, tmp});         if (dfs(t, to, cap) == 0) {           a[from] += tmp;           a[t] -= tmp;           head--;           continue;         }         a[from] -= cap - tmp;         a[t] += cap - tmp;         que[head++] = (Data{from, t, cap - tmp});       } else {         if (dfs(t, to, cap) == 0) continue;         a[from] -= cap;         a[t] += cap;         que[head++] = (Data{from, t, cap});       }       return 1;     }     return 0;   }   int main() {     queue<int> quea[N], queb[N];     scanf( %d%d%d , &n, &v, &e);     for (int i = 1; i <= n; i++) {       scanf( %d , &a[i]);       p[i] = i;     }     for (int i = 1; i <= n; i++) scanf( %d , &b[i]);     for (int i = 1; i <= e; i++) {       int x, y;       scanf( %d%d , &x, &y);       vt[x].push_back(y);       vt[y].push_back(x);       p[find(x)] = find(y);     }     for (int i = 1; i <= n; i++) {       int x = find(i);       sum[x] += a[i] - b[i];       if (a[i] > b[i]) quea[x].push(i);       if (b[i] > a[i]) queb[x].push(i);     }     for (int i = 1; i <= n; i++)       if (sum[i]) return puts( NO ), 0;     for (int i = 1; i <= n; i++) {       if (find(i) != i) continue;       while (quea[i].size()) {         memset(vis, 0, sizeof(vis));         int x = quea[i].front();         int y = queb[i].front();         if (a[x] - b[x] > b[y] - a[y]) {           dfs(x, y, b[y] - a[y]);           queb[i].pop();         } else if (a[x] - b[x] < b[y] - a[y]) {           dfs(x, y, a[x] - b[x]);           quea[i].pop();         } else {           dfs(x, y, a[x] - b[x]);           quea[i].pop();           queb[i].pop();         }       }     }     cout << head << endl;     for (int i = 0; i < head; i++) {       Data da = que[i];       cout << da.a <<     << da.b <<     << da.c << endl;     }     return 0;   }   