I found an interesting problem on https://codeforces.com/problemset/problem/900/D:
Count the number of distinct sequences a_1, a_2, ..., a_{n} (1 ≤ a_{i}) consisting of positive integers such that gcd(a_1, a_2, ..., a_{n}) = x and $\sum_{i = 1}^{n} a_{i} = y$. As this number could be large, print the answer modulo 10^9 + 7.

gcd here means the greatest common divisor.


-----Input-----

The only line contains two positive integers x and y (1 ≤ x, y ≤ 10^9).


-----Output-----

Print the number of such sequences modulo 10^9 + 7.


-----Examples-----
Input
3 9

Output
3

Input
5 8

Output
0



-----Note-----

There are three suitable sequences in the first test: (3, 3, 3), (3, 6), (6, 3).

There are no suitable sequences in the second test.

I tried it in Python, but could not do it. Can you solve it?
import math
lectura=lambda:map (int,input().split())
x,y=lectura()
mod= 1000000007
if (y%x!=0):
    print("0")
else:
    y= y//x
    setPrueba=set()
    for i in range(1, int(math.sqrt(y) + 1)):
        if (y%i==0):
            setPrueba.add(i)
            setPrueba.add(y// i)
    setPrueba=sorted(list(setPrueba))
    setOrdenado= setPrueba.copy()
    for i in range(len(setOrdenado)):
        #setOrdenado[i] = math.pow(2, setPrueba[i] - 1)
        setOrdenado[i]=pow(2, setPrueba[i] - 1, mod)
        for j in range(i):
            if setPrueba[i]% setPrueba[j]==0:
                setOrdenado[i]-= setOrdenado[j]
    print(setOrdenado[len(setOrdenado)-1] % mod)