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()