# https://yukicoder.me/problems/no/3051 def solve(N, K, A): sum_a = sum(A) if sum_a % K != 0: return -1 if K == 1: return 0 v = 0 max_a = 0 for a in A: max_a = max(max_a, a % K) v += a % K v //= K if v >= max_a: return v array1 = [] array2 = [] array3 = [] for a in A: array1.append(a // K) array2.append(a % K) if array1[-1] > 0: array3.append(True) else: array3.append(False) n0 = 0 for i in range(N): if array1[i] > 0: n0 += 1 while n0 > K: a = float("inf") for i in range(N): if array3[i]: a = min(a, array1[i]) l = (max_a - v) // (n0 - K) l += 1 if (max_a - v) % (n0 - K) else 0 if a < l: for i in range(N): if array3[i]: array1[i] -= a if array1[i] == 0: array3[i] = False n0 -= 1 for i in range(N): if array3[i]: array2[i] += a * K max_a += a * K v += a * n0 else: for i in range(N): if array3[i]: array1[i] -= (l - 1) if array1[i] == 0: array3[i] = False n0 -= 1 for i in range(N): if array3[i]: array2[i] += (l - 1) * K max_a += (l - 1) * K v += (l - 1) * n0 for _ in range(n0): target_id = -1 min_ = float("inf") for i in range(N): if array3[i]: if array2[i] < min_: min_ = array2[i] target_id = i max_a = max(max_a, array2[target_id] + K) array2[target_id] += K v += 1 array1[target_id] -= 1 if v >= max_a: return v return -1 def main(): T = int(input()) answers = [] for _ in range(T): N, K = map(int, input().split()) A = list(map(int, input().split())) ans = solve(N, K, A) answers.append(ans) for ans in answers: print(ans) if __name__ == "__main__": main()