## https://yukicoder.me/problems/no/2452 MOD = 998244353 def solve2(N, M, R): # l / (N - 1) を計算 q = R // (N - 1) ans = ((q - 1) * q) // 2 ans *= (N - 1) ans += q * (R - (q * (N - 1) - 1)) ans %= MOD print(ans) # (l - M) / N - 1を計算 q = M // (N - 1) ans2 = ((q - 1) * q) // 2 ans2 *= (N - 1) ans2 += q * (M - (q * (N - 1) - 1)) ans2 %= MOD ans2 *= -1 ans2 %= MOD if M <= R: q = (R - M) // (N - 1) ans3 = ((q - 1) * q) // 2 ans3 *= (N - 1) ans3 += q * ((R - M) - (q * (N - 1) - 1)) ans3 %= MOD ans2 += ans3 ans2 %= MOD else: q = (M - R - 1) // (N - 1) ans3 = ((q - 1) * q) // 2 ans3 *= (N - 1) ans3 += q * (((M - R - 1)) - (q * (N - 1) - 1)) ans3 %= MOD ans2 += ans3 ans2 %= MOD answer = (ans - ans2) % MOD answer += (R + 1) answer %= MOD return answer def solve(N, M, L, R): ans = solve2(N, M, R) print(ans) if L > 0: ans -= solve2(N, M, L -1) ans %= MOD return ans def main(): T = int(input()) answers = [] for _ in range(T): N, M, L, R = map(int, input().split()) ans = solve(N, M, L, R) answers.append(ans) for ans in answers: print(ans) if __name__ == '__main__': main()