/*
TASK:skok
LANG:C++
*/
#include <iostream>
#include <vector>
#include <time.h>

using namespace std;
int all[200010];
char begin[200];
int temp;
long m,n,j,i;
long long maxx,sum=0,maxn=1000000;
clock_t start;

void rec(long t)
{long i,te;
 
 sum+=all[t]; 
 //cout<<t<<" "<<sum<<" "<<maxx<<" "<<all[t]<<endl;
 
 if (sum>maxx) {maxx=sum;maxn=t;}
     else if (sum==maxx)if (maxn>t) maxn=t;
 if (difftime(clock(),start)>0.999) {cout<<maxx<<" "<<maxn<<endl;exit(0);}
     
 for(i=0;i<m;i++) 
  if (begin[i]!=0)
                   {te=begin[i];
                    begin[i]=0;
                    if ((t+te)<=n)rec(t+te);
                    begin[i]=te;
                    }
 sum-=all[t]; 
 return;
}

int main()
{
start = clock();  
cin>>n>>m;
for (i=0;i<200;i++){begin[i]=0;}
for (i=0;i<m;i++){cin>>j;begin[i]=j;}
for (i=0;i<n+1;i++) cin>>all[i];
maxx=all[0];
maxn=0;
long cur=0;
maxx=all[0];
for (i=0;i<m;i++) {maxx+=all[i];
                     cur+=begin[i];
                     if (cur>n){cur-=begin[i];
                                maxx-=all[i];              
                                } 
                     }
maxn=cur;
//cout<<maxx<<" "<<maxn<<endl;
sum=0;
rec(0);
cout<<maxx<<" "<<maxn<<endl;
//system("pause");
    return 0;
}
