#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int n, m, a[N], b[N];
struct _ {
  int u, v;
  long long w;
} s[N];
long long deg[N];
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; ++i) {
    int u, v, w;
    scanf("%d%d%d", &u, &v, &w);
    deg[u] += w, deg[v] -= w;
  }
  for (int i = 1; i <= n; ++i) {
    if (deg[i] > 0) a[++*a] = i;
    if (deg[i] < 0) b[++*b] = i;
  }
  int cnt = 0;
  while (*a && *b) {
    if (deg[a[*a]] > -deg[b[*b]]) {
      s[++cnt] = {a[*a], b[*b], -deg[b[*b]]};
      deg[a[*a]] += deg[b[*b]];
      --*b;
    } else if (deg[a[*a]] < -deg[b[*b]]) {
      s[++cnt] = {a[*a], b[*b], deg[a[*a]]};
      deg[b[*b]] += deg[a[*a]];
      --*a;
    } else {
      s[++cnt] = {a[*a], b[*b], deg[a[*a]]};
      --*a, --*b;
    }
  }
  printf("%d\n", cnt);
  for (int i = 1; i <= cnt; ++i) printf("%d %d %lld\n", s[i].u, s[i].v, s[i].w);
}
