// Aizu 2218: K Poker
// 2017.9.23 bal4u@uu
// ?????????????????????????????\????????????????????????????????????????????????

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct { int d, s; } T;	// ??????????????± d:?????° s:?????????
T card[5];
int base[4][14];	// ?????¬???????????±
int rate[9];		// ??????????????±

int dcnt[14];		// ????????°????????????????????????
int scnt[4];		// ????????????????????????????????????
int tr['Z'];		// ????????¨

int cmp(T *a, T *b) { return a->d - b->d; }

int calc()
{
	int i, f, ans = 0;

	// ?????¬???
	for (i = 0; i < 5; i++)	ans += base[card[i].s][card[i].d];

	// ????????????????????¬????????????????????\
	if (card[0].d == 1) {
		for (i = 1; ; i++) {
			if (i == 5) return ans * rate[8];
			if (card[i].s != card[0].s || card[i].d != 9+i) break;
		}
	}

	// ????????¬????????????????????\
//	if (card[0].d != 1) {
		for (i = 1; ; i++) {
			if (i == 5) return ans * rate[7];
			if (card[i].s != card[0].s || card[i].d != card[0].d+i) break;
		}
//	}

	// ??????????????????
	for (i = 1; i <= 13; i++) if (dcnt[i] == 4) return ans * rate[6];

	// ???????????????
	f = 0;
	for (i = 1; i <= 13; i++) {
		if      (dcnt[i] == 3) f |= 1;
		else if (dcnt[i] == 2) f |= 2;
	}
	if (f == 3) return ans * rate[5];

	// ??????????????\
	for (i = 0; i < 4; i++) if (scnt[i] == 5) return ans * rate[4];

	// ????????¬??????
	if (card[0].d == 1) {
		for (i = 1; ; i++) {
			if (i == 5) return ans * rate[3];
			if (card[i].d != 9+i) break;
		}
	}
//	else {
		for (i = 1; ; i++) {
			if (i == 5) return ans * rate[3];
			if (card[i].d != card[0].d+i) break;
		}
//	}

	// ??????????????????
	for (i = 1; i <= 13; i++) if (dcnt[i] == 3) return ans * rate[2];

	// ???????????¢ or ???????????¢
	f = 0;
	for (i = 1; i <= 13; i++) if (dcnt[i] == 2) f++;
	if (f == 2) return ans * rate[1];
	if (f == 1) return ans * rate[0];

	// ??????
	return 0;
}


int main()
{
	int n, i, j;
	char s[3];
	int cno = 0;

	tr['S'] = 0, tr['C'] = 1,  tr['H'] = 2,  tr['D'] = 3;
	for (i = 2; i <= 9; i++) tr[i+'0'] = i;
	tr['A'] = 1, tr['T'] = 10, tr['J'] = 11, tr['Q'] = 12, tr['K'] = 13;

	while (scanf("%d", &n) == 1) {
		if (cno++) putchar('\n');		// ???????????±??????????????????

		for (i = 0; i < 4; i++) for (j = 0; j < 13; j++) scanf("%d", &base[i][j+1]);
		for (i = 0; i < 9; i++) scanf("%d", rate+i);
		while (n-- > 0) {
			for (i = 0; i < 5; i++) {	// ??????????????±
				scanf("%s", s); 
				card[i].d = tr[s[0]], card[i].s = tr[s[1]];
			}
			for (i = 0; i < 4; i++) qsort(card, 5, sizeof(T), cmp);  // ?????°??§???????????????
			memset(dcnt, 0, sizeof(dcnt)), memset(scnt, 0, sizeof(scnt));
			for (i = 0; i < 5; i++) {
				dcnt[card[i].d]++;		// ???????????°????????°???????¨?
				scnt[card[i].s]++;		// ???????????????????????°???????¨?
			}
			printf("%d\n", calc());
		}
	}
	return 0;
}