#include long A[91]; char B[91], C[91]; int p[91+1], pok[91+1], vnor, n, k, l; long summin, sum; void f(int od) { int i, j = 0; vnor++; for (i = od; (i < od + l-k+1) && (i <= l); i++) { j++; sum += A[i]*(long)j; p[vnor] = i; if ( vnor < k && i <= l) f(i+1); } if ( vnor == k ) { if ( summin > sum ) { summin = sum; for (i = 1; i <= k; i++) pok[i] = p[i]; } } j = 0; for (i = od; (i < od + l-k+1) && ( i <= l); i++) { j++; sum -= A[i]*(long)j; } vnor--; } int main() { int i,j,m; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d%d\n", &k, &l); for (j = 1; j <= k; j++) scanf("%c", &B[j]); scanf("\n"); for (j = 1; j <= l; j++) scanf("%c", &C[j]); for (j = 1; j <= l; j++) scanf("%ld", &A[j]); for (j = 1; j <=l; j++) printf("%c", B[j]);printf("\n"); for (j = 1; j <=l; j++) printf("%c", C[j]);printf("\n"); for (j = 1; j <=l; j++) printf("%ld", A[j]);printf("\n"); summin = 2147483647L; sum = 0L; vnor = 0; pok[0] = 0; f(1); printf("%ld\n", summin); printf("Keypad #%d:\n", n); for (j = 1; j <= k; j++) { printf("%c: ", B[j]); for (m = pok[j-1]+1; m <= pok[j]; m++) printf("%c", C[m]); printf("\n"); } printf("\n"); } return 0; }