#include <bits/stdc++.h>
#define ll long long
#define all(v) v.begin(),v.end()
#define MASK(i) (1LL << (i))
#define ii pair<int,int>
#define fi first
#define se second
#define endl '\n'
using namespace std;
mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());
#define rand rd
long long Rand(long long l , long long h){
assert(l <= h);
return l + 1ll * rd() % (h - l + 1) * (rd() % (h - l + 1)) % (h - l + 1);
}
const int MAX = 1e5 + 5;
int BIT[MAX] , sum[MAX];
int res[MAX];
int q;
struct node{
int l , r , x , i;
};
vector <node> query;
vector <ii> save;
bool cmp(ii a , ii b){
return a.se > b.se;
}
bool dk(node a , node b){
return a.x > b.x;
}
void build(){
for(int i = 1 ; i * 2 <= 1e5 ; i++){
for(int j = i * 2 ; j <= 1e5 ; j += i) sum[j] += i;
}
for(int i = 1 ; i <= 1e5 ; i++){
save.push_back({i , sum[i]});
}
sort(all(save) , cmp);
}
void update(int vt){
while(vt < MAX){
BIT[vt]++;
vt += vt & -vt;
}
}
int GET(int vt){
int sum = 0;
while(vt > 0){
sum += BIT[vt];
vt -= vt & -vt;
}
return sum;
}
void INP(){
build();
cin >> q;
for(int i = 1 ; i <= q ; i++){
int l , r , x;
cin >> l >> r >> x;
query.push_back({l , r , x , i});
}
sort(all(query) , dk);
int vt = 0;
for(auto x : save){
while(vt < q && query[vt].x >= x.se){
node tmp = query[vt++];
//cout << GET(tmp.r) << ' ' << GET(tmp.l - 1) << ' ' << x.se << ' ' << tmp.x << endl;
res[tmp.i] = GET(tmp.r) - GET(tmp.l - 1);
}
update(x.fi);
}
for(int i = 1 ; i <= q ; i++) cout << res[i] << endl;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
#define TASK ""
//freopen(TASK".inp" , "r" , stdin);
//freopen(TASK".out" , "w" , stdout);
INP();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSx2LmVuZCgpCiNkZWZpbmUgTUFTSyhpKSAoMUxMIDw8IChpKSkKI2RlZmluZSBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBlbmRsICdcbicKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCm10MTk5MzcgcmQoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKI2RlZmluZSByYW5kIHJkCgpsb25nIGxvbmcgUmFuZChsb25nIGxvbmcgbCAsIGxvbmcgbG9uZyBoKXsKICAgIGFzc2VydChsIDw9IGgpOwogICAgcmV0dXJuIGwgKyAxbGwgKiByZCgpICUgKGggLSBsICsgMSkgKiAocmQoKSAlIChoIC0gbCArIDEpKSAlIChoIC0gbCArIDEpOwp9Cgpjb25zdCBpbnQgTUFYID0gMWU1ICsgNTsKaW50IEJJVFtNQVhdICwgc3VtW01BWF07CmludCByZXNbTUFYXTsKaW50IHE7CgpzdHJ1Y3Qgbm9kZXsKICAgIGludCBsICwgciAsIHggLCBpOwp9OwoKdmVjdG9yIDxub2RlPiBxdWVyeTsKdmVjdG9yIDxpaT4gc2F2ZTsKCmJvb2wgY21wKGlpIGEgLCBpaSBiKXsKICAgIHJldHVybiBhLnNlID4gYi5zZTsKfQoKYm9vbCBkayhub2RlIGEgLCBub2RlIGIpewogICAgcmV0dXJuIGEueCA+IGIueDsKfQoKdm9pZCBidWlsZCgpewogICAgZm9yKGludCBpID0gMSA7IGkgKiAyIDw9IDFlNSA7IGkrKyl7CiAgICAgICAgZm9yKGludCBqID0gaSAqIDIgOyBqIDw9IDFlNSA7IGogKz0gaSkgc3VtW2pdICs9IGk7CiAgICB9CiAgICBmb3IoaW50IGkgPSAxIDsgaSA8PSAxZTUgOyBpKyspewogICAgICAgIHNhdmUucHVzaF9iYWNrKHtpICwgc3VtW2ldfSk7CiAgICB9CiAgICBzb3J0KGFsbChzYXZlKSAsIGNtcCk7Cn0KCnZvaWQgdXBkYXRlKGludCB2dCl7CiAgICB3aGlsZSh2dCA8IE1BWCl7CiAgICAgICAgQklUW3Z0XSsrOwogICAgICAgIHZ0ICs9IHZ0ICYgLXZ0OwogICAgfQp9CgppbnQgR0VUKGludCB2dCl7CiAgICBpbnQgc3VtID0gMDsKICAgIHdoaWxlKHZ0ID4gMCl7CiAgICAgICAgc3VtICs9IEJJVFt2dF07CiAgICAgICAgdnQgLT0gdnQgJiAtdnQ7CiAgICB9CiAgICByZXR1cm4gc3VtOwp9Cgp2b2lkIElOUCgpewogICAgYnVpbGQoKTsKICAgIGNpbiA+PiBxOwogICAgZm9yKGludCBpID0gMSA7IGkgPD0gcSA7IGkrKyl7CiAgICAgICAgaW50IGwgLCByICwgeDsKICAgICAgICBjaW4gPj4gbCA+PiByID4+IHg7CiAgICAgICAgcXVlcnkucHVzaF9iYWNrKHtsICwgciAsIHggLCBpfSk7CiAgICB9CiAgICBzb3J0KGFsbChxdWVyeSkgLCBkayk7CiAgICBpbnQgdnQgPSAwOwogICAgZm9yKGF1dG8geCA6IHNhdmUpewogICAgICAgIHdoaWxlKHZ0IDwgcSAmJiBxdWVyeVt2dF0ueCA+PSB4LnNlKXsKICAgICAgICAgICAgbm9kZSB0bXAgPSBxdWVyeVt2dCsrXTsKICAgICAgICAgICAgLy9jb3V0IDw8IEdFVCh0bXAucikgPDwgJyAnICA8PCBHRVQodG1wLmwgLSAxKSA8PCAnICcgPDwgeC5zZSA8PCAnICcgPDwgdG1wLnggPDwgZW5kbDsKICAgICAgICAgICAgcmVzW3RtcC5pXSA9IEdFVCh0bXAucikgLSBHRVQodG1wLmwgLSAxKTsKICAgICAgICB9CiAgICAgICAgdXBkYXRlKHguZmkpOwogICAgfQogICAgZm9yKGludCBpID0gMSA7IGkgPD0gcSA7IGkrKykgY291dCA8PCByZXNbaV0gPDwgZW5kbDsKfQoKCmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICAjZGVmaW5lIFRBU0sgIiIKICAgIC8vZnJlb3BlbihUQVNLIi5pbnAiICwgInIiICwgc3RkaW4pOwogICAgLy9mcmVvcGVuKFRBU0siLm91dCIgLCAidyIgLCBzdGRvdXQpOwogICAgSU5QKCk7CiAgICByZXR1cm4gMDsKfQo=