/*
TASK: skok
LANG: C++
*/
#include <iostream>
#include <vector>
using namespace std;
vector <long long> best(200001, -1);
vector <int> app(200000);
vector <int> jumps(200);
int N, M;

void jump(int pos, long long apples)
{    
     if (pos > N) return;
     if (best[pos] >= apples) return;
     best[pos] = apples;
     
     for (int i=0;i < M;i++)
      jump(pos + jumps[i], apples + app[pos + jumps[i]]);
}         
         
int main()
{
    int i;
    cin >> N >> M;
    for (i=0;i < M;i++)
     cin >> jumps[i];
    
    for (i=0;i <= N;i++) 
     cin >> app[i];
     
    jump(0, app[0]);
    
    int k = 0;
    for (i=1;i <= N;i++)
     if (best[i] > best[k])
      k = i;
    
    cout << best[k] << " " << k << endl;
    return 0;
}
