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
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 50;
const int M = 5e3 + 50;
int n, m, u, v, k, l, r, t, c;
int cnt, cnt1, cnt2, ans;
int mn = INT_MAX;
int mx = INT_MIN;
const int fx[] = {-1, -1, -1, 0, 0, 1, 1, 1};
const int fy[] = {-1, 0, 1, -1, 1, -1, 0, 1};
const int dx[] = {0, 1, 0, -1};
const int dy[] = {1, 0, -1, 0};
int visited[N];
const int MOD = (1ll << 30);
bool cmp(pair<int, int> a, pair<int, int> b) {
  return abs(a.first) > abs(b.first);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  ios_base::sync_with_stdio(0);
  int p, q;
  cin >> n >> p >> q;
  string second;
  cin >> second;
  if (n < p and n < q) {
    cout << -1;
    return 0;
  } else if (n < p and n % q != 0) {
    cout << -1;
    return 0;
  } else if (n < q and n % p != 0) {
    cout << -1;
    return 0;
  }
  if (n % p == 0) {
    cout << n / p << "\n";
    k = 0;
    for (int i = 0; i < n; i++) {
      k++;
      cout << second[i];
      if (k == p) {
        k = 0;
        cout << "\n";
      }
    }
    return 0;
  } else if (n % q == 0) {
    cout << n / q << "\n";
    k = 0;
    for (int i = 0; i < n; i++) {
      k++;
      cout << second[i];
      if (k == q) {
        k = 0;
        cout << "\n";
      }
    }
    return 0;
  }
  k = 0;
  int a, b;
  for (int i = 1; i <= 200; i++) {
    for (int j = 1; j <= 200; j++) {
      if (i * p + j * q == n) {
        a = i;
        b = j;
        ans = 1;
        break;
      }
    }
    if (ans == 1) {
      break;
    }
  }
  if (ans == 0) {
    cout << -1;
    return 0;
  }
  cout << a + b << "\n";
  for (int i = 0; i < (a * p); i++) {
    k++;
    cout << second[i];
    if (k == p) {
      k = 0;
      cout << "\n";
    }
  }
  k = 0;
  for (int i = (a * p); i < n; i++) {
    k++;
    cout << second[i];
    if (k == q) {
      k = 0;
      cout << "\n";
    }
  }
}
