/*
TASK:skok
LANG:C++
*/

#include <iostream>

using namespace std;

int cmp(const void *a,const void *b)
{
	return *(int*)a-*(int*)b;
}

int n,m,v[200005],mx[200005],jp[1<<8],i,cur=-6,cmax=-5,pos,j;
int main()
{
	cin>>n>>m;
	for(i=0;i<m;i++)
		cin>>jp[i];
	qsort(jp,m,sizeof(jp[0]),cmp);
//	for(i=0;i<m;i++)
//		cout<<jp[i]<<" ";
	for(i=0;i<=n;i++)
		cin>>v[i];
	mx[0]=v[0];
	for(i=jp[0];i<=n;i++)
	{
		cur=-6;
		for(j=0;j<m;j++)
		{
			if(i-jp[j]<0)
				break;
			if(cur==cmax)
				break;
			if(mx[i-jp[j]]>cur)
				cur=mx[i-jp[j]];
		}
		cur+=v[i];
		mx[i]=cur;
		if(cur>cmax)
		{
			cmax=cur;
			pos=i;
//			cout<<cmax<<" "<<i<<"\n";
		}
	}
//	for(i=0;i<=n;i++)
//		cout<<mx[i]<<" ";
	cout<<cmax<<" "<<pos<<"\n";
	return 0;
}
