(CodeForces

来源:互联网 发布:熊猫智能采集软件 编辑:程序博客网 时间:2024/05/01 14:53

(CodeForces - 612A)The Text Splitting

time limit per test:1 second
memory limit per test:256 megabytes
input:standard input
output:standard output

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).

Input

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.

Output

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.

Examples

Input

5 2 3
Hello

Output

2
He
llo

Input

10 9 5
Codeforces

Output

2
Codef
orces

Input

6 4 5
Privet

Output

-1

Input

8 1 1
abacabac

Output

8
a
b
a
c
a
b
a
c

题目大意:对于一个有n个字符的字符串,是否可以划分成若干个由p个字符或q个字符组成。如果可以输出一组可行解。(注意可以只有p或q组成)

思路:直接去判断是否有i*p+j*q==n,如果有就可行,输出。

#include<iostream>#include<string>using namespace std;const int maxn=105;string s,ans[maxn];int main(){    int n;    while(cin>>n)    {        int p,q;        cin>>p>>q>>s;        bool flag=false;        int tot=0;        for(int i=0;i*p<=n;i++)        {            for(int j=0;j*q<=n;j++)                if(i*p+j*q==n)                {                    flag=true;                          for(int k=0;k<i*p;k+=p)                        ans[tot++]=s.substr(k,p);                    for(int k=i*p;k<n;k+=q)                        ans[tot++]=s.substr(k,q);                    break;                }            if(flag) break;        }         if(flag)         {            cout<<tot<<endl;            for(int i=0;i<tot;i++)                cout<<ans[i]<<endl;        }        else cout<<-1<<endl;    }    return 0;}