const ll mod = 998244353; const int maxn = 1e6+100;
ll l,r,k; int len; bool isprime[maxn+200]; int prime[maxn];
ll divi[maxn]; ll cnt[maxn];
void init() { for (int i =2 ; i <= maxn; i ++) { if (!isprime[i]) { prime[++prime[0]] = i; for (int j = i +i ; j <= maxn ; j+= i) isprime[j] = true; } } }
void solve() { int st; for (int i = 1 ; prime[i]<= r/prime[i] && i<= prime[0] ; i ++) { //printf("i = %d\n",prime[i]); if (l%prime[i]==0) st = 1; else st = 1 + (prime[i]-l%prime[i]); for (int j = st ; j <= len ; j +=prime[i]) { int ct = 0; while (divi[j]%prime[i]==0) { divi[j]/=prime[i]; ct++; } cnt[j]*=(ct*k+1); if (cnt[j]>=mod) cnt[j] %= mod; } } ll ans = 0; for (int i =1 ; i <= len ; i ++) { if (divi[i]!=1) cnt[i] = cnt[i] * (k+1)%mod; //printf("divi[%d] = %lld\n",i,divi[i]); ans += cnt[i]; if (ans>=mod) ans %= mod; } printf("%lld\n",ans); }
int main() { init(); //printf("prime[0] = %d\n",prime[0]); int T; scanf("%d",&T); while (T--) { scanf("%lld%lld%lld",&l,&r,&k); len = (int)(r- l +1); for (int i = 1 ; i <= len ; i ++) { divi[i] = l + i -1; cnt[i] = 1; }