#include <bits/stdc++.h>
using namespace std;
const int maxn = 10010;
vector<int> t[maxn * 4];
bitset<maxn> ans, y;
void add(int o, int l, int r, int ql, int qr, int w) {
  int mid;
  if (l == ql && qr == r) {
    t[o].push_back(w);
    return;
  }
  if (l == r) return;
  mid = (l + r) / 2;
  if (ql > mid)
    add(2 * o + 1, mid + 1, r, ql, qr, w);
  else {
    if (qr <= mid)
      add(2 * o, l, mid, ql, qr, w);
    else {
      add(2 * o, l, mid, ql, mid, w);
      add(2 * o + 1, mid + 1, r, mid + 1, qr, w);
    }
  }
}
void dfs(int o, int l, int r, bitset<maxn> y) {
  int mid, i;
  bitset<maxn> z = y;
  for (i = t[o].size() - 1; i >= 0; i--) {
    z |= (z << t[o][i]);
  }
  if (l == r) {
    ans |= z;
    return;
  }
  mid = (l + r) / 2;
  dfs(2 * o, l, mid, z);
  dfs(2 * o + 1, mid + 1, r, z);
}
int main() {
  int i, l, r, w, n, q, cnt;
  scanf("%d%d", &n, &q);
  for (i = 0; i < 2 * n + 10; i++) t[i].clear();
  for (i = 1; i <= q; i++) {
    scanf("%d%d%d", &l, &r, &w);
    add(1, 1, n, l, r, w);
  }
  y.reset();
  y[0] = 1;
  ans.reset();
  dfs(1, 1, n, y);
  cnt = 0;
  for (i = 1; i <= n; i++) {
    if (ans[i]) cnt++;
  }
  printf("%d\n", cnt);
  for (i = 1; i <= n; i++) {
    if (ans[i] == 1) {
      printf("%d ", i);
    }
  }
  printf("\n");
  return 0;
}
