func_code_string: #include <bits/stdc++.h>   using namespace std;   using ll = long long;   using vi = vector<int>;   using pi = pair<int, int>;   template <class T>   bool ckmin(T& a, const T& b) {     return b < a ? a = b, 1 : 0;   }   template <class T>   bool ckmax(T& a, const T& b) {     return b > a ? a = b, 1 : 0;   }   void setIO(string name =   ) {     cin.tie(0)->sync_with_stdio(0);     if (int((name).size())) {       freopen((name +  .in ).c_str(),  r , stdin);       freopen((name +  .out ).c_str(),  w , stdout);     }   }   const string yes =  YES n , no =  NO n ;   const int MOD = 1e9 + 7;   const int MX = 2e2 + 10;   const ll INF = 1e18;   const int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};   const char dc[4] = { D ,  R ,  U ,  L };   string S;   int K, A, B;   bool dp[MX][MX];   vi ans;   int main() {     setIO();     cin >> K >> A >> B >> S;     dp[0][0] = true;     for (int i = 1; i <= K; ++i)       for (int k = 1; k < MX; ++k)         for (int j = A; j <= B; ++j)           if (k - j >= 0) dp[i][k] |= dp[i - 1][k - j];     if (dp[K][int((S).size())] == false) return cout <<  No solution , 0;     int num = K, sub = int((S).size());     ans.push_back(sub);     while (num && sub) {       for (int i = A; i <= B; ++i) {         if (sub - i >= 0 && dp[num - 1][sub - i]) {           --num;           ans.push_back(sub - i);           sub -= i;           break;         }       }     }     reverse(begin(ans), end(ans));     for (int i = 0; i < int((ans).size()) - 1; ++i) {       for (int j = ans[i]; j < ans[i + 1]; ++j) {         cout << S[j];       }       cout <<   n ;     }     return 0;   }   