#include <bits/stdc++.h>
int main() {
  int s2, i, x, y, n, m;
  long long s, s3, c, a, b;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%lld%d", &s, &m);
    s3 = s;
    for (y = 1;; y++) {
      s2 = 0;
      for (x = 1;; x++) {
        a = pow(10, x - 1);
        s2 = s2 + s3 / a % 10;
        b = pow(10, x);
        if (s3 / b == 0) break;
      }
      c = pow(10, y);
      if (s2 > m)
        s3 = s3 / c * c + c;
      else
        break;
    }
    if (i < n)
      printf("%lld\n", s3 - s);
    else
      printf("%lld", s3 - s);
  }
}

### Prompt

Your challenge is to write a cpp solution to the following 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

### Response

```cpp
#include <bits/stdc++.h>
int main() {
  int s2, i, x, y, n, m;
  long long s, s3, c, a, b;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%lld%d", &s, &m);
    s3 = s;
    for (y = 1;; y++) {
      s2 = 0;
      for (x = 1;; x++) {
        a = pow(10, x - 1);
        s2 = s2 + s3 / a % 10;
        b = pow(10, x);
        if (s3 / b == 0) break;
      }
      c = pow(10, y);
      if (s2 > m)
        s3 = s3 / c * c + c;
      else
        break;
    }
    if (i < n)
      printf("%lld\n", s3 - s);
    else
      printf("%lld", s3 - s);
  }
}

```