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:
import sys
if sys.subversion[0] == "PyPy":
    import io, atexit
    sys.stdout = io.BytesIO()
    atexit.register(lambda: sys.__stdout__.write(sys.stdout.getvalue()))
    
    sys.stdin = io.BytesIO(sys.stdin.read())
    input = lambda: sys.stdin.readline().rstrip()

RS = raw_input
RI = lambda x=int: map(x,RS().split())
RN = lambda x=int: x(RS())
''' ...................................................................... '''

def factor(num):
    i = 1
    fac = set()
    while i*i<=num:
        if num%i==0:
            fac.add(i)
            fac.add(num/i)
        i+=1
    return fac

def find(arr,m,M):
    lo,hi = 0,len(arr)-1
    ans = -1
    while lo<=hi:
        mid = (lo+hi)/2
        
        if arr[mid]<m:
            lo = mid+1
        elif arr[mid]>M:
            hi = mid-1
        else:
            ans = arr[mid]
            lo = mid+1
    return ans

a,b = RI()
facA = factor(a)
facB = factor(b)
common = sorted(facA&facB)

for _ in xrange(RN()):
    lo,hi = RI()
    print find(common,lo,hi)