这种题肯定不是硬算求的,我们来找一下ab与n和m之间的关系。

已知条件为a + b = na % b = m

很显然,n应该是大于m的,如何证明呢?

根据a+b=n推得,a最大为n-1,b最小就为1,此时m取最大,为(n-1) % 1 = n-1,即m=n-1

因此m <= n时才合法。

再来根据a % b = m推关系。

a可以表示为a = kb + m==>a + b = (k+1)b + m = n

k >= 0b > m,所以(k+1)b > m,所以n > 2 * m才合法。

故而,当m > n或者n <= 2*m时,不存在合法的a和b,输出-1.

反之,当m <= n以及n > 2*m时,存在合法的a和b,此时由于存在多个解,可令k=0,求得b = n - m以及a = m

T = int(input())
for _ in range(T):
    n, m = map(int, input().split())
    if n <= 2 * m or n <= m:
        print(-1)
    else:
        a, b = m, n-m
        print(a, b)