#include <bits/stdc++.h>
using namespace std;
ifstream F("p.in");
const int M = 1000000007;
const int K = 110;
const int N = 100100;
int dp[K][N], b[N], c[N][K];
int n, m;
void add(int &x, int y) { x = ((x + y) % M + M) % M; }
int main() {
  ios::sync_with_stdio(0);
  for (int n = 0; n < N; ++n) {
    c[n][0] = 1;
    for (int k = 1; k <= min(n, K - 1); ++k)
      c[n][k] = (c[n - 1][k - 1] + c[n - 1][k]) % M;
  }
  cin >> n >> m;
  for (int i = 1; i <= n; ++i) cin >> b[i];
  for (int tt = 1, l, r, k; tt <= m; ++tt) {
    cin >> l >> r >> k;
    add(dp[k][l], 1);
    for (int i = 0; i <= k; ++i)
      add(dp[i][r + i + 1], -c[r - l + k + 1][k - i]);
  }
  for (int k = 100; k >= 0; --k)
    for (int i = 1; i <= n; ++i) {
      if (k > 0) add(dp[k - 1][i], dp[k][i]);
      add(dp[k][i + 1], dp[k][i]);
    }
  for (int i = 1; i <= n; ++i) cout << (dp[0][i] + b[i]) % M << ' ';
  cout << '\n';
}
