题目背景
回首往昔,碧空如洗,日暖风恬。
溪石深浅有致地错落在明澈似玉的梦枫溪里。
浣熊们水上跑酷的无限趣忆亦于此伊始……
题目描述
日升月落,春去秋来,梦枫溪石的高度千变万化。
爱思考的小浣熊 CleverRaccoon 想探寻这些溪石究竟能构成多少种不同的高度序列。
现有若干个长度为 n 的非负整数列 a。
当 n>1 时,a1,an 的取值为 0∼m,其它数 ai 的取值为 0∼m−1,其中 2≤i≤n−1。
当 n=1 时,a1 的取值为 0∼m+1。
定义:当且仅当 ∀i∈{1,2,…,n},ai=bi 或 ∀i∈{1,2,…,n},ai=bn−i+1 时,数列 a,b 相同。
现给定 n,m,请求出最多有多少个不同的数列,答案对 998244353 取模。
输入格式
本题包含多组测试数据。
第一行,输入一个正整数 T,表示数据组数。
接下来 T 行,每行输入以空格间隔的 2 个正整数 n,m,意义见题目描述。
输出格式
共 T 行,对于每组数据,一行输出一个正整数,表示答案对 998244353 取模的结果。
3
1 3
2 2
6 3
5
6
666
提示
解释 #1
当 n=1,m=3 时,ai∈{0,1,2,3,4},共有 5 种不同的高度序列。
当 n=2,m=2 时,共有 6 种不同的高度序列,详情如下:
| 序号 | a1= | a2= | 
| 1 | 0 | 0 | 
| 2 | 1 | 
| 3 | 2 | 
| 4 | 1 | 1 | 
| 5 | 2 | 
| 6 | 2 | 
数据范围
本题采用 Subtask 捆绑测试。
| Subtask | n≤ | m≤ | T≤ | 特殊性质 | Score | 
| 0 | 10 | 无特殊性质 | 10 | 
| 1 | 103 | 1 | 103 | m=1 | 5 | 
| 2 | 3 | 10 | m=3 | 10 | 
| 3 | 103 | 1 | 无特殊性质 | 15 | 
| 4 | 106 | 100 | 10 | 
| 5 | 106 | 106 | 20 | 
| 6 | 109 | 109 | n 为奇数 | 10 | 
| 7 | n 为偶数 | 
| 8 | 1018 | 无特殊性质 | 
对于 100% 的数据,保证 1≤n≤1018,1≤m≤109,1≤T≤106。