R,N=map(int,input().split()) A=sorted(list(map(int,input().split()))) B=[0]*R for a in A: B[a]=1 #print(A) Q=int(input()) from itertools import accumulate S=list(accumulate(B)) #あるリストAの累積和リスト #S[i]=A[0]+A[1]+...+A[i] def add(S,l,r):#累積和Sに対して a[l]+...+a[r] を返す(半開区間にしたほうがいいのか...?) if l==0: return S[r] else: return S[r]-S[l-1] #print(S) def f1(a,b):#a以下で最大のbの倍数 return (a//b)*b def g1(a,b):#a以上で最小のbの倍数 return ((a+b-1)//b)*b #SA=sum(A) for i in range(Q): l,r=map(int,input().split()) g=g1(l,R) f=f1(r,R) #print(f,g) if g-f==R:#もしlとrが同一区間におさまるなら→ print(add(S,l%R,r%R)) else: print(add(S,l%R,R-1)+add(S,0,r%R)+N*(f//R-g//R))