human
PYTHON solution for "Theofanis really likes sequences of positive integers, thus his teacher (Yeltsa Kcir) gave him a problem about a sequence that consists of only special numbers.

Let's call a positive number special if it can be written as a sum of different non-negative powers of n. For example, for n = 4 number 17 is special, because it can be written as 4^0 + 4^2 = 1 + 16 = 17, but 9 is not.

Theofanis asks you to help him find the k-th special number if they are sorted in increasing order. Since this number may be too large, output it modulo 10^9+7.

Input

The first line contains a single integer t (1 ≤ t ≤ 10^4) — the number of test cases.

The first and only line of each test case contains two integers n and k (2 ≤ n ≤ 10^9.
1 ≤ k ≤ 10^9).

Output

For each test case, print one integer — the k-th special number in increasing order modulo 10^9+7.

Example

Input

3
3 4
2 12
105 564

Output

9
12
3595374

Note

For n = 3 the sequence is [1,3,4,9...]":
assistant
#Here is Python program to find the k-th special number if they are sorted in increasing order.
 import sys
testing = len(sys.argv) == 4 and sys.argv[3] == "myTest"
interactive = False
if testing:
    cmd = sys.stdout
    from time import time
    start_time = int(round(time() * 1000)) 
    readAll = open(sys.argv[1], 'r').read
    sys.stdout = open(sys.argv[2], 'w')
else:
    readAll = sys.stdin.read

# ############ ---- I/O Functions ---- ############

class InputData:
    def __init__(self):
        self.lines = readAll().split('\n')
        self.n = len(self.lines)
        self.ii = -1
    def input(self):
        self.ii += 1
        assert self.ii < self.n
        return self.lines[self.ii]

flush = sys.stdout.flush
if interactive and not testing:
    input = sys.stdin.readline
else:
    inputData = InputData()
    input = inputData.input

def intin():
    return(int(input()))
def intlin():
    return(list(map(int,input().split())))
def chrin():
    return(list(input()))
def strin():
    return input()
def lout(l, sep="\n", toStr=True):
    print(sep.join(map(str, l) if toStr else l))
def dout(*args, **kargs):
    if not testing: return
    if args: print(args[0] if len(args)==1 else args)
    if kargs: print([(k,v) for k,v in kargs.items()])
def ask(q):
    sys.stdout.write(str(q)+'\n')
    flush()
    return intin()
    
# ############ ---- I/O Functions ---- ############

# from math import ceil
# from collections import defaultdict as ddict, Counter
# from heapq import *
# from Queue import Queue
MOD = 10**9+7
a = [1]
while a[-1] < 10**9:
    a.append(a[-1]*2)
for i in xrange(1,len(a)):
    a[i] += a[i-1]
dout(len(a))
def main():
    n,k = intlin()
    if k == 1:
        return 1
    i = len(a)-1
    ans = 0
    while k > 0:
        if i == 0:
            if k==1:
                ans += 1
            break
        if not (k>a[i-1] and k<=a[i]):
            i -= 1
            continue
        # dout(i=i,ai=a[i],k=k,num=pow(n,i,MOD))
        ans += pow(n,i,MOD)
        k -= a[i-1]+1
        i -= 1
    return ans%MOD



anss = []
for _ in xrange(intin()):
    anss.append(main())
    #...