Problem: You are given a positive integer n. In one move, you can increase n by one (i.e. make n := n + 1). Your task is to find the minimum number of moves you need to perform in order to make the sum of digits of n be less than or equal to s.

You have to answer t independent test cases.

Input

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

The only line of the test case contains two integers n and s (1 ≤ n ≤ 10^{18}; 1 ≤ s ≤ 162).

Output

For each test case, print the answer: the minimum number of moves you need to perform in order to make the sum of digits of n be less than or equal to s.

Example

Input


5
2 1
1 1
500 4
217871987498122 10
100000000000000001 1


Output


8
0
500
2128012501878
899999999999999999

Solution (in JAVA):

Solution:
import java.util.Scanner;

public class CF1409D
{
	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		short t = sc.nextShort();
		long n;
		short s;
		long num;
		long res[] = new long[t];
		int i = 0;
		
		while(i<t) {
			n = sc.nextLong();
			s = sc.nextShort();
			String x = String.valueOf(n);
			int len = x.length();
			int sum;long reqNum = 0,lastSum;
			

			sum = 0;lastSum = 1;num = 0;
			
			for (int j = 0; j < len; j++) {
				sum += x.charAt(j)-'0';
			}
			
			if(sum <= s) {
				res[i] = num;
				i++;
				continue;
			}
			
			sum = 0;String z = "";long sumcc;
			for (int j = 0; j < len; j++)
			{
				
				sum += x.charAt(j)-'0';
				z = z + x.charAt(j);
				sumcc = Long.parseLong(z);
				
				if(x.charAt(0)-'0' >=s)
				{
					reqNum = (long)Math.pow(10, len);
					num = reqNum - n;
					break;
				}
				else if(sum>=s)
				{
					reqNum = (lastSum+1)*(long)Math.pow(10, len - j);
					num = reqNum - n;
					break;
				}
				lastSum = sumcc;
				if (sum<s)
					continue;
				}
				res[i] = num;
				i++;
			}
		for (long l : res){
			System.out.println(l);
		}
		sc.close();
	}
}