/*
TASK:FESTB
LANG:C++
*/
#include<iostream.h>
 struct T{
 long p;
 long c;
 }*A;
 long abs1(long a){return (a>0)?a:-a;}
 int main()
 {
  long i,j,m,n,s,r,c1,r1,min=11000000,max=-1,br=0;
  cin>>n>>m;
  A=new struct T [n];
  for(i=0;i<n;i++)
  {
   cin>>c1>>r1;
   for(j=0;j<br;j++)if(A[j].c==c1){A[j].p+=r1; break;}
   if(j==br){A[br].c=c1; A[br++].p=r1;}
   if(c1<min)min=c1;
   if(c1>max)max=c1;
  }
  for(i=0;i<m;i++)
  {
   cin>>s;
   for(j=0,r=0;j<br;j++)
    r=r+(A[j].c-min)*A[j].p;
   if(r==s)cout<<min<<" "<<"0";
    else {
     if(r>s){
     c1=min; r1=abs1(s-r);
     for(j=min;j<max;j++){
      for(long g=0,r=0;g<br;g++)
       r=r+abs1((A[g].c-j)*A[g].p);
      if(r1>abs1(s-r)){r1=abs1(s-r); c1=j;}
     }
     cout<<c1<<" "<<r1<<endl;
     }
     else {
     for(j=0,r1=0;j<br;j++)
      r1=r1+(A[j].c-max)*A[j].p;
      r1=-r1;
     if(abs1(r1-s)<abs1(r-s))
      for(j=min-10000,r1=10000000;j<min;j++){
       for(long g=0,r=0;g<br;g++)
	r=r+(A[g].c-j)*A[g].p;
       if(r1>abs1(s-r)){r1=abs1(s-r); c1=j;}
      }
     else
      for(j=max;j<max+10000;j++){
       for(long g=0,r=0;g<br;g++)r=r+(A[g].c-j)*A[g].p;
	if(r1>abs1(s-r)){r1=abs1(s-r); c1=j;}
      }
     cout<<c1<<" "<<r1<<endl;
     }
    }
  }
  return 0;
 }

