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:
// package Codeforces;

import com.sun.org.apache.regexp.internal.RE;

import java.util.Arrays;
import java.util.Scanner;

public class DecreaseTheSumOfDigits {
    public static Scanner s;
    public static long min = Long.MAX_VALUE;

    public static void main (String[] args) {

        s = new Scanner(System.in);
        int t = s.nextInt();
        //int i = 1;
        while(t-- > 0){
            solve();
        }
    }

    public static void solve(){

        min = Long.MAX_VALUE;
        long n = s.nextLong();
        int sum = s.nextInt();

        int st = getSum(n);
        if(st <= sum){
            System.out.println(0);
            return;
        }
        long pw = 1;
        long ans = 0;

        for (int i = 0; i < 18; ++i) {
            long digit = (n / pw) % 10;
            long add = pw * ((10 - digit) % 10);
            n += add;
            ans += add;
            pw *= 10;


            if (getSum(n) <= sum) {
                break;
            }
        }
        System.out.println(ans);
    }


    public static int getSum(long n){
        int temp = 0 ;

        while(n > 0){
            temp += n%(long)10;
            n = n/(long)10;
        }
        return temp;
    }


    public static int [] scan1d(int n){
        int a [] = new int [n];
        for(int i=0 ; i<n ; i++){
            a[i] = s.nextInt();
        }

        return a;
    }

    public static int [][] scan2d(int n, int m){

        int a [][] = new int [n][m];

        for(int i = 0 ; i<n ; i++){
            for(int j = 0 ; j<m ; j++){
                a[i][j] = s.nextInt();
            }
        }
        return a;
    }
}