#include <bits/stdc++.h>
using namespace std;
template <class t, class u>
bool maxi(t &a, u b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class t, class u>
bool mini(t &a, u b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
int64_t binpow(int64_t a, int64_t b) {
  if (b == 0) return 1;
  int64_t tmp = pow(a, b / 2ll);
  tmp *= tmp;
  if (b & 1ll) tmp *= a;
  return tmp;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t;
  cin >> t;
  function<int(int64_t)> calc = [&](int64_t x) {
    int sum = 0;
    while (x) {
      sum += x % 10;
      x /= 10;
    }
    return sum;
  };
  while (t--) {
    int64_t n;
    cin >> n;
    int s;
    cin >> s;
    int cnt = 0;
    int64_t m = n;
    while (calc(n) > s) {
      ++cnt;
      int64_t sub =
          ((n / binpow(10ll, cnt - 1)) % 10ll) * binpow(10ll, cnt - 1);
      int64_t add = binpow(10ll, cnt);
      if (sub != 0) {
        n -= sub;
        n += add;
      }
    }
    cout << n - m << '\n';
  }
  return 0;
}

### Prompt

Please provide a cpp coded solution to the problem described below:

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>
using namespace std;
template <class t, class u>
bool maxi(t &a, u b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class t, class u>
bool mini(t &a, u b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
int64_t binpow(int64_t a, int64_t b) {
  if (b == 0) return 1;
  int64_t tmp = pow(a, b / 2ll);
  tmp *= tmp;
  if (b & 1ll) tmp *= a;
  return tmp;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t;
  cin >> t;
  function<int(int64_t)> calc = [&](int64_t x) {
    int sum = 0;
    while (x) {
      sum += x % 10;
      x /= 10;
    }
    return sum;
  };
  while (t--) {
    int64_t n;
    cin >> n;
    int s;
    cin >> s;
    int cnt = 0;
    int64_t m = n;
    while (calc(n) > s) {
      ++cnt;
      int64_t sub =
          ((n / binpow(10ll, cnt - 1)) % 10ll) * binpow(10ll, cnt - 1);
      int64_t add = binpow(10ll, cnt);
      if (sub != 0) {
        n -= sub;
        n += add;
      }
    }
    cout << n - m << '\n';
  }
  return 0;
}

```