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


unsigned int sums[200000]={0};
unsigned int save[200000]={0};
bool used[200000]={false};
int ms[200];

int main()
{
 unsigned long int sum=0,max=0;
 unsigned long int n,i,j,ind=0;
 int m;
 //input
 cin>>n>>m;
 for(i=0;i<m;i++)
  cin>>ms[i];
 for(i=0;i<=n;i++)
  cin>>sums[i];
 //main
 sum+=sums[0];
 save[0]=sums[0];
 used[0]=true;
 for(i=0;i<=n;i++)
 {
  if(used[i])
  {
   for(j=0;j<m;j++)
   {
    if((i+ms[j])>n)break;
    used[i+ms[j]]=true;
    if(save[i]+sums[i+ms[j]]>save[i+ms[j]])
     save[i+ms[j]]=save[i]+sums[i+ms[j]];
   }
  }
 }
 for(i=0;i<n;i++)
 if(max<save[i])
 {
  max=save[i];
  ind=i;
 }
 cout<<max<<" "<<ind<<endl;
 return 0;
}







