#include <iostream>
#include <cstdio>
using namespace std;
//英语 看博友分析 抄博友程序 最大公约数 最小公倍数 背
int gcd(int a,int b)
{
if(b==0)
{
return a;
}else
{
return gcd(b,a%b);
}
}
int lcm[52][52][52][52];
int da[100];
int main()
{
while(1)
{
int n,m;
cin>>n>>m;
if(n==0 && m==0)
{
break;
}
for(int i=0;i<n;i++)
{
cin>>da[i];
}
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
for(int k=j+1;k<n;k++)
{
for(int l=k+1;l<n;l++)
{
int lcm1=(da[i]*da[j])/gcd(da[i],da[j]);
int lcm2=(da[k]*da[l])/gcd(da[k],da[l]);
lcm[i][j][k][l]=(lcm1*lcm2)/gcd(lcm1,lcm2);
}
}
}
}
while(m--)
{
int zhuo;
cin>>zhuo;
int left=0x3f3f3f3f;
int right=0x3f3f3f3f;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
for(int k=j+1;k<n;k++)
{
for(int l=k+1;l<n;l++)
{
int t=lcm[i][j][k][l];
if(zhuo%t==0)
{
left=0;
right=0;
}else
{
left=min(left,zhuo%t);
right=min(right,t-zhuo%t);
}
}
}
}
}
cout<<zhuo-left<<" "<<zhuo+right<<endl;
}
}
return 0;
}