ZCC loves hacking

Accepts: 9
Submissions: 99
Time Limit: 4000/2000 MS (Java/Others)
Memory Limit: 262144/131072 K (Java/Others)
问题描述
Codefires round马上就要结束了!ZCC已经通过做题得到了$C(0\leq C\leq 10^6)$分。但他惊讶地发现,房间里的其他选手也都解决了最难的题。ZCC根据经验断定大多数的选手都会FST的!当然,除去rating最高的选手Memset137。在此之前,ZCC想要hack他们来使他的得分更高。除了ZCC,房间里有$N(1\leq N\leq 100000)$个选手,他们已经被按照rating从小到大排序了(所以Memset137是排在第N个的选手)。当ZCC成功hack了第i个选手时,他会获得i分的收入。你可以假设ZCC hack技术高超,百发百中,可以hack除了Memset137和自己以外的所有选手,而且在此期间没有其他选手干扰。

由于ZCC有着谦虚的美德,他不想让自己的得分太高。ZCC想要知道,存在着多少种不同的选择一些人hack的方案,使得他的得分在$L$和$R$($C\leq L\leq R< C+N$)之间。 

显然答案会很大,请输出答案对998244353取模后的结果。
输入描述
第一行有一个整数$T(T=100)$,代表测试数据组数。
对于每组数据,在单独的一行中给出四个整数$N(N\leq 10^5)$, $C$, $L$, $R$。

对于95%的数据, $N\leq 2000$.
对于97%的数据, $N\leq 50000$.
输出描述
对于每组数据,输出一个整数代表答案。
输入样例
3
3 0 1 2
5 13 14 17
100 0 23 59
输出样例
2
6
90567