import sys

Mod=10**9+7
def slove_shopping_m_bigger(n,m):

    initial_num=m//n
    
    accrete_num=m%n
   
    change_num=initial_num+1
   
    remain_num=n-accrete_num
   
    money=accrete_num*pow(2,change_num,Mod)%Mod+remain_num*pow(2,initial_num,Mod)%Mod

    answer=money%(Mod)

    print(answer)

def slove_shopping_n_bigger(n,m):
    money=m*(2*1)

    answer=money%(Mod)

    print(answer)
def main():
    
    lines=[line.strip() for line in sys.stdin if line.strip()]

    sets=int(lines[0])

    index=1

    for _ in range(sets):
 
        list_test=list(map(int,lines[index].split()))
        index+=1
        n=list_test[0]
        m=list_test[1]

        if m>=n:
            slove_shopping_m_bigger(n,m)
        else:
            slove_shopping_n_bigger(n,m)

if __name__=="__main__":
    main()