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

long int n;
int qbalki[200001], pozvskokove[200], m;
long int sum=0, nai=0, posl=200002;

int search(int nomer)
{
	int i;
	sum+=qbalki[nomer];
	if (nomer+pozvskokove[0]>n)
	{
		if(sum>=nai) 
		{
			nai=sum;
		}
	}
	else
	{
		for(i=0;i<m;i++) search(nomer+pozvskokove[i]);
	}
	sum-=qbalki[nomer];
	return 0;
}

int pssearch(int nomer)
{
	int i;
	sum+=qbalki[nomer];
	if(sum==nai) if(posl>nomer) posl=nomer;
	for(i=0;i<m;i++) if(nomer+pozvskokove[i]<=n) pssearch(nomer+pozvskokove[i]);
	sum-=qbalki[nomer];
	return 0;
}

int main()
{
 	long int i;
 	long int max=0;
	
	cin>>n>>m;
 	for(i=0;i<m;i++) cin>>pozvskokove[i];
 	for(i=0;i<n+1;i++) cin>>qbalki[i];
	
	sort(pozvskokove, pozvskokove + m);
	
	search(0);
	pssearch(0);
	
	cout<<nai<<' '<<posl;
	return 0;
}
