#include using namespace std; int main() { int n, w; cin >> n >> w; vector a(n); for (string &s: a) cin >> s; for (int h = 1; h <= n; h++) { vector dp(n+1, INT_MAX), go(n+1); dp[n] = 0; for (int i = n-1; i >= 0; i--) { int m = 0; for (int j = i; j < min(i+h,n); j++) { m = max(m, int(size(a[j]))+1); if (m+dp[j+1] < dp[i]) { dp[i] = m+dp[j+1], go[i] = j+1; } } } if (dp[0] > w+1) continue; vector b(h, string(w,' ')); vector c; int k = 0; for (int i = 0; i < n; i = go[i]) { int m = 0; for (int j = i; j < go[i]; j++) { m = max(m, int(size(a[j]))+1); copy(begin(a[j]), end(a[j]), begin(b[j-i])+k); } k += m; c.push_back(m-1); } cout << h << " " << size(c) << endl; for (int k: c) cout << k << " "; cout << endl; for (string s: b) cout << s << endl; break; } }