/*
Solution By : Amrutansu Garanaik
Codechef id : dragonemperor
*/
#include<stdio.h>
#define MAX 10009
#define MOD 1000000007
typedef long long ll;
ll factor[101][25];
ll input[MAX][25];
ll primes[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
void preprocess()
{
for(int i=0;i<101;i++)
for(int j=0;j<25;j++)
factor[i][j]=0;
for(int i=1;i<101;i++)
{
ll num=i;
for(int j=0;j<25;j++)
{
int c=0;
while(num%primes[j]==0)
{
c++;
num/=primes[j];
}
factor[i][j]=c;
}
}
}
void update(int i,int j,int val)
{
while(i<MAX)
{
input[i][j]+=val;
i+=(i&-i);
}
}
ll sum(int i,int j)
{
ll s=0;
while(i>0)
{
s+=input[i][j];
i-=(i&-i);
}
return s;
}
ll expo(ll base,ll power)
{
if(power==0)
return 1;
if(power==1)
return base;
ll result=1;
while(power)
{
if(power&1)
result=(result*base)%MOD;
base=(base*base)%MOD;
power>>=1;
}
return result%MOD;
}
int main()
{
ll test,n,temp,q,a,b,result,fact;
preprocess();
scanf("%lld",&test);
while(test--)
{
for(int i=0;i<MAX;i++)
for(int j=0;j<25;j++)
input[i][j]=0;
scanf("%lld",&n);
for(int i=0;i<n;i++)
{
scanf("%lld",&temp);
for(int j=0;j<25;j++)
{
update(i+1,j,factor[temp][j]);
}
}
scanf("%lld",&q);
while(q--)
{
scanf("%lld%lld",&a,&b);
result=1;
fact=1;
for(int i=0;i<25;i++)
{
temp=sum(b,i)-sum(a-1,i);
result=result*(expo(primes[i],temp));
result%=MOD;
fact*=(temp+1);
fact%=MOD;
}
printf("%lld %lld\n",result,fact);
}
}
return 0;
}
LyoKCVNvbHV0aW9uIEJ5IDogQW1ydXRhbnN1IEdhcmFuYWlrCglDb2RlY2hlZiBpZCA6IGRyYWdvbmVtcGVyb3IKKi8KI2luY2x1ZGU8c3RkaW8uaD4KI2RlZmluZSBNQVggMTAwMDkKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKbGwgZmFjdG9yWzEwMV1bMjVdOwpsbCBpbnB1dFtNQVhdWzI1XTsKbGwgcHJpbWVzWzI1XT17MiwzLDUsNywxMSwxMywxNywxOSwyMywyOSwzMSwzNyw0MSw0Myw0Nyw1Myw1OSw2MSw2Nyw3MSw3Myw3OSw4Myw4OSw5N307CnZvaWQgcHJlcHJvY2VzcygpCnsJCQoJZm9yKGludCBpPTA7aTwxMDE7aSsrKQoJZm9yKGludCBqPTA7ajwyNTtqKyspCgkJZmFjdG9yW2ldW2pdPTA7Cglmb3IoaW50IGk9MTtpPDEwMTtpKyspCgl7CgkJbGwgbnVtPWk7CgkJZm9yKGludCBqPTA7ajwyNTtqKyspCgkJewoJCQlpbnQgYz0wOwoJCQl3aGlsZShudW0lcHJpbWVzW2pdPT0wKQoJCQl7CgkJCQljKys7CgkJCQludW0vPXByaW1lc1tqXTsKCQkJfQoJCQlmYWN0b3JbaV1bal09YzsKCQl9CQkKCX0KfQp2b2lkIHVwZGF0ZShpbnQgaSxpbnQgaixpbnQgdmFsKQp7Cgl3aGlsZShpPE1BWCkKCXsKCQlpbnB1dFtpXVtqXSs9dmFsOwoJCWkrPShpJi1pKTsKCX0KfQpsbCBzdW0oaW50IGksaW50IGopCnsKCWxsIHM9MDsKCXdoaWxlKGk+MCkKCXsKCQlzKz1pbnB1dFtpXVtqXTsKCQlpLT0oaSYtaSk7Cgl9CglyZXR1cm4gczsKfQpsbCBleHBvKGxsIGJhc2UsbGwgcG93ZXIpCnsKCWlmKHBvd2VyPT0wKQoJCXJldHVybiAxOwoJaWYocG93ZXI9PTEpCgkJcmV0dXJuIGJhc2U7CglsbCByZXN1bHQ9MTsKCXdoaWxlKHBvd2VyKQoJewoJCWlmKHBvd2VyJjEpCgkJCXJlc3VsdD0ocmVzdWx0KmJhc2UpJU1PRDsKCQliYXNlPShiYXNlKmJhc2UpJU1PRDsKCQlwb3dlcj4+PTE7Cgl9CglyZXR1cm4gcmVzdWx0JU1PRDsKfQppbnQgbWFpbigpCnsKCWxsIHRlc3Qsbix0ZW1wLHEsYSxiLHJlc3VsdCxmYWN0OwoJcHJlcHJvY2VzcygpOwoJc2NhbmYoIiVsbGQiLCZ0ZXN0KTsKCXdoaWxlKHRlc3QtLSkKCXsKCQlmb3IoaW50IGk9MDtpPE1BWDtpKyspCgkJZm9yKGludCBqPTA7ajwyNTtqKyspCgkJCWlucHV0W2ldW2pdPTA7CgkJCQoJCXNjYW5mKCIlbGxkIiwmbik7CgkJZm9yKGludCBpPTA7aTxuO2krKykKCQl7CgkJCXNjYW5mKCIlbGxkIiwmdGVtcCk7CgkJCWZvcihpbnQgaj0wO2o8MjU7aisrKQoJCQl7CgkJCQl1cGRhdGUoaSsxLGosZmFjdG9yW3RlbXBdW2pdKTsKCQkJfQoJCX0KCQlzY2FuZigiJWxsZCIsJnEpOwoJCXdoaWxlKHEtLSkKCQl7CgkJCXNjYW5mKCIlbGxkJWxsZCIsJmEsJmIpOwoJCQlyZXN1bHQ9MTsKCQkJZmFjdD0xOwoJCQlmb3IoaW50IGk9MDtpPDI1O2krKykKCQkJewoJCQkJdGVtcD1zdW0oYixpKS1zdW0oYS0xLGkpOwoJCQkJcmVzdWx0PXJlc3VsdCooZXhwbyhwcmltZXNbaV0sdGVtcCkpOwoJCQkJcmVzdWx0JT1NT0Q7CgkJCQlmYWN0Kj0odGVtcCsxKTsKCQkJCWZhY3QlPU1PRDsKCQkJfQoJCQlwcmludGYoIiVsbGQgJWxsZFxuIixyZXN1bHQsZmFjdCk7CgkJfQoJfQoJcmV0dXJuIDA7Cn0=