#include <bits/stdc++.h>   using namespace std;   const int inv = 1000000000;   const int minv = -inv;   const int max_n = 100010;   const int max_m = 100010;   const int max_k = 110;   const int modref = 1000000007;   int n, m;   int a[max_n];   int b[max_n][max_k + 1] = {0};   int c[max_k + 1] = {0};   int bin[max_n + max_k + 1][max_k + 1];   int main() {     for (int i = 0; i <= max_n + max_k; ++i) {       bin[i][0] = 1;       if (i <= max_k) bin[i][i] = 1;       for (int j = 1; j <= min(i - 1, max_k); ++j) {         bin[i][j] = bin[i - 1][j - 1] + bin[i - 1][j];         bin[i][j] %= modref;       }     }     scanf( %d , &n);     scanf( %d , &m);     for (int i = 0; i < n; ++i) scanf( %d , &a[i]);     for (int i = 0; i < m; ++i) {       int l, r, k;       scanf( %d , &l);       scanf( %d , &r);       scanf( %d , &k);       --l;       --r;       ++b[l][k];       b[l][k] %= modref;       if (r + 1 < n)         for (int j = 0; j <= k; ++j) {           b[r + 1][j] += (modref - bin[r + 1 - l - 1 + k - j][k - j]);           b[r + 1][j] %= modref;         }     }     for (int i = 0; i < n; ++i) {       int res = a[i];       for (int j = 99; j >= 0; --j) {         c[j] = c[j + 1] + c[j];         c[j] %= modref;       }       for (int j = 100; j >= 0; --j) {         c[j] += b[i][j];         c[j] %= modref;         res += c[j];         res %= modref;       }       printf( %d  , res);     }     printf(  n );     return 0;   }   