Problem: 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

Solution (in CPP):

Solution:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define mod 1000000007
#define mo 1000000007
#define mod2 1000000000
#define mod1 998244353
#define lol ios_base::sync_with_stdio(false);cin.tie(NULL);
#define all(x) (x).begin(), (x).end()
#define F(i, n) for (ll (i) = 0; (i) < (n); (i)++)
#define pb push_back
#define pf push_front
#define mp make_pair
#define f first
#define ss second

ll vis[26][26];
string ans;
ll k;

bool ck()
{
    for(ll i=0;i<k;i++)
    {
        for(ll j=0;j<k;j++) 
        {
            if(vis[i][j]==0)
            {
                // cout << vis[i][j] << " ";
                return false;
            }
        }
    }
    return true;
}

void dfs(ll i,ll j)
{
    if(ck()) return;
    vis[i][j] = 1;
    ans.pb(j+'a');
    // cout << i << j << endl;
    if(j==k-1)
    {
        for(ll i=1;i<k;i++)
        {
            if(vis[j][i]==0)
            {
                dfs(j,i);
                return;
            }
        }
        dfs(j,0);
        return;
    }
    for(ll i=0;i<k;i++)
    {
        if(vis[j][i]==0)
        {
            dfs(j,i);
            return;
        }
    }
    return;
}

int main()
{
    ll n;
    cin >> n >> k;
    dfs(0,0);
    string rep = ans;
    ans.insert(0,1,'a');
    string fin = ans;
    while(fin.size()<n)
    {
        fin+=rep;
    }
    while(fin.size()>n) fin.pop_back();
    cout << fin << endl;
}