Recently, the bear started studying data structures and faced the following problem.

You are given a sequence of integers *x*<sub class="lower-index">1</sub>, *x*<sub class="lower-index">2</sub>, ..., *x*<sub class="lower-index">*n*</sub> of length *n* and *m* queries, each of them is characterized by two integers *l*<sub class="lower-index">*i*</sub>, *r*<sub class="lower-index">*i*</sub>. Let's introduce *f*(*p*) to represent the number of such indexes *k*, that *x*<sub class="lower-index">*k*</sub> is divisible by *p*. The answer to the query *l*<sub class="lower-index">*i*</sub>, *r*<sub class="lower-index">*i*</sub> is the sum: <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/5e448f6c1a0e40843cecdbbeb95970464626032f.png" style="max-width: 100.0%;max-height: 100.0%;"/>, where *S*(*l*<sub class="lower-index">*i*</sub>, *r*<sub class="lower-index">*i*</sub>) is a set of prime numbers from segment [*l*<sub class="lower-index">*i*</sub>, *r*<sub class="lower-index">*i*</sub>] (both borders are included in the segment).

Help the bear cope with the problem.
The first line contains integer *n* (1 ≤ *n* ≤ 10<sup class="upper-index">6</sup>). The second line contains *n* integers *x*<sub class="lower-index">1</sub>, *x*<sub class="lower-index">2</sub>, ..., *x*<sub class="lower-index">*n*</sub> (2 ≤ *x*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">7</sup>). The numbers are not necessarily distinct.

The third line contains integer *m* (1 ≤ *m* ≤ 50000). Each of the following *m* lines contains a pair of space-separated integers, *l*<sub class="lower-index">*i*</sub> and *r*<sub class="lower-index">*i*</sub> (2 ≤ *l*<sub class="lower-index">*i*</sub> ≤ *r*<sub class="lower-index">*i*</sub> ≤ 2·10<sup class="upper-index">9</sup>) — the numbers that characterize the current query.
import sys
input = sys.stdin.readline
import bisect
n=int(input())
arr=[int(x) for x in input().split()]
maxi=max(arr)
#arr.sort()
a=[0 for i in range(maxi+1)]
for i in arr:
    a[i]+=1
temp=[0 for i in range(maxi+1)]
p=[True for i in range(maxi+1)]
p[0],p[1]=False,False
i=2
#print(a)
while i<=maxi:
    temp[i]=temp[i-1]
    if p[i]==True:
        #print(i)
        temp[i]+=a[i]
        curr=2*i
        while curr<=maxi:
            p[curr]=False
            temp[i]+=a[curr]
            curr+=i
    i+=1
#print(temp)
for _ in range(int(input())):
    a,b=[int(x) for x in input().split()]
    a-=1
    if a>maxi:
        ans1=temp[-1]
    else:
        ans1=temp[a]
    if b>maxi:
        ans2=temp[-1]
    else:
        ans2=temp[b]
    print(ans2-ans1)