#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; typedef long long int ll; typedef pair P; struct SuffixArray{ int n, k; vector rk, tmp, sa; string s; SuffixArray(string s):n(s.size()), s(s), rk(s.size()+1), tmp(s.size()+1), sa(s.size()+1){ auto compare_sa=[&](int i, int j){ if(rk[i]!=rk[j]) return rk[i] z_algorithm(const string &s) { vector< int > prefix(s.size()); for(int i = 1, j = 0; i < s.size(); i++) { if(i + prefix[i - j] < j + prefix[j]) { prefix[i] = prefix[i - j]; } else { int k = max(0, j + prefix[j] - i); while(i + k < s.size() && s[k] == s[i + k]) ++k; prefix[i] = k; j = i; } } prefix[0] = (int) s.size(); return prefix; } int main() { int n, q; ll m; cin>>n>>m>>q; string s; cin>>s; if(m==1){ SuffixArray sa(s); while(q--){ ll k; cin>>k; cout<>k; int j=lower_bound(x, x+2*n+1, k)-x; ll ans; if(sa[j]>=n){ ans=sa[j]-n+n*(m-1)+1; }else{ ans=n*(x[j]-k)+1+sa[j]; } cout<