#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define fast ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr)
// #define T int t;cin>>t;while(t--)
#define F first
#define S second
#define endl '\n'
#define int long long
using namespace std;
using namespace __gnu_pbds;
template <typename T>
using ordered_set = tree<
T,
null_type,
less<T>,
rb_tree_tag,
tree_order_statistics_node_update
>;
template <typename T>
using ordered_set_desc = tree<
T,
null_type,
greater<T>,
rb_tree_tag,
tree_order_statistics_node_update
>;
const int N = 1e6+6;
vector<int> d(N,1);
void siave() {
for (int i=2;i<N;i++) {
for (int j=i;j<N;j+=i) {
d[j]++;
}
}
}
struct BIT {
int n;
vector<int> arr;
BIT(int _n) {
n = _n;
arr.assign(n+1, 0);
}
void add(int idx,int v) {
while (idx <= n) {
arr[idx] += v;
idx += (idx & -idx);
}
}
int get(int idx) {
int ans = 0;
while (idx > 0) {
ans += arr[idx];
idx -= (idx & -idx);
}
return ans;
}
int get(int l, int r) {
return get(r) - get(l-1);
}
void set(int idx, int v) {
int old = get(idx,idx);
add(idx, -old + v);
}
};
void Abady() {
siave();
int n, q; cin >> n >> q;
BIT bit(n);
ordered_set<int> st;
for (int i=1;i<=n;i++) {
int x; cin >> x;
bit.add(i,x);
if (x > 1) st.insert(i);
}
while (q--) {
int op; cin >> op;
if (op == 1) {
int l,r; cin >> l >> r;
if (st.empty()) continue;
int k = *st.lower_bound(l);
int j = st.order_of_key(k);
while (k <= r) {
int num = bit.get(k,k);
num = d[num];
bit.set(k,num);
if (num == 1) st.erase(k);
if (j+1 < st.size()) k = *st.find_by_order(++j);
else break;
}
}
else {
int l,r; cin >> l >> r;
cout << bit.get(l,r) << endl;
}
}
}
signed main() {
fast;
Abady();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CiNkZWZpbmUgZmFzdCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKG51bGxwdHIpO2NvdXQudGllKG51bGxwdHIpCi8vICNkZWZpbmUgVCBpbnQgdDtjaW4+PnQ7d2hpbGUodC0tKQojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIGVuZGwgJ1xuJwojZGVmaW5lIGludCBsb25nIGxvbmcKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnVzaW5nIG9yZGVyZWRfc2V0ID0gdHJlZTwKICAgIFQsCiAgICBudWxsX3R5cGUsCiAgICBsZXNzPFQ+LAogICAgcmJfdHJlZV90YWcsCiAgICB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGUKPjsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp1c2luZyBvcmRlcmVkX3NldF9kZXNjID0gdHJlZTwKICAgIFQsCiAgICBudWxsX3R5cGUsCiAgICBncmVhdGVyPFQ+LAogICAgcmJfdHJlZV90YWcsCiAgICB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGUKPjsKCmNvbnN0IGludCBOID0gMWU2KzY7CnZlY3RvcjxpbnQ+IGQoTiwxKTsKdm9pZCBzaWF2ZSgpIHsKICAgIGZvciAoaW50IGk9MjtpPE47aSsrKSB7CiAgICAgICAgZm9yIChpbnQgaj1pO2o8TjtqKz1pKSB7CiAgICAgICAgICAgIGRbal0rKzsKICAgICAgICB9CiAgICB9Cn0KCgpzdHJ1Y3QgQklUIHsKICAgIGludCBuOwogICAgdmVjdG9yPGludD4gYXJyOwogICAgQklUKGludCBfbikgewogICAgICAgIG4gPSBfbjsKICAgICAgICBhcnIuYXNzaWduKG4rMSwgMCk7CiAgICB9CgogICAgdm9pZCBhZGQoaW50IGlkeCxpbnQgdikgewogICAgICAgIHdoaWxlIChpZHggPD0gbikgewogICAgICAgICAgICBhcnJbaWR4XSArPSB2OwogICAgICAgICAgICBpZHggKz0gKGlkeCAmIC1pZHgpOwogICAgICAgIH0KICAgIH0KCiAgICBpbnQgZ2V0KGludCBpZHgpIHsKICAgICAgICBpbnQgYW5zID0gMDsKICAgICAgICB3aGlsZSAoaWR4ID4gMCkgewogICAgICAgICAgICBhbnMgKz0gYXJyW2lkeF07CiAgICAgICAgICAgIGlkeCAtPSAoaWR4ICYgLWlkeCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBhbnM7CiAgICB9CgogICAgaW50IGdldChpbnQgbCwgaW50IHIpIHsKICAgICAgICByZXR1cm4gZ2V0KHIpIC0gZ2V0KGwtMSk7CiAgICB9CgogICAgdm9pZCBzZXQoaW50IGlkeCwgaW50IHYpIHsKICAgICAgICBpbnQgb2xkID0gZ2V0KGlkeCxpZHgpOwogICAgICAgIGFkZChpZHgsIC1vbGQgKyB2KTsKICAgIH0KfTsKCgp2b2lkIEFiYWR5KCkgewogICAgc2lhdmUoKTsKICAgIGludCBuLCBxOyBjaW4gPj4gbiA+PiBxOwogICAgQklUIGJpdChuKTsKICAgIG9yZGVyZWRfc2V0PGludD4gc3Q7CiAgICBmb3IgKGludCBpPTE7aTw9bjtpKyspIHsKICAgICAgICBpbnQgeDsgY2luID4+IHg7CiAgICAgICAgYml0LmFkZChpLHgpOwogICAgICAgIGlmICh4ID4gMSkgc3QuaW5zZXJ0KGkpOwogICAgfQogICAgd2hpbGUgKHEtLSkgewogICAgICAgIGludCBvcDsgY2luID4+IG9wOwogICAgICAgIGlmIChvcCA9PSAxKSB7CiAgICAgICAgICAgIGludCBsLHI7IGNpbiA+PiBsID4+IHI7CiAgICAgICAgICAgIGlmIChzdC5lbXB0eSgpKSBjb250aW51ZTsKICAgICAgICAgICAgaW50IGsgPSAqc3QubG93ZXJfYm91bmQobCk7CiAgICAgICAgICAgIGludCBqID0gc3Qub3JkZXJfb2Zfa2V5KGspOwogICAgICAgICAgICB3aGlsZSAoayA8PSByKSB7CiAgICAgICAgICAgICAgICBpbnQgbnVtID0gYml0LmdldChrLGspOwogICAgICAgICAgICAgICAgbnVtID0gZFtudW1dOwogICAgICAgICAgICAgICAgYml0LnNldChrLG51bSk7CiAgICAgICAgICAgICAgICBpZiAobnVtID09IDEpIHN0LmVyYXNlKGspOwogICAgICAgICAgICAgICAgaWYgKGorMSA8IHN0LnNpemUoKSkgayA9ICpzdC5maW5kX2J5X29yZGVyKCsraik7CiAgICAgICAgICAgICAgICBlbHNlIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpbnQgbCxyOyBjaW4gPj4gbCA+PiByOwogICAgICAgICAgICBjb3V0IDw8IGJpdC5nZXQobCxyKSA8PCBlbmRsOwogICAgICAgIH0KICAgIH0KfQoKCnNpZ25lZCBtYWluKCkgewogICAgZmFzdDsKICAgIEFiYWR5KCk7Cn0=