You are given the string s of length n and the numbers p, q. Split the string s to pieces of length p and q.
For example, the string "Hello" for p = 2, q = 3 can be split to the two strings "Hel" and "lo" or to the two strings "He" and "llo".
Note it is allowed to split the string s to the strings only of length p or to the strings only of length q (see the second sample test).
The first line contains three positive integers n, p, q (1 ≤ p, q ≤ n ≤ 100).
The second line contains the string s consists of lowercase and uppercase latin letters and digits.
If it's impossible to split the string s to the strings of length p and q print the only number "-1".
Otherwise in the first line print integer k — the number of strings in partition of s.
Each of the next k lines should contain the strings in partition. Each string should be of the length p or q. The string should be in order of their appearing in string s — from left to right.
If there are several solutions print any of them.
5 2 3 Hello
2 He llo
10 9 5 Codeforces
2 Codef orces
6 4 5 Privet
-1
8 1 1 abacabac
8 a b a c a b a c
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
char s[105], put[205];
int c[105], vis[105], u;
int n, p, q;
int dfs(int now, int use, int o)
{
//printf("%d\n", vis[now + use]);
if(vis[now + use] == use) return 0;//同样的方法已经试过
if(now + use > n) return 0;
c[o] = use;
vis[now + use] = use;
if(now + use == n){
u = o;
return 1;
}
if(dfs(now + use, p, o + 1)) return 1;
if(dfs(now + use, q, o + 1)) return 1;
return 0;
}
int main()
{
int i, len, start, have, p1, now, j;
scanf("%d %d %d", &n, &p, &q);
scanf("%s", s);
len = strlen(s);
p1 = now = 0;
if(dfs(0, q, 0)==0&&dfs(0, p, 0)==0){
printf("-1\n");
}else{
//printf("%d\n", u);
i = 0;
while(i <= u)
{
start = c[i++];
for(j = now;j < now + start;j++)
put[p1++] = s[j];
put[p1++] = '\n';
now = now + start;
//printf("%d\n", now);
}
printf("%d\n", u + 1);
printf("%s", put);
}
}