#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 3e5 + 7;
int n;
int q;
int a[N];
int dak[2][N];
bool prime[N];
void sieve () {
prime[0] = prime[1] = 1;
for (int i = 2; i * i < N; i++) {
if (!prime[i]) {
for (int j = i * i; j < N; j += i) {
prime[j] = 1;
}
}
}
}
signed main () {
ios::sync_with_stdio (false);
cin.tie(0);
sieve ();
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
while (q--) {
int t,l,r,val;
cin >> t >> l >> r >> val;
dak[t - 1][l] += val;
dak[t - 1][r + 1] -= val;
}
for (int i = 1; i <= n; i++) {
dak[0][i] += dak[0][i - 1];
dak[1][i] += dak[1][i - 1];
cout << dak[prime[a[i]]][i] << " ";
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgaW50IGxvbmcgbG9uZwoKY29uc3QgaW50IE4gPSAzZTUgKyA3OwppbnQgbjsKaW50IHE7CmludCBhW05dOwppbnQgZGFrWzJdW05dOwpib29sIHByaW1lW05dOwp2b2lkIHNpZXZlICgpIHsKCXByaW1lWzBdID0gcHJpbWVbMV0gPSAxOwoJZm9yIChpbnQgaSA9IDI7IGkgKiBpIDwgTjsgaSsrKSB7CgkJaWYgKCFwcmltZVtpXSkgewoJCQlmb3IgKGludCBqID0gaSAqIGk7IGogPCBOOyBqICs9IGkpIHsKCQkJCXByaW1lW2pdID0gMTsKCQkJfQoJCX0KCX0KfQpzaWduZWQgbWFpbiAoKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyAoZmFsc2UpOwoJY2luLnRpZSgwKTsKCXNpZXZlICgpOwoJY2luID4+IG4gPj4gcTsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWNpbiA+PiBhW2ldOwoJfQoJd2hpbGUgKHEtLSkgewoJCWludCB0LGwscix2YWw7CgkJY2luID4+IHQgPj4gbCA+PiByID4+IHZhbDsKCQlkYWtbdCAtIDFdW2xdICs9IHZhbDsKCQlkYWtbdCAtIDFdW3IgKyAxXSAtPSB2YWw7Cgl9Cglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQlkYWtbMF1baV0gKz0gZGFrWzBdW2kgLSAxXTsKCQlkYWtbMV1baV0gKz0gZGFrWzFdW2kgLSAxXTsKCSAKCQljb3V0IDw8IGRha1twcmltZVthW2ldXV1baV0gPDwgIiAiOwoJfQp9Cg==