序列问题
题号:NC212195
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

存在一个集合S,由1到n这n这元素组成,A,B是S的两个非空子集,若对于任意的元素X∈A,Y∈B,皆满足Y-X>=q,则称A,B是一组满足条件的集合组。多组询问,每次给出n,q,求对于集合S,有多少组满足条件集合组,答案对998244353取模。

输入描述:

第一行一个数t,代表询问次数。

随后t行,每行两个数,n,q,意义如题所示。

输出描述:

一共t行,每行一个数,及满足条件的集合组数目。

示例1

输入

复制
1
7 0

输出

复制
769
示例2

输入

复制
1
7 -8

输出

复制
16129

备注:

对于30%的数据,t<=10,n、|q|<=10。

对于 60%的数据,t<=103,n、|q|<=109

对于100%的数据,t<=105,1≤n≤1018,|q|<=1018,且n、q皆为整数。