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
import random
import re
import string
def splitBy(strg,div,num):	
	inter = list()
	pointer = 0	
	for i in range(0,div):
		del inter[:]
		for it in range(pointer,num +pointer):
			inter.append(strg[it])
		pointer += num
		print("".join(inter))

def verifyLinearC(n,p,q):
	n = n-p
	nump = 0 
	numq = 0
	nump += 1			
	while n>p:
		if n%q==0:
			numq = n // q
			break
		else:
			n -= p
			nump += 1
	return nump,numq		

def main():
	digit = input()
	digit = digit.split()
	lvet=list()
	for num in digit:
		lvet.append(int(num))
	inter = list()
	# n = lvet[0]
	# p = lvet[1]
	# q = lvet[2]
	s = input()
	strg = []
	strg = s[:]
	
	#s = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(random.randint(1,100)))
	#strg = []
	#strg = s[:]
	#lvet = [len(strg),random.randint(1,len(strg)),random.randint(1,100)]
	#print(lvet[0],lvet[1],lvet[2])

	divp =  lvet[0] // lvet[1] if lvet[0]%lvet[1]==0 else 0
	divq = lvet[0] // lvet[2] if lvet[0]%lvet[2]==0 else 0
	if lvet[1]<=lvet[0] or lvet[2]<=lvet[0]:
		if divp!=0:	
			print(divp)		
			splitBy(strg,divp,lvet[1])		
		elif divq!=0:
			print(divq)			
			splitBy(strg,divq,lvet[2])
		elif lvet[1]+lvet[2]==lvet[0]:			
			print(2)
			del inter[:]
			for i in range(0,lvet[1]):
				inter.append(strg[i])
			print (''.join(inter),sep="")
			del inter[:]
			for i in range(lvet[1],lvet[0]):
				inter.append(strg[i])
			print (''.join(inter),sep="")
		else:			
			nump,numq = verifyLinearC(lvet[0],lvet[1],lvet[2])					
			if numq*lvet[2]+nump*lvet[1] == lvet[0]:
				print(numq+nump)
				splitBy(strg,nump,lvet[1])
				strg = strg[nump*lvet[1]:]
				splitBy(strg,numq,lvet[2])
			else:
				nump,numq = verifyLinearC(lvet[0],lvet[2],lvet[1])
				if numq*lvet[1]+nump*lvet[2] == lvet[0]:
					print(numq+nump)
					splitBy(strg,numq,lvet[1])
					strg = strg[numq*lvet[1]:]					
					splitBy(strg,nump,lvet[2])		
				else:
					print("-1",sep="")


main()