luogu#P11284. 「GFOI Round 2」Strings

「GFOI Round 2」Strings

题目背景

English statement. You must submit your code at the Chinese version of the statement.

题目描述

给你两个正整数 n,mn, m

我们称一个长度为 kk 的正整数序列 a1,a2,,aka_1, a_2, \ldots, a_k 是好的当且仅当:

  • i[1,k],1aim\forall i \in [1, k], 1 \le a_i \le m
  • 存在一个正整数 l[1,k3]l \in [1, \frac{k}{3}] 满足:i[1,l],ai=a2l+1i\forall i \in [1, l], a_i = a_{2l + 1 - i}

求有多少个长度 n\le n 的好的序列,对 109+710^9 + 7 取模。

输入格式

本题有多组测试数据。

第一行包含一个正整数 TT,表示测试数据组数。

对于每组测试数据:

第一行包含两个正整数 n,mn, m

输出格式

对于每组数据,输出一行一个非负整数,表示答案对 109+710^9 + 7 取模后的值。

4
3 2
5 3
10 4
100000 998244353123456
4
117
430352
967771719

提示

【样例解释】

对于第一组数据,长度 3\le 3 的好的序列有 [1,1,1],[1,1,2],[2,2,1],[2,2,2][1, 1, 1], [1, 1, 2], [2, 2, 1], [2, 2, 2]

【数据范围】

本题采用捆绑测试且开启子任务依赖。

子任务编号 nn \le mm \le 子任务依赖 分值
11 101810^{18} 11 11
22 1010 44 77
33 10510^5 101810^{18} 22 2828
44 101810^{18} 1,2,31, 2, 3 6464

对于所有数据,满足:

  • 1T101 \le T \le 10
  • 3n10183 \le n \le 10^{18}
  • 1m10181 \le m \le 10^{18}