/*
TASK:skok
LANG:C++
*/
#include <iostream>
using namespace std;

void Read();
void Solve();

int N,M;
int app[262144];
int jmp[256];

int amax=0,maxpl=0;

int main()
{
   Read();
   Solve();

   return 0;
}

void Read()
{
   cin>>N>>M;
   int i;

   for(i=0;i<M;i++)  cin>>jmp[i];
   for(i=0;i<=N;i++)  cin>>app[i];
}

void Solve()
{
   int temp,cmax,flag; //flag --> moje li da se stigne

   for(int i=0;i<=N;i++)
   {
      flag=0;
      cmax=app[i];
      for(int j=0;j<M;j++)
      {
         if(i-jmp[j]>=0)
         {
            temp=app[i-jmp[j]]+app[i];
            if(cmax<temp)
            {
               cmax=temp;
               flag=1;
            }
         }
      }

      if(!flag && i)   app[i]=-1;
      else app[i]=cmax;

      if(amax<app[i])
      {
         amax=app[i];
         maxpl=i;
      }
   }

   cout<<amax<<' ' <<maxpl<<endl;
}
