R,N=map(int,input().split()) A=set(list(map(int,input().split()))) B=[0]*R for a in A: B[a]=1 A=B #print(A) Q=int(input()) from itertools import accumulate S=list(accumulate(A)) #あるリスト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): 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) if f<=l: print(add(S,l%R,r%R)) else: print(add(S,l%R,R-2)+add(S,0,r%R)+SA*((f-g)//R))