import sys input = sys.stdin.readline T=int(input()) mod=998244353 def Floor_sum(N,M,A,B): ANS=0 if A>=M or A<0: ANS+=N*(N-1)//2*(A//M) A%=M if B>=M or B<0: ANS+=B//M*N B%=M y_max=(A*N+B)//M x_max_divA=y_max*M-B if y_max==0: return ANS else: ANS+=Floor_sum(y_max,A,M,A*N-x_max_divA) return ANS for tests in range(T): N,M,L,R=map(int,input().split()) ANS1=Floor_sum(M+1,N-1,-1,R) ANS2=Floor_sum(M+1,N-1,-1,L-1) print((ANS1-ANS2)%mod)