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;
int main() {
  ios_base ::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int t;
  cin >> t;
  while (t--) {
    unsigned long long n;
    int s;
    cin >> n >> s;
    vector<int> digits;
    unsigned long long temp = n;
    int x;
    while (temp != 0) {
      x = temp % 10;
      digits.push_back(x);
      temp = temp / 10;
    }
    reverse(digits.begin(), digits.end());
    vector<int> sum_places(digits.size());
    for (int i = 0; i < digits.size(); i++) {
      if (i == 0) {
        sum_places[i] = digits[i];
      } else {
        sum_places[i] = sum_places[i - 1] + digits[i];
      }
    }
    int index = -1;
    bool equal = false;
    for (int i = 0; i < sum_places.size(); i++) {
      if (sum_places[i] >= s) {
        index = i;
        if (sum_places[i] == s) {
          equal = true;
          for (int j = i + 1; j < digits.size(); j++) {
            if (sum_places[j] != s) {
              equal = false;
              break;
            }
          }
        }
        break;
      }
    }
    if (index == 0 && !equal) {
      digits.insert(digits.begin(), 1);
      for (int i = 1; i < digits.size(); i++) {
        digits[i] = 0;
      }
    } else if (index != digits.size() - 1 && index != -1 && !equal) {
      digits[index - 1] = digits[index - 1] + 1;
      for (int i = index; i < digits.size(); i++) {
        digits[i] = 0;
      }
    } else if (index == digits.size() - 1 && !equal) {
      digits[index - 1] = digits[index - 1] + 1;
      for (int i = index; i < digits.size(); i++) {
        digits[i] = 0;
      }
    }
    unsigned long long num = 0;
    unsigned long long y = 1;
    for (int i = digits.size() - 1; i >= 0; i--) {
      num = num + (digits[i] * y);
      y = y * 10;
    }
    cout << num - n << "\n";
  }
  return 0;
}