// https://szkopul.edu.pl/problemset/problem/oNnWY6ZuzzhvG-jCmijiXkIk/site/?key=statement
// OI XXIV (2 etap)
// Kontenery
#include <algorithm>
#include <iostream>
#include <map>
#include <math.h>
#include <set>
#include <unordered_map>
#include <vector>
constexpr int sizik = 100 * 1001;
int kont[sizik];
std::set<int> s;
std::unordered_map<int, int> temp_arr[sizik];
int main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int n, k;
std::cin >> n >> k;
int prw_n = sqrt(n);
prw_n *= 12;
for (; k > 0; k--) {
int a, l, d;
std::cin >> a >> l >> d;
if (l <= prw_n) {
int curr = a;
for (int i = 0; i < l; i++) {
kont[curr]++;
curr += d;
}
} else {
s.insert(d);
temp_arr[d][a]++;
temp_arr[d][a + l * d]--;
}
}
for (const auto& d : s) {
for (int i = 0; i < d; i++) {
kont[i] += temp_arr[d][i];
}
for (int i = d; i <= n; i++) {
temp_arr[d][i] += temp_arr[d][i - d];
kont[i] += temp_arr[d][i];
}
}
for (int i = 1; i <= n; i++) {
std::cout << kont[i] << ' ';
}
std::cout << '\n';
return 0;
}