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

Solution:
'''
	AUTHOR - Ritesh Kumar Singh
'''

import sys,threading
import math
from collections import defaultdict,Counter
input = sys.stdin.readline

def rl(type):
	return [type(w) for w in input().split()]

def reverse(arr):
	return arr[-1::-1]

def mod(a,m):
	return (a%m + m)%m

def create_graph(n):
	graph = {}
	for _ in range(n):
		x,y = map(int,input().split())
		graph[x].append(y)
		graph[y].append(x)
	return graph

def check_prime(n):
	temp = int(math.sqrt(n) + 1)
	for i in range(2,temp):
		if n % i == 0:
			return False
	return True

#driver code
def main():
	for _ in range(int(input())):
		n,s = input().split()
		s = int(s)
		if sum(int(i) for i in n) <= int(s):
			print("0")
			continue

		tempSum = 0
		r = 0
		for i in range(len(n)):
			if tempSum + int(n[i]) >= s:
				break
			else:
				tempSum += int(n[i])
				r += 1
		if r == 0:
			actual_result = '1'
			actual_result += '0' * len(n)
		else:
			temp = int(n[0:r]) + 1
			actual_result = str(temp)
			actual_result += '0' * (len(n) - r)
		print(int(actual_result) - int(n))


sys.setrecursionlimit(10**6)
threading.stack_size(10**8)
t = threading.Thread(target=main)
t.start()
t.join()