#include #include #include #include int n, k, l; int cnt[105]; int dp[105][105]; char ch[105]; void ct() { for (int i = 0; ch[i] != '\0'; ++i) { for (int j = 0; i - j >= 0 && i + j < strlen(ch); j++) { if (ch[i - j] == ch[i + j]) { cnt[j*2 + 1] ++; } else { break; } } for (int j = i, k = i + 1; j >= 0 && k < strlen(ch); j--, k++) { if (ch[j] == ch[k]) { cnt[i - j + 1+ k - i] ++; } else { break; } } } } int main() { int t; scanf("%d", &t); while (t--) { memset(cnt, 0, sizeof(cnt)); memset(dp, 0, sizeof(dp)); scanf("%d%d%d", &n, &k, &l); for (int i = 0; i < n; ++i) { scanf("%s", ch); ct(); } dp[0][0] = 1; for (int i = 1; i <= l; ++i) { if (cnt[i] == 0) continue; for (int j = l - i; j >= 0; j--) for (int s = 0; s < k; s++) { if (dp[j][s] == 0) continue; for (int f = 1; f <= cnt[i] && f + s <= k; f++) { if (f * i + j > l) break; dp[f*i + j][f + s] = 1; } } } if (dp[l][k] == 1) printf("True\n"); else printf("False\n"); } return 0; }