#include <bits/stdc++.h>
using namespace std;
int n, m, f[155][101005], a[101005], C[101005][155];
inline void mult(int &a, int b) { a = (a + b) % 1000000007; }
int main() {
  scanf("%d%d", &n, &m);
  C[0][0] = 1;
  for (int i = 1; i <= n + 150; ++i)
    for (int j = 0; j <= 150; ++j)
      C[i][j] = j ? (C[i - 1][j - 1] + C[i - 1][j]) % 1000000007 : 1;
  for (int i = 1; i <= n; ++i) scanf("%d", a + i);
  for (int i = 1; i <= m; ++i) {
    int l, r, k;
    scanf("%d%d%d", &l, &r, &k);
    mult(f[k][l], 1);
    for (int j = 0; j <= k; ++j)
      mult(f[k - j][r + 1], 1000000007 - C[r - l + j][j]);
  }
  for (int k = 150; k >= 0; --k)
    for (int i = 1; i <= n; ++i)
      mult(f[k][i], (f[k + 1][i] + f[k][i - 1]) % 1000000007);
  for (int i = 1; i <= n; ++i) printf("%d ", (f[0][i] + a[i]) % 1000000007);
}
