#d1902. 数列

数列

数列

题目描述

小琪非常喜欢数列,因此她出了一道数列问题。

有两个整数 d,md,m ,找到这样的数列 aa, 满足如下条件

  • 数列 aa 的长度为 n,n≥1n, n \ge 1
  • 1≤a1<a2<...<an≤d1 \le a_1 < a_2 < \quad ... \quad < a_n \le d
  • 定义数组一个长度为 nn 的数组 cc:c1=a1c_1 = a_1 , ∀i>1,ci=ci−1⊕ai\forall i > 1, c_i = c_{i-1} \oplus a_i , ⊕\oplus 表示二进制异或 。数组 cc 应该满足 c1<c2<...<cnc_1 < c_2 < \quad ... \quad < c_n 的限制条件

请你求出满足条件的数列有多少个?由于结果较大,请输出答案模 mm 的结果

输入格式

第一行一个数字 t(1≤t≤100)\quad t \quad (1 \le t \le 100) ,表示测试数据数

接下来 tt 行,每行 22 个整数 d,m(1≤d,m≤109)\quad d, m \quad (1 \le d, m \le 10^9)

注意: mm 不一定是质数

输出格式

输出包括 tt 行,每行一个整数表示答案

样例输入

3
5 999996
6 99995
7 9994

样例输出

17
23
29

数据范围

所有数据保证 1≤t≤100,1≤d,m≤1091\leq t \leq 100, 1 \leq d,m \leq 10^9