Jenya has recently acquired quite a useful tool — *k*-scissors for cutting strings. They are generally used for cutting out two non-intersecting substrings of length *k* from an arbitrary string *s* (its length should be at least 2·*k* in order to perform this operation) and concatenating them afterwards (preserving the initial order). For example, with the help of 2-scissors you can cut *ab* and *de* out of *abcde* and concatenate them into *abde*, but not *ab* and *bc* since they're intersecting.

It's a nice idea to test this tool before using it in practice. After looking through the papers, Jenya came up with two strings *s* and *t*. His question is whether it is possible to apply his scissors to string *s* such that the resulting concatenation contains *t* as a substring?
The first line contains three integers *n*, *m*, *k* (2 ≤ *m* ≤ 2·*k* ≤ *n* ≤ 5·10<sup class="upper-index">5</sup>) — length of *s*, length of *t* and the aforementioned scissors' parameter correspondingly.

The next two lines feature *s* and *t* consisting of lowercase latin letters.
In the first sample case you can cut out two substrings starting at 1 and 5. The resulting string baaaab contains aaaa as a substring.

In the second sample case the resulting string is bccb.
7 4 3
baabaab
aaaa
Yes
1 5
6 3 2
cbcbcb
bcc
Yes
2 5
7 5 3
aabbaaa
aaaaa
No
16 6 4
abcdcadbbbcacdca
dcadbc
Yes
4 10
81 5 3
acbbcccbcbcbbbabaabbbcbacbaabbabaacccaaaaaabbbaacbaabcbcacbbacacbaaaaccbbcacbbcba
cbbab
Yes
1 30
12 3 4
dbcbabbbdcbb
bba
No
18 3 4
dcdbdbadddbddbbccc
bba
Yes
1 6
7 3 3
aaabbaa
aaa
Yes
1 4
8 3 4
bcbaaaax
bcb
Yes
1 5
30 17 9
dbcdcdcdbddaabcbdcdbdacaddcdbc
bcdcdcdbdabcbdcdb
Yes
2 13
25 7 12
bbabaabbabbabbbabbabaabba
babaabb
Yes
2 14
28 14 9
deaeeabadeaecbebddaeaedebbdd
badeaecbeaeaed
Yes
7 19
12 8 4
aaaaabbbaaab
aaaaaaaa
No
2 2 1
ab
aa
No
2 2 1
aa
aa
Yes
1 2
4 3 2
aaba
aaa
No
4 2 2
acba
aa
No
27 13 12
baababbabbbbaaaabaabbbbaaaa
baababbabbbba
Yes
1 13
27 11 9
bbaabababaaaabbbbabaababaab
abababaabab
Yes
2 17
7 3 2
aabcbaa
aaa
Yes
1 6
MOD = 10**9 + 7
base = 32107
N = 10**5 + 10
pw = [0] * N
ml = [0] * N
mr = [0] * N

class Hash:
    def __init__(self):
        self.a = [0] * N

    def JS(self, s):
        len_s = len(s)
        for i in range(1, len_s + 1):
            self.a[i] = (self.a[i - 1] * base % MOD + ord(s[i - 1]) - ord('a')) % MOD

    def Get(self, l, r):
        l -= 1
        if l >= 0:
            return (self.a[r] - self.a[l] * pw[r - l] % MOD + MOD) % MOD
        else:
            return self.a[r]


def main():
    n, m, k = map(int, input().split())
    s = input()
    t = input()
    pw[0] = 1
    for i in range(1, n + 1):
        pw[i] = pw[i - 1] * base % MOD
    S, T = Hash(), Hash()
    S.JS(s)
    T.JS(t)
    pos = k
    for i in range(1, m + 1):
        ml[i] = n + 1
    for i in range(1, min(m, k) + 1):
        while pos <= n and S.Get(pos - i + 1, pos) != T.Get(1, i):
            pos += 1
        if S.Get(k - i + 1, k) == T.Get(1, i):
            pos = k
        ml[i] = pos
    pos = n - k + 1
    for i in range(1, min(m, k) + 1):
        while pos > 0 and S.Get(pos, pos + i - 1) != T.Get(m - i + 1, m):
            pos -= 1
        if S.Get(n - k + 1, n - k + i) == T.Get(m - i + 1, m):
            pos = n - k + 1
        mr[m - i + 1] = pos
    for i in range(1, m):
        if ml[i] < mr[i + 1] and ml[i] < n + 1 and mr[i + 1] > 0:
            print("Yes")
            return
    for i in range(1, n - m + 2):
        if S.Get(i, i + m - 1) == T.Get(1, m):
            print("Yes")
            return
    print("No")


if __name__ == "__main__":
    main()