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.io.*;
import java.util.*;

public class D{
    public static void main(String[] args) {
        FastReader fs=new FastReader();
        PrintWriter out=new PrintWriter(System.out);
        int t=1;
        t=fs.nextInt();
        for(int i=1;i<=t;i++) {
        	D m=new D();
            m.solve(i,out,fs);
        }
        out.close();
    } 
   
    public void solve(int test,PrintWriter out,FastReader fs){
        char n[]=fs.nextCharArray();
        int sA[]=new int[n.length];
        int num[]=new int[n.length];
        int s=fs.nextInt();
        int sum=0;
        for(int i=0;i<n.length;i++){
            sum+=(n[i]-'0');
            sA[i]=sum;
            num[i]=(n[i]-'0');
        }
        if(sum<=s){
            out.println("0");
            return;
        }
        boolean first=false;
        for(int i=0;i<n.length;i++){
            if(sA[i]>=s){
                if(sA[i]!=sA[n.length-1]){
                    if(9-num[i]==0 && !first) continue;
                    first=true;
                    out.print(9-num[i]);
                }
                else{
                    first=true;
                    out.print( (10-num[i])%10 );
                }
            }
        }
        out.println();
    }
}
class FastReader{
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st=new StringTokenizer("");  
    String next(){
        while(!st.hasMoreTokens()){
            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());
    }
    int[] nextIntArray(int n){
        int a[]=new int[n];
        for(int i=0;i<n;i++)a[i]=nextInt();
        return a;
    } 
    long[] nextLongArray(int n){
        long a[]=new long[n];
        for(int i=0;i<n;i++)a[i]=nextInt();
        return a;
    }
    char[] nextCharArray(){
        char a[]=next().toCharArray();
        return a;
    }
}