// عَجَبًا لأَمْرِ المُؤْمِنِ، إنَّ أمْرَهُ كُلَّهُ خَيْرٌ
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
const char el = '\n';

const int N = 2, M = 998244353;

void ama_aan() {
	int n, m, k;
	cin >> n >> m >> k;
	string a, b, s;
	cin >> a >> b;
	s = b + "#" + a;
	int p[s.size()]{};
	for (int i = 1, j = 0; i < s.size(); i++) {
		while (j && s[j] != s[i]) j = p[j - 1];
		p[i] = j += s[j] == s[i];
	}
	int lst = b.size() + 1;
	for (int i = b.size() + 1; i < s.size(); i++) {
		if (p[i] == b.size()) {
			int j = i - b.size() + 1;
			if (j - lst <= k) {
				lst = i;
			}
		}
	}
	cout << (lst == s.size() - 1 ? "YES" : "NO");
}

int main() {
	cin.tie(0)->sync_with_stdio(0);
	cout << fixed << setprecision(10);
#if Mosaab
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif
	int t = 1;
	cin >> t;
	while (t--) ama_aan(), cout << el;
}
