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

long long F[200001];
int jump[200];
int apples[200001]; 
int main()
{
    int n, m;
    //ifstream fin("skok.in");
    cin >> n >> m;
    for (int i = 0; i < m; i++)
     cin >> jump[i];
    
    sort(jump, jump + m);
    
    for (int i = 0; i <= n; i++)
     cin >> apples[i];
    
    F[0] = apples[0];
    long long maxapples = F[0];
    int position = 0;
    for (int i = 1; i <= n; i++) 
    {
        for (int j = 0; j < m && i - jump[j] >= 0; j++)
         F[i] = max(F[i], F[i - jump[j]] + apples[i]);
        if (F[i] > maxapples) {maxapples = F[i]; position = i;} 
    }
    
    cout << maxapples << " " << position << endl;
    
    //system("pause");
    return 0;
}  
    
