J题的难点无非是情况较多,细心讨论即可
def opt(x,y):
    return max(x,y) if abs(x) == abs(y) else min(x,y,key=abs)

def solve(x,y,z):
    k,kr = divmod(y - z, x - y)
    b,br = divmod(x*z - y*y, x - y)
    return k, b, kr+br

def main():
    for _ in range(int(input())):
        n = int(input())
        s = list(map(int,input().split()))
        if n == 1:
            print(1,0); continue
        if n == 2:
            if s[0] == 0:
                k,b = 1,s[1]
            else:
                k,b = divmod(s[1],s[0])
                if k == 0:
                    b = opt(s[1]-s[0],s[1]+s[0])
                elif k == 1:
                    b = opt(b,s[1]-s[0]*2)
                elif k == -1:
                    b = opt(b,s[1]+s[0]*2)
                else:
                    b = opt(b,s[1]-s[0]*(k+1))
                    b = opt(b,s[1]-s[0]*(k-1))
                k = (s[1]-b)//s[0]
            print(k,b); continue
        if len(set(s)) == 1:
            print(1,0); continue
        if any(s[i] == s[i+1] for i in range(n-1)):
            print(-1); continue
        ans = None
        for i in range(n-2):
            k,b,r = solve(s[i],s[i+1],s[i+2])
            if r: print(-1); break
            if ans is None: ans = (k,b)
            if ans != (k,b): print(-1); break
        else: print(*ans)
            
main()