from math import gcd def inverse(n, d, MOD): return n * pow(d, -1, MOD) % MOD for _ in range(int(input())): X, M = map(int, input().split()) if X%M == 0: print(X) continue sX = str(X) L = len(sX) flag = False for i in range(1, L): if sX[i:] == sX[:-i] and int(sX+sX[L-i:])%M == 0: print(sX+sX[L-i:]) flag = True break if flag: continue if (X*10**L+X)%M == 0: print(X*10**L+X) continue GCD = gcd(M, 10**L) for n in range(1, 18-L*2+1): m = (X+X*10**(L+n))%M if m == 0: print(sX+"0"*n+sX) break if m%GCD != 0: continue if 10**L < M: a = 10**L g = M-m G = gcd(a, M) a //= G g //= G mo = M//G x = inverse(g, a, mo) if x < 10**n: sx = str(x) while len(sx) < n: sx = "0"+sx print(sX+sx+sX) break else: a = 10**L%M g = M-m G = gcd(a, M) a //= G g //= G mo = M//G x = inverse(g, a, mo) if x < 10**n: sx = str(x) while len(sx) < n: sx = "0"+sx print(sX+sx+sX) break else: print(-1)