Problem:
Score : 400 points

Problem Statement

You are given integers N and M.

Consider a sequence a of length N consisting of positive integers such that a_1 + a_2 + ... + a_N = M. Find the maximum possible value of the greatest common divisor of a_1, a_2, ..., a_N.

Constraints

All values in input are integers.

1 \leq N \leq 10^5

N \leq M \leq 10^9

Input

Input is given from Standard Input in the following format:

N M

Output

Print the maximum possible value of the greatest common divisor of a sequence a_1, a_2, ..., a_N that satisfies the condition.

Sample Input 1

3 14

Sample Output 1

2

Consider the sequence (a_1, a_2, a_3) = (2, 4, 8). Their greatest common divisor is 2, and this is the maximum value.

Sample Input 2

10 123

Sample Output 2

3

Sample Input 3

100000 1000000000

Sample Output 3

10000

Solution in Python (3.4.3) (judge verdict: Runtime Error)

def make_divisor_list(num):
    if num < 1:
        return []
    elif num == 1:
        return [1]
    else:
        divisor_list = []
        i = 1
        while i*i <= num:
            if num%i == 0:
                divisor_list.append(i)
                divisor_list.append(num//i)

            i += 1
        divisor_list.append(num)

        return sorted(set(divisor_list))


def bin_search(L,Target):
    left = 0
    righ = len(L)

    i = 0
    while left < righ:

        mid  = (left + righ) //2

        if L[mid] <= Target <= L[mid+1]:
            break
        elif L[mid] <= Target:
            left = mid
            righ = righ
        else:
            left = left
            righ = mid

    return mid

N,M = map(int,input().split())

Target = N
L = make_divisor_list(M)

mid = bin_search(L,Target)

ans = M//L[mid+1]
print(ans)