/*
TASK: skok
LANG: C++
*/
#include <iostream.h>
#define DEBUG 0
#define MAXM 256
#define MAXN 201002
using namespace std;
int N, M, i, j;
int jumps[MAXM];
int areas[MAXN];
int sum[MAXN];
int maximum, where;
void modify(int index, int thesum)
{
	int last = sum[index];
	int candidate = thesum + areas[index];
	if (candidate > last) sum[index] = candidate;
}
int main()
{
	cin >> N >> M;
	for (i = 1; i <= M; i++) cin >> jumps[i];
	for (i = 0; i <= N; i++) cin >> areas[i];
	sum[0] = areas[0];
	for (i = 0; i < N; i++)
		if (sum[i] > 0)
			for (j = 1; j <= M; j++) modify(i+jumps[j], sum[i]);
	for (i = 0; i < N; i++)
		if (sum[i] > maximum)
		{
			maximum = sum[i];
			where = i;
		}
	cout << maximum << " " << where << endl;
	if (DEBUG) system("pause");
	return 0;
}
