Let's define the cost of a string s as the number of index pairs i and j (1 ≤ i < j < |s|) such that s_i = s_j and s_{i+1} = s_{j+1}.

You are given two positive integers n and k. Among all strings with length n that contain only the first k characters of the Latin alphabet, find a string with minimum possible cost. If there are multiple such strings with minimum cost — find any of them.

Input

The only line contains two integers n and k (1 ≤ n ≤ 2 ⋅ 10^5; 1 ≤ k ≤ 26).

Output

Print the string s such that it consists of n characters, each its character is one of the k first Latin letters, and it has the minimum possible cost among all these strings. If there are multiple such strings — print any of them.

Examples

Input


9 4


Output


aabacadbb


Input


5 1


Output


aaaaa

Input


10 26


Output


codeforces
# author : empr #
import sys
input=sys.stdin.buffer.readline
ri=lambda: int(input())
rl=lambda: list(map(int,input().split()))
rs=lambda: input().decode().rstrip('\n\r')
wrt=sys.stdout.write
fastop=lambda *args,end='\n': wrt(' '.join([str(x) for x in args])+end)
op=print
xrange=lambda *args: reversed(range(*args))
cdiv=lambda x,y: (-(-x//y))
enum=enumerate; inf=float('inf')
mod=10**9 + 7
# Am I debugging ? Check if I'm using same variable name in two places
# fun() returning empty list ? check new=temp[:] or new=temp
# Am I breaking or returning from a loop while reading input
# check if I am initializing any ans correctly
from collections import defaultdict as dd,Counter
#from queue import deque
from heapq import *
from math import gcd
#lcm=lambda x,y: x*y//gcd(x,y)

alp='abcdefghijklmnopqrstuvwxyz'

#from math import gcd
Testcase=1
for testcase in range(Testcase):
    n,k=rl()
    ans=[]
    for i in range(k):
        ans.append(alp[i])
        for j in range(i+1,k):
            ans.append(alp[i])
            ans.append(alp[j])
    ans=''.join(ans)
    ans=ans*(n//k + 2)
    print(ans[0:n])