/*
TASK:skok
LANG:C++
*/
# include <stdio.h>
# include <stdlib.h>
# define MAXMOVE (1<<8)
# define MAXN (1<<18)

int n,m;
int move[MAXMOVE],data[MAXN];
int ans;

int cmp(const void *e1, const void *e2) {
    return (*((int*)e1))-(*((int*)e2));
}

void read() {
    int a;
    scanf("%d %d", &n, &m);
    for(int i = 0; i < m; i++) {
        scanf("%d", &move[i]);       
    }
    qsort(move,m,sizeof(int),cmp);
    //for(int p = 0; p < m; p++) printf("%d ", move[p]);
    //printf("\n"); 
    scanf("%d", &a);
    ans = 0;
    data[0] = a;
    
    for(int i = 1; i <= n; i++) {
        scanf("%d", &a);
        data[i] = -1;
        for(int j = 0; j < m; j++) {
             if(i-move[j] < 0) break;
             if(data[i] < data[i-move[j]]+a && data[i-move[j]] != -1) data[i] = data[i-move[j]]+a;            
        }
        if(data[i] > data[ans]) ans = i;    
               
    }     
}

void print() {
    printf("%d %d\n", data[ans],ans);     
    //for(int i = 0; i <= n; i++) printf("%d ", data[i]);
    //printf("\n");
}

int main() {
    read(); 
    print();
    return 0;   
}
