#CF2048H. 凯文与奇怪操作

凯文与奇怪操作

H. 凯文与奇怪操作

单次测试时间限制22内存限制256256 兆字节

凯文正在唐人街研究与二进制字符串相关的问题。正当他毫无头绪时,一位陌生人走了过来,向他介绍了一种奇特的操作:

假设当前二进制字符串为 tt,长度为 t|t|。选择一个整数 1pt1 \le p \le |t|。对所有满足 1i<p1 \le i < p 的位置,同时执行操作 ti=max(ti,ti+1)t_i = \max(t_i, t_{i+1}),随后删除位置 pp 上的字符。

举个例子,假设当前二进制字符串是 0100101001,选择 p=4p=4。对 t1t_1t2t_2t3t_3 执行 ti=max(ti,ti+1)t_i = \max(t_i, t_{i+1}) 操作,字符串变为 1100111001,随后删除 t4t_4,最终得到 11011101

凯文觉得这个奇怪的操作非常有趣。因此他想问问你:给定一个二进制字符串 ss,通过任意次数(可以是 00 次)该操作,你能得到多少种不同的非空二进制字符串?

由于答案可能很大,你只需要输出答案对 998244353998244353 取模后的结果。

输入格式

每个测试包含多组数据。 第一行输入一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

对于每个测试用例,仅有一行输入一个二进制字符串 ss1s1061 \le |s| \le 10^6)。

保证所有测试用例的字符串长度之和不超过 10610^6

输出格式

对于每个测试用例,输出一行一个整数,表示答案对 998244353998244353 取模后的结果。

样例输入

2
11001
000110111001100

样例输出

9
73

样例说明

在第一个测试用例中,你能得到的所有不同字符串为: 110011100110011001110111010010011011011111110101111111,总计 99 种。