func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<int> magic(string t, string s, int sk) {     int tl = t.length();     string x = t +  @  + s;     int n = x.length();     vector<int> pi(n), r(sk + 1, -1);     r[0] = sk - 1;     for (int i = 1, k = 0; i < n; ++i) {       while (k && x[i] != x[k]) k = pi[k - 1];       k += x[i] == x[k];       pi[i] = k;       if (i >= tl + sk) {         while (k > sk) k = pi[k - 1];         for (int j = k; r[j] == -1; j = pi[j - 1]) r[j] = i - tl - 1;       }     }     return r;   }   vector<int> pi_function(const string &s) {     int n = s.length();     vector<int> pi(n);     for (int i = 1, k = 0; i < n; ++i) {       while (k && s[i] != s[k]) k = pi[k - 1];       k += s[i] == s[k];       pi[i] = k;     }     return pi;   }   vector<int> kmp(const string &text, const string &patt) {     int n = text.length(), m = patt.length();     vector<int> ans, pi = pi_function(patt);     for (int i = 0, k = 0; i < n; ++i) {       while (k && text[i] != patt[k]) k = pi[k - 1];       k += text[i] == patt[k];       if (k == m) {         ans.push_back(i - k + 1);         k = pi[k - 1];       }     }     return ans;   }   int main() {     ios_base::sync_with_stdio(0), cin.tie(0);     int n, m, k;     string s, t;     cin >> n >> m >> k >> s >> t;     if (m <= k) {       auto p = kmp(s, t);       for (auto i : p) {         int l = max(k, i + m);         if (l + k <= n) {           cout <<  Yes n  << l - k + 1 <<     << l + 1 <<   n ;           return 0;         }         int r = min(i + 1, n - k + 1);         if (r - 1 >= k) {           cout <<  Yes n  << r - k <<     << r <<   n ;           return 0;         }       }     }     auto l = magic(t, s, k);     reverse(t.begin(), t.end());     reverse(s.begin(), s.end());     auto r = magic(t, s, k);     for (auto &i : r)       if (i != -1) i = n - 1 - i;     for (int i = 0; i <= m; ++i)       if (i <= k && m - i <= k && l[i] != -1 && r[m - i] != -1 &&           l[i] < r[m - i]) {         cout <<  Yes n  << l[i] - k + 2 <<     << r[m - i] + 1 <<   n ;         return 0;       }     cout <<  No n ;     return 0;   }   