human
PYTHON3 solution for "It is a complicated version of problem F1. The difference between them is the constraints (F1: k ≤ 2, F2: k ≤ 10).

You are given an integer n. Find the minimum integer x such that x ≥ n and the number x is k-beautiful.

A number is called k-beautiful if its decimal representation having no leading zeroes contains no more than k different digits. E.g. if k = 2, the numbers 3434443, 55550, 777 and 21 are k-beautiful whereas the numbers 120, 445435 and 998244353 are not.

Input

The first line contains one integer t (1 ≤ t ≤ 10^4) — the number of test cases. Then t test cases follow.

Each test case consists of one line containing two integers n and k (1 ≤ n ≤ 10^9, 1 ≤ k ≤ 10).

Output

For each test case output on a separate line x — the minimum k-beautiful integer such that x ≥ n.

Example

Input

6
2021 3
177890 2
34512 3
724533 4
998244353 1
12345678 10

Output

2021
181111
34533
724542
999999999
12345678":
assistant
#Here is Python program to find the minimum integer x such that x ≥ n and the number x is k-beautiful.
 def getBeautiful(num, k):
    if len(set(str(num))) <= k:
        return num
    # print("num =", num)
    # print("k =", k)
    unstableIdx = k
    st = str(num)
    digits = set(map(int, set(st[:unstableIdx])))
    # while len(set(st[:unstableIdx+1])) <= k:
    # print("digits =", digits)
    # print("unstableIdx =", st[:unstableIdx])
    # print("value =", st[unstableIdx])
    while (int(st[unstableIdx]) in digits or len(digits) < k):
        # print(int(st[unstableIdx]) in digits, (len(digits) < k))
        # print("digits =", digits)
        if unstableIdx != len(st) -1:
            digits.add(int(st[unstableIdx]))
            unstableIdx += 1
            
        else:
            # print("returned")
            return num
    
    n = int(st[unstableIdx])
    # print("n =", n)
    # print("digits=", digits)
    while n not in digits:
        n += 1
        if n == 10:
            break
        # print("Whoops")
    if n in digits:
        # print(st[:unstableIdx], str(n), str(min(digits))*(len(st)-unstableIdx-1))
        return int(st[:unstableIdx] + str(n) + str(min(digits))*(len(st)-unstableIdx-1))
    else:
        return getBeautiful((int(st[:unstableIdx])+1) * 10**(len(st)-unstableIdx), k)

for t in range(int(input())):
    n,k = map(int, input().split())
    print(getBeautiful(n,k))