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:
//189301019.akshay
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.Scanner; 
import java.util.Random;
import java.util.Arrays;
import java.util.StringTokenizer; 

public class D 
{ 
    public static void main(String[] args) 
	{ 
		FastReader sc=new FastReader(); 
		StringBuffer ans=new StringBuffer();
		int test=sc.nextInt();
		outer:while(test-->0)
		{
			long a=sc.nextLong(),s=sc.nextLong();
			long aa=a;
			long digits=0;
			long sum=0;
			long temp=a;
			
			while(temp>0) {
				++digits;
				long t=temp%10;
				sum+=t;
				temp=temp/10;
			}
			long req=0;
			long pos=0;
			long result=0;
			
			while(sum>s && a>0) {
				pos++;
				long temp2 =a%10;
				a=a/10;
				result += (pow(10,pos)-temp2);
				while(a>0 && a%10 ==9) {
					a=a/10;
					temp2+=9;
					++pos;
				}
				sum=sum-temp2+1;
				a+=1;
			}
//			System.out.println("Result "+result);
			if(sum>s) {
				long temp2 = pow(10,digits+1)-aa;
				ans.append(temp2+"\n");
				continue outer;
			}
			else {
				if(pos == 0) {
					ans.append("0\n");
					continue outer;
				}
				long temp2 = pow(10,pos);
				temp2 = temp2-aa%temp2;
				ans.append(temp2+"\n");
				continue outer;
			}
			
		
		}
		
	    System.out.print(ans);
	} 
    
    static long pow(long a,long b) {
	   	 if (b == 0)
	   	        return 1;
	   	     long res = pow(a, b / 2);
	   	    if (b % 2 == 1)
	   	        return res * res * a;
	   	    else
	   	        return res * res;
	   	

   }

 
	
	static class FastReader 
	{ 
		BufferedReader br; 
		StringTokenizer st; 

		public FastReader() 
		{ 
			br = new BufferedReader(new
					InputStreamReader(System.in)); 
		} 

		String next() 
		{ 
			while (st == null || !st.hasMoreElements()) 
			{ 
				try
				{ 
					st = new StringTokenizer(br.readLine()); 
				} 
				catch (IOException e) 
				{ 
					e.printStackTrace(); 
				} 
			} 
			return st.nextToken(); 
		} 

		int nextInt() 
		{ 
			return Integer.parseInt(next()); 
		} 

		long nextLong() 
		{ 
			return Long.parseLong(next()); 
		} 

		double nextDouble() 
		{ 
			return Double.parseDouble(next()); 
		} 

		String nextLine() 
		{ 
			String str = ""; 
			try
			{ 
				str = br.readLine(); 
			} 
			catch (IOException e) 
			{ 
				e.printStackTrace(); 
			} 
			return str; 
		} 
	} 


}