def f l,s
l[0]&&s>0?$h[l+[s]]||=(r=0;l[0].map{|i,j|r+=f l[1..-1],s-i};r):s==0?1:0
end
while 0<m=gets.to_i
$h={}
c=(1..m).map{i,j=gets.split.map &:to_i;(0..j).map{|k|k*i}}
gets.to_i.times{p f c,gets.to_i}
end