20062 - 学而时习之

通过次数

1

提交次数

3

时间限制 : 1 秒
内存限制 : 128 MB

给定长度为 n 的正整数序列 a_1, a_2, \cdots, a_n 以及一个非负整数 k,您可以执行以下操作至多一次

选择两个整数 lr 满足 1 \le l \le r \le n,之后对于每个 l \le i \le r,将 a_i 变为 (a_i + k)

最大化整个序列的最大公因数。

称整数 g 是整个序列的公因数,若对于所有 1 \le i \le n 都满足 a_i 能被 g 整除。

输入

有多组测试数据。第一行输入一个整数 T 表示测试数据组数。对于每组测试数据:

  • 第一行输入两个整数 nk1 \le n \le 3 \times 10^50 \le k \le 10^{18})。
  • 第二行输入 n 个整数 a_1, a_2, \cdots, a_n1 \le a_i \le 10^{18})表示序列。

保证所有数据 n 之和不超过 3 \times 10^5

输出

每组数据输出一行一个整数,表示整个序列最大的最大公因数。

样例

输入

2
6 2
5 3 13 8 10 555
3 0
3 6 9

输出

5
3