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 CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
vector<int> cnt;
vector<int> ans;
int main() {
  int t;
  scanf("%d", &t);
  for (int i = 1; i <= t; i++) {
    long long n, s;
    scanf("%lld%lld", &n, &s);
    string str = "";
    long long tem = n;
    long long fl = 0;
    long long k = 0;
    while (tem) {
      k++;
      str += '0' + tem % 10;
      if (fl == 0 && tem % 10) fl = k;
      tem /= 10;
    }
    fl--;
    long long nw = 0;
    str.push_back('0');
    int z = 0;
    for (int i = str.length() - 1; i >= 0; i--) {
      nw += str[i] - '0';
      if (nw == s && i <= fl) {
        printf("0\n");
        z = 1;
        break;
      } else if (nw >= s) {
        str[i + 1] = str[i + 1] + 1;
        long long ans = 0;
        for (int j = str.length() - 1; j > i; j--) {
          ans = ans * 10 + (long long)str[j] - '0';
        }
        for (int j = i; j >= 0; j--) ans *= 10;
        printf("%lld\n", ans - n);
        z = 1;
        break;
      }
    }
    if (!z) {
      printf("0\n");
    }
  }
}