#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long ll;
const int MAXK=100000003, MAXP=6000000;
const ll MOD=1000000007;
int prm[MAXP], cnt=0, T;
ll K, P, Q, dis, n;
bool vis[MAXK];
void prm_cnt(int m) {
for (int i = 2; i<=m; i++) {
if (!vis[i]) prm[++cnt] = i;
for (int j = 1; 1ll*i * prm[j]<=m; j++) {
vis[i*prm[j]] = true;
if (i%prm[j] == 0) break;
}
}
}
ll get_n(ll k) {
ll res = 0;
if (k==1) return 0ll;
for (int i = 1; i <= cnt && prm[i]*prm[i]<=k; i++) {
if (k%(1ll*prm[i]) == 0) res++;
while (k%(1ll*prm[i]) == 0) k/=(1ll*prm[i]);
}
return res;
}
ll fpm_2(int m) {
ll res=1, a=2;
while (m) {
if (m & 1) res = (res*a)%MOD;
a=(a*a)%MOD;
m>>=1;
}
return res;
}
int main() {
prm_cnt(MAXK);
scanf("%d", &T);
while (T--) {
scanf("%lld %lld %lld", &K, &P, &Q);
dis = (Q-P+1)%MOD;
if (K == 1) {
printf("%lld\n", dis);
continue;
}
n = get_n(K);
if (K >= 2) n++;
printf("%lld\n", (fpm_2(n)*dis)%MOD);
}
return 0;
}