using System; using static System.Console; using System.Linq; using System.Collections.Generic; using System.Security.Cryptography; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var q = NN; var ans = new long[q]; for (var u = 0; u < q; ++u) { var c = NList; if (c[2] == 1) ans[u] = -1; else { var tmp = c[0]; var list = new List(); while (tmp > 0) { list.Add(tmp % c[2]); tmp /= c[2]; } if (list.Count == 1) ++ans[u]; else { if (list[^2] < c[2] - 1 && list[^1] == 1) ans[u] += 2; else if (list[^2] == 0) ans[u] += 2; else ans[u] += 3; for (var i = 0; i + 2 < list.Count; ++i) { ++ans[u]; if (list[i] > 0) ++ans[u]; } } ans[u] *= c[1]; } } WriteLine(string.Join("\n", ans)); } }