#nullable enable #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion static T[] Range(int n, Func F) => Enumerable.Range(0, n).Select(_ => F()).ToArray(); static (long d, long x, long y) ExtendedGCD(long a, long b) { var (x0, y0, x1, y1) = (1L, 0L, 0L, 1L); while (b != 0) { var q = a / b; (a, b) = (b, a - q * b); (x0, y0, x1, y1) = (x1, y1, x0 - q * x1, y0 - q * y1); } return (a, x0, y0); } static long? ModDiv(long a, long b, long m) { if (b == 0) throw new DivideByZeroException(); var (d, t, _) = ExtendedGCD(b, m); if (a % d != 0) return null; if (d < 0) (d, t) = (-d, -t); var dm = m / d; var y = (long)((Int128)a / d * t % dm); if (y < 0) y += dm; return y; } long Solve() { var xs = I(); var x = int.Parse(xs); var m = I(); var k1 = 1L; var k2 = 1L; var l = xs.Length; for (var i = 0; i < l; i++) k1 *= 10; for (var i = 0; i < 18 - l; i++) k2 *= 10; var r = (k2 + 1) * x; var q = -r % m; if (q < 0) q += m; var yo = ModDiv(q, k1, m); if (yo == null) return -1; var y = yo.Value; return r + y * k1; } var t = I(); var ans = Range(t, Solve); Console.WriteLine(string.Join(Environment.NewLine, ans));