Problem: Well, here is another math class task. In mathematics, GCD is the greatest common divisor, and it's an easy task to calculate the GCD between two positive integers.

A common divisor for two positive numbers is a number which both numbers are divisible by.

But your teacher wants to give you a harder task, in this task you have to find the greatest common divisor d between two integers a and b that is in a given range from low to high (inclusive), i.e. low ≤ d ≤ high. It is possible that there is no common divisor in the given range.

You will be given the two integers a and b, then n queries. Each query is a range from low to high and you have to answer each query.

Input

The first line contains two integers a and b, the two integers as described above (1 ≤ a, b ≤ 109). The second line contains one integer n, the number of queries (1 ≤ n ≤ 104). Then n lines follow, each line contains one query consisting of two integers, low and high (1 ≤ low ≤ high ≤ 109).

Output

Print n lines. The i-th of them should contain the result of the i-th query in the input. If there is no common divisor in the given range for any query, you should print -1 as a result for this query.

Examples

Input

9 27
3
1 5
10 11
9 11


Output

3
-1
9

Solution (in PYTHON):

Solution:
def find_divisors(a):
    if a == 1:
        return [1]
    divhigh = []
    divlow = []
    i,j = 1,a
    while i < j:
        j=a/i
        if a%i == 0:
            divhigh.append(j)
            divlow.insert(0,i)
        i = i + 1
    if divhigh[-1] == divlow[0]:
        divhigh.pop(-1)
    return divhigh+divlow
    

def search(a,b,high):
    if a>=b:
        return a
    #print a,b
    check = divs[(a+b)/2]
    if check == high:
        return (a+b)/2
    if check > high:
        return search (a,((a+b)/2)-1,high)
    if check < high:
        return search (((a+b)/2)+1,b,high)
    

mystring = raw_input()
a,b = map(int,mystring.split())
diva = find_divisors(a)
divb = find_divisors(b)
i,j = 0,0
divs = []
for div in diva:
    if div in divb:
        divs.append(div)
divs.reverse()
n = int(raw_input())
ranges = []
for i in xrange (0,n):
    ranges.append(map(int,raw_input().split()))
for range in ranges:
    a,b = 0, len(divs)-1
    temp =  search(a,b,range[1])
    #print temp
    if divs[temp] > range[1]:
        temp -=1
    if divs[temp] < range[0]:
        print -1
        continue
    print divs[temp]