text: You are allowed not to print such lines.Examples Input 9 4 12 this is a sample text for croc final round Output this is a sample text for croc final round Input 9 1 9 this is a sample text for croc final round Output this is a Input 6 2 3 croc a a a croc a Output a a a Input 2 2 5 first second Output first # Solution #include <bits/stdc++.h> using namespace std; const int N = 1000100, L = 5000500, BufL = 220; char ch[N + L] = {}, buf[BufL] = {}; int n, r, c, l, a[N] = {}, p[N] = {}, f[N] = {}, g[N] = {}; int main() { gets(buf + 1); sscanf(buf + 1, "%d%d%d", &n, &r, &c); gets(ch + 1); l = strlen(ch + 1); for (int i = 1, tot = 0; i <= l; ++i) if (isalpha(ch[i])) { p[++tot] = i; while (i <= l && isalpha(ch[i])) ++a[tot], ++i; } for (int i = 1; i <= n + 1; ++i) g[i] = i; for (int i = 1, t = 0, s = -1; i <= n; s -= a[i++] + 1) { while (t <= n && s <= c) s += a[++t] + 1; f[i] = t; } f[n + 1] = n + 1; for (; r; r >>= 1) { if (r & 1) for (int i = 1; i <= n; ++i) g[i] = f[g[i]]; for (int i = 1; i <= n; ++i) f[i] = f[f[i]]; } int ans = 0; for (int i = 1; i <= n; ++i) if (g[i] - i > g[ans] - ans) ans = i; for (int i = ans, s = c; i < g[ans]; ++i) { if (s + a[i] + 1 <= c) { s += a[i] + 1; putchar(' '); } else { if (i > ans) puts(""); s = a[i]; } for (int j = p[i]; j < p[i] + a[i]; ++j) putchar(ch[j]); } return 0; }