/*
TASK:skok
LANG:C++     
*/
#include <stdio.h>
int jumps[1024] = {0};
int row[1024] = {0};
int sol[1024] = {0};
int main()
{
  int n,m,i,j,o;
  scanf("%d %d",&n,&m);
  for(i = 0;i < m;i++)
  {
        scanf("%d",&jumps[i]);
  }
  for(i = 0;i <= n;i++)
  {
        scanf("%d",&row[i]);
  }//OK
  sol[0] = row[0]+1;
  for(i = 1;i <= n;i++)
  {
        for(j = 0;j < m;j++)
        {
              if((i - jumps[j]) >= 0)
              {
                    /*printf("Sol:");
                    for(o = 0;o <= n;o++)
                    {
                            printf("%d ",sol[o]);
                    }
                    printf("\nROW");
                    for(o = 0;o <= n;o++)
                    {
                            printf("%d ",row[o]);
                    }
                    system("PAUSE");   */                      
                    if((sol[i] < row[i] + sol[i - jumps[j]]) && (sol[i - jumps[j]]))
                    {
                        sol[i] = row[i] + sol[i - jumps[j]];
                    }
              }
        }
  }
  //Momo spec za tebe: 6to imam s 10 to4ki pove4e ... ami ako redicata zapo4va s 0 ??????
  int max = 0;
  int maxi;
  for(i = 0;i <= n;i++)
  {
        if(max < sol[i])
        {
               max = sol[i];
               maxi = i;
        }
  }
  printf("%d %d",max-1,maxi);
  return 0;
}
