#include <bits/stdc++.h>
using namespace std;
bool containsDigit(int x, int d) {
string s = to_string(x);
char c = '0' + d;
for (char ch : s) if (ch == c) return true;
return false;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, q;
if (!(cin >> n >> q)) return 0;
vector<long long> a(n + 1);
for (int i = 1; i <= n; ++i) cin >> a[i];
while (q--) {
int type;
cin >> type;
if (type == 1) {
int p;
long long x;
cin >> p >> x;
if (1 <= p && p <= n) a[p] = x;
} else if (type == 2) {
int l, r, d;
cin >> l >> r >> d;
if (l < 1) l = 1;
if (r > n) r = n;
long long res = 0;
for (int i = l; i <= r; ++i) {
bool isValid = false;
if (d != 0) {
if (i % d == 0) isValid = true;
}
if (!isValid && containsDigit(i, d)) isValid = true;
if (isValid) res += 2LL * a[i];
else res += a[i];
}
cout << res << '\n';
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpib29sIGNvbnRhaW5zRGlnaXQoaW50IHgsIGludCBkKSB7CiAgICBzdHJpbmcgcyA9IHRvX3N0cmluZyh4KTsKICAgIGNoYXIgYyA9ICcwJyArIGQ7CiAgICBmb3IgKGNoYXIgY2ggOiBzKSBpZiAoY2ggPT0gYykgcmV0dXJuIHRydWU7CiAgICByZXR1cm4gZmFsc2U7Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwoKICAgIGludCBuLCBxOwogICAgaWYgKCEoY2luID4+IG4gPj4gcSkpIHJldHVybiAwOwoKICAgIHZlY3Rvcjxsb25nIGxvbmc+IGEobiArIDEpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSBjaW4gPj4gYVtpXTsKCiAgICB3aGlsZSAocS0tKSB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgY2luID4+IHR5cGU7CiAgICAgICAgaWYgKHR5cGUgPT0gMSkgewogICAgICAgICAgICBpbnQgcDsKICAgICAgICAgICAgbG9uZyBsb25nIHg7CiAgICAgICAgICAgIGNpbiA+PiBwID4+IHg7CiAgICAgICAgICAgIGlmICgxIDw9IHAgJiYgcCA8PSBuKSBhW3BdID0geDsKICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gMikgewogICAgICAgICAgICBpbnQgbCwgciwgZDsKICAgICAgICAgICAgY2luID4+IGwgPj4gciA+PiBkOwogICAgICAgICAgICBpZiAobCA8IDEpIGwgPSAxOwogICAgICAgICAgICBpZiAociA+IG4pIHIgPSBuOwogICAgICAgICAgICBsb25nIGxvbmcgcmVzID0gMDsKICAgICAgICAgICAgZm9yIChpbnQgaSA9IGw7IGkgPD0gcjsgKytpKSB7CiAgICAgICAgICAgICAgICBib29sIGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGlmIChkICE9IDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSAlIGQgPT0gMCkgaXNWYWxpZCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWQgJiYgY29udGFpbnNEaWdpdChpLCBkKSkgaXNWYWxpZCA9IHRydWU7CgogICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQpIHJlcyArPSAyTEwgKiBhW2ldOwogICAgICAgICAgICAgICAgZWxzZSByZXMgKz0gYVtpXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb3V0IDw8IHJlcyA8PCAnXG4nOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQo=