#include <stdio.h>
#include <memory.h>

#ifdef WIN32
#define LONG	"%I64d"
#else
#define LONG 	"%lld"
#endif

int cnt[11];
long long cache[1001][11];

long long doCase(int l, int n)
{
//	if(cache[l][n]>=0) return cache[l][n];
		
	if(l==0 && n==0) return 1ll;
	if(l==0 || n==0) return 0ll;
		
	long long subtotal = 0;
	
	for(int i=3; i<=10; i++)
		if(i<=l)
			subtotal += cnt[i] * doCase(l-i, n-1);			
	
    return cache[l][n] = subtotal;
}

void run()
{
	int m, n, q;
	
	memset(cnt, 0, sizeof(cnt));
	memset(cache, 0xff, sizeof(cache));		
	
	scanf("%d %d %d", &m, &n, &q);
	
	for(int i=0; i<m; i++)
	{
		char buf[16];
		scanf("%s", &buf);
		cnt[strlen(buf)]++;
	}
	
	for(int i=0; i<q; i++)
	{
		int l;
		scanf("%d", &l);

		printf(LONG"\n", doCase(l, n));
	}	
}

int main()
{
	int runs;
	scanf("%d", &runs);
	
	while(runs--)
		run();
		
	return 0;
}
