/*
TASK: skok
LANG: C++
*/
#include<stdio.h>
using namespace std;
    int n,m,used[200002],apple[200002],skok[256];
    long long res[200002],maxx;
int main()
{
    int i,j,maxi,minn=1001;
    scanf("%d%d",&n,&m);
    for(i=0;i<m;i++)
    {
      scanf("%d",&skok[i]);
      if(skok[i]<minn)minn=skok[i];
    }
    for(i=0;i<=n;i++)scanf("%d",&apple[i]);
    used[0]=1;
    res[0]=apple[0];
    for(i=minn;i<=n;i++)
    {
        for(j=0;j<m;j++)
        {
          int tmp=i-skok[j];
          if(tmp>=0 && used[tmp])
          if(res[i]<res[tmp]+apple[i])
          {
           res[i]=apple[i]+res[tmp];
           used[i]=1;
          }
        }
    }
    for(i=0;i<=n;i++)
    if(res[i]>maxx){maxx=res[i];maxi=i;}
    printf("%lld %d\n",maxx,maxi);
return 0;
}

