/*
TASK:skok
LANG:C++
*/
#include <iostream>
using namespace std;
int a[200000]; // lane
int b[100];    // types of jumps
int n;         // number of tiles
int m;         // number of types of jumps
unsigned long long int sum; // tekushta
unsigned long long int best[2]; // tekushta

void write(int tile)
{
     if(sum==best[0])
       if(tile<best[1])
          best[1]=tile;
                                   
     if(sum>best[0])
     {
       best[0]=sum;
       best[1]=tile;
     }
}

void jump(int tile)
{        
     //  cout << tile << endl;
        for(int i=0; i<m; i++)
        {
            sum+=a[tile];
            if((tile+b[i])>=n)
            {
               write(tile);
               sum-=a[tile];
               return;
            }
            jump(tile+b[i]);
            sum-=a[tile];
        }
}

int main()
{
    int i;
    cin >> n >> m;
    for(i=0; i<m; i++) cin >> b[i];
    for(i=0; i<=n; i++) cin >> a[i];
    
    jump(0);
    
    cout << best[0] << " " << best[1] << endl;
    return 0;
}
         
