/*
TASK:skok
LANG:C
*/

#include<stdio.h>

long long int brmax;
int plo6tat[200001] = {0};
int skok[201] = {0};
int n, m;
int krainapozicia;

void rec(int skok4e, int pozicia, long long int br);

int main()
{
        int i;

        scanf("%d %d", &n, &m);

        for(i = 0; i < m; i++) scanf("%d", &skok[i]);
        for(i = 0; i <= n; i++) scanf("%d", &plo6tat[i]);

        for(i = 0; i < m; i++)
        {
                rec(skok[i], 0, plo6tat[0]);
        }

        printf("%lld %d\n", brmax, krainapozicia);

        return 0;
}

void rec(int skok4e, int pozicia, long long int br){

        int i;

        pozicia = pozicia + skok4e;
     
        if(pozicia > n)
        {
                if(br > brmax) {brmax = br; krainapozicia = pozicia - skok4e;}
                if(br == brmax && krainapozicia > pozicia - skok4e) krainapozicia = pozicia-skok4e;
                return;
        }

        for(i = 0; i < m; i++)
        {
                rec(skok[i], pozicia, br+plo6tat[pozicia]);
        }
}









