<gh_stars>0
# Snuke has a die (singular of dice) that shows integers from 1 through N with equal probability, and an integer 1.
# He repeats the following operation while his integer is less than or equal to M.
# He rolls the die. If the die shows an integer x, he multiplies his integer by x.
# Find the expected value of the number of times he rolls the die until he stops, modulo 109+7.

n,m = map(int, input().split())

while x <= m:
    if(x%q != 0):
        R = p/q *()
# Snuke has a die (singular of dice) that shows integers from 1 through N with equal probability, and an integer 1.
# He repeats the following operation while his integer is less than or equal to M.
# He rolls the die. If the die shows an integer x, he multiplies his integer by x.
# Find the expected value of the number of times he rolls the die until he stops, modulo 109+7.

n,m = map(int, input().split())

while x <= m:
    if(x%q != 0):
        R = p/q *()
# Snuke has a die (singular of dice) that shows integers from 1 through N with equal probability, and an integer 1. # He repeats the following operation while his integer is less than or equal to M. # He rolls the die. If the die shows an integer x, he multiplies his integer by x. # Find the expected value of the number of times he rolls the die until he stops, modulo 109+7.