// http://online-judge.uva.es/p/v104/10440.html
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <string.h>
#define MAX 1441
int arv[MAX], f[MAX], road[MAX];
int main(void)
{
int i, j, k, n, t, m, cc, ntrans;
scanf("%d", &cc);
while (cc--) {
scanf("%d %d %d", &n, &t, &m);
if (m == 0) {
printf("0 0\n");
continue;
}
for (i = 1; i <= m; i++) scanf("%d", &arv[i]);
memset(f, 0, sizeof(f));
memset(road, 0, sizeof(road));
f[0] = -t;
arv[0] = 0;
for (i = 1; i <= m; i++) {
// 第i辆车可以选择n种方案
f[i] = INT_MAX;
for (j = i - n + 1; j <= i; j++) {
// choice car from j ... i inclusive...
if (j < 1) continue;
if (j == 1)
k = arv[i] + t;
else {
if ((k = f[j - 1] + t) < arv[i])
k = arv[i];
k += t;
}
if (f[i] > k) {
f[i] = k;
road[i] = j;
}
}
}
ntrans = 0;
i = m;
while (i > 0) {
i = road[i] - 1;
ntrans++;
}
printf("%d %d\n", f[m], ntrans);
}
return 0;
}
