#include #include #include #include #include #include #include #include #include #include #include #include #include #include #pragma warning(disable:4996) typedef long long ll; #define MIN(a, b) ((a)>(b)? (b): (a)) #define MAX(a, b) ((a)<(b)? (b): (a)) #define LINF 9223300000000000000 #define INF 2140000000 const long long MOD = 1000000007; //const long long MOD = 998244353; using namespace std; char str[200005]; void func(int N, const char* S, int* R ) { int i = 0, j = 0; while (i < N) { while (i-j >= 0 && i+j < N && S[i-j] == S[i+j]) ++j; R[i] = j; int k = 1; while (i-k >= 0 && i+k < N && k+R[i-k] < j) R[i+k] = R[i-k], ++k; i += k; j -= k; } return; } int main(int argc, char* argv[]) { int N,K,Q; scanf("%d%d%d", &N, &K, &Q); scanf("%s", str); vector ss; int i,k; for(k=0; k<3; k++) { for(i=0; i a(N*3); func(3*N, &ss[0], &a[0]); for(i=0; i=N) { r=MIN(p,(ll)N*K-1-p); printf("%lld\n", 2*r+1); } else { r=MIN(MIN(r,p),(ll)N*K-1-p); printf("%lld\n", 2*r+1); } } return 0; }