/*
TASK:skok
LANG:C++
*/
#include<cstdio>
#define MAXN 200001
#define MAXM 200
#define MAX 200001
using namespace std;

typedef struct res{
   int s,fp;       
};

int N,M,A[MAXN],steps[MAXM],sp=0;
res sums[MAX];

void f(int i,int tmp_sum){
        sums[sp].s=tmp_sum;
        sums[sp++].fp=i;
     for(int j=0;j<M;j++){
      if(i+steps[j]<=N){
       f(i+steps[j],tmp_sum+A[i+steps[j]]);
      }
     }
}

int main(){
    int i;
    res max_sum;
    max_sum.s=0;
    max_sum.fp=0;
    scanf("%d%d\n",&N,&M);
    for(i=0;i<M;i++) scanf("%d",&steps[i]);
    for(i=0;i<=N;i++) scanf("%d",&A[i]);
    f(0,A[0]);
    for(i=0;i<sp;i++)
      if(sums[i].s>max_sum.s){
        max_sum.s=sums[i].s;
        max_sum.fp=sums[i].fp;
      }
    printf("%d %d",max_sum.s,max_sum.fp);
    return 0;   
}
