kx+b数列
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

现在有一个整数数列A,(-10^{18}\le A_i \le 10^{18}),它虽然简简单单,但是却有着奇妙的性质:有一组kb,满足对于任意2\le iA_i=A_{i-1}*k+b。其中k不等于0。

现在小Q只记得这个数列的前n项,请你帮助他回忆k和b的值,有如下规则:

- k和b都是[-10^{18},10^{18}]范围内的整数,其中k不等于0,如果存在解的话按如下规则确定k和b的值,并输出一行用空格隔开的两个整数,代表k、b。

- 如果k和b有唯一解,则直接输出这个唯一解。

- 如果有多解,输出b的绝对值最小的解,如果有两个b绝对值最小的解,输出b大于0的那个。

- 如果确定b后k有多解,那么输出绝对值最小的k,如果有两个k绝对值最小的解,输出大于0的那个。

- 如果无解,输出-1。

输入描述:

第一行输入一个正整数t表示数据组数1\le t\le 10^5

接下来t组输入,每组两行:第一行一个正整数n表示数列长度,第二行n个整数表示数列A里的每个数字。

数据保证\sum n\le 10^61\le n \le 10^6-10^{18}\le A_i \le 10^{18}

输出描述:

对于每组询问,输出一行两个整数分别表示kb。或者输出`-1`代表无解
示例1

输入

复制
1
4
1 2 3 4

输出

复制
1 1

说明

可以发现k=1,b=1
示例2

输入

复制
1
4
3 2 3 2

输出

复制
-1 5