description: 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...]
solution: 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())
      # anss.append("YES" if main() else "NO")
  lout(anss)
  
  if testing:
      sys.stdout = cmd
      print(int(round(time() * 1000))  - start_time)