func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m, x, y, fail;   int G[305][305], v[305], u[305], l[305], z[305];   long long int A, B, C, a[305], b[305], d[305];   int rx[305 * 305 * 2], ry[305 * 305 * 2], rc[305 * 305 * 2], cnt;   void dfs(int x) {     v[x] = 1;     A += a[x];     B += b[x];     for (int i = (0); i < (n); i++)       if (!v[i] && G[x][i]) G[x][i] = G[i][x] = 2, dfs(i);     l[m++] = x;   }   void add(int x, int y, long long int c) {     rx[cnt] = x + 1, ry[cnt] = y + 1, rc[cnt++] = (int)c;   }   void pull(int x, long long int d) {     z[x] = 1;     for (int i = (0); i < (n); i++)       if (G[x][i] == 2 && !u[i] && d && !z[i]) {         if (a[i] >= d) {           a[i] -= d;           a[x] += d;           add(i, x, d);           d = 0;         } else {           pull(i, d - a[i]);           long long int t = min(d, a[i]);           a[x] += t;           a[i] -= t;           d -= t;           add(i, x, t);         }       }   }   void push(int x, long long int d) {     z[x] = 1;     for (int i = (0); i < (n); i++)       if (G[x][i] == 2 && !u[i] && d && !z[i]) {         if (C - a[i] >= d) {           a[x] -= d;           a[i] += d;           add(x, i, d);           d = 0;         } else {           push(i, d - (C - a[i]));           long long int t = min(d, C - a[i]);           a[i] += t;           a[x] -= t;           d -= t;           add(x, i, t);         }       }   }   int main() {     scanf( %d%I64d%d , &n, &C, &m);     for (int i = (0); i < (n); i++) scanf( %I64d , &a[i]);     for (int i = (0); i < (n); i++) scanf( %I64d , &b[i]);     while (m--) {       scanf( %d%d , &x, &y), x--, y--;       G[x][y] = G[y][x] = 1;     }     for (int i = (0); i < (n); i++)       if (!v[i]) {         A = B = 0;         m = 0;         dfs(i);         if (A != B) {           fail = 1;           break;         }         for (int j = (0); j < (m); j++) {           int r = l[j];           memset(z, 0, sizeof(z));           if (a[r] > b[r]) push(r, a[r] - b[r]);           if (a[r] < b[r]) pull(r, b[r] - a[r]);           u[r] = 1;         }       }     if (fail)       puts( NO );     else {       printf( %d n , cnt);       for (int i = (0); i < (cnt); i++) printf( %d %d %d n , rx[i], ry[i], rc[i]);     }     return 0;   }   