20062 - 学而时习之
时间限制 : 1 秒
内存限制 : 128 MB
给定长度为 n 的正整数序列 a_1, a_2, \cdots, a_n 以及一个非负整数 k,您可以执行以下操作至多一次:
选择两个整数 l 和 r 满足 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 表示测试数据组数。对于每组测试数据:
- 第一行输入两个整数 n 和 k(1 \le n \le 3 \times 10^5,0 \le k \le 10^{18})。
- 第二行输入 n 个整数 a_1, a_2, \cdots, a_n(1 \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