All Possible Digits
Contest: Codeforces Round  834 (Div. 3)
Difficulty rating: 1800
Tags: binary search, data structures, greedy, math, number theory

A positive number $$$x$$$ of length $$$n$$$ in base $$$p$$$ ($$$2 \le p \le 10^9$$$) is written on the blackboard. The number $$$x$$$ is given as a sequence $$$a_1, a_2, \dots, a_n$$$ ($$$0 \le a_i < p$$$) — the digits of $$$x$$$ in order from left to right (most significant to least significant).

Dmitry is very fond of all the digits of this number system, so he wants to see each of them at least once.

In one operation, he can:

- take any number $$$x$$$ written on the board, increase it by $$$1$$$, and write the new value $$$x + 1$$$ on the board.

For example, $$$p=5$$$ and $$$x=234_5$$$.

- Initially, the board contains the digits $$$2$$$, $$$3$$$ and $$$4$$$;
- Dmitry increases the number $$$234_5$$$ by $$$1$$$ and writes down the number $$$240_5$$$. On the board there are digits $$$0, 2, 3, 4$$$;
- Dmitry increases the number $$$240_5$$$ by $$$1$$$ and writes down the number $$$241_5$$$. Now the board contains all the digits from $$$0$$$ to $$$4$$$.

Your task is to determine the minimum number of operations required to make all the digits from $$$0$$$ to $$$p-1$$$ appear on the board at least once.

Input format:
The first line of the input contains a single integer $$$t$$$ ($$$1 \le t \le 2 \cdot 10^3$$$) — the number of test cases. The descriptions of the input test cases follow.

The first line of description of each test case contains two integers $$$n$$$ ($$$1 \le n \le 100$$$) and $$$p$$$ ($$$2 \le p \le 10^9$$$) — the length of the number and the base of the number system.

The second line of the description of each test case contains $$$n$$$ integers $$$a_1, a_2, \dots, a_n$$$ ($$$0 \le a_i < p$$$) — digits of $$$x$$$ in number system with base $$$p$$$

It is guaranteed that the number $$$x$$$ does not contain leading zeros (that is, $$$a_1>0$$$).

Output format:
For each test case print a single integer — the minimum number of operations required for Dmitry to get all the digits on the board from $$$0$$$ to $$$p-1$$$.

It can be shown that this always requires a finite number of operations.

Constraints:
Time limit: 3.0 s
Memory limit: 256.0 MB

Example input:
11
2 3
1 2
4 2
1 1 1 1
6 6
1 2 3 4 5 0
5 2
1 0 1 0 1
3 10
1 2 3
5 1000
4 1 3 2 5
3 5
2 3 4
4 4
3 2 3 0
1 3
2
5 5
1 2 2 2 4
3 4
1 0 1

Example output:
1
1
0
0
7
995
2
1
1
1
2

Editorial:
If all digits from $$$0$$$ to $$$p-1$$$ are initially present in the number, then the answer is $$$0$$$.
Each time we will increase the number by $$$1$$$. If the last digit is less than $$$p-1$$$, then only it will change. Otherwise, all digits equal to $$$p-1$$$ at the end will become equal to $$$0$$$, and the previous one will increase by $$$1$$$ (or a new digit equal to $$$1$$$ will be added if all digits were equal to $$$p-1$$$).
For a $$$p-1$$$ operation, the last digit will run through all possible values. However, we can get all the numbers earlier. We will solve the problem using binary search, sorting through the number of operations.
We can have 2 options: whether $$$0$$$ was at the end or not. Depending on this, one or two subsegments of the segment $$$[0, p-1]$$$ — a subsegment in the middle or a prefix and a suffix remained uncovered by the last digit of the number. They need to be completely covered with numbers that were already in positions, except for the last one — these are the original numbers and, in case there was $$$0$$$ at the end, the number into which the transfer was made. There are at most $$$n+1$$$ of them.