#include<bits/stdc++.h>
#define MOD 1000000007
#define MOD2 998244353
#define pb push_back
#define mp make_pair
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define ll long long
#define N 20000001
#define M 1001
//#define int long long //:( (KS). VVI:: USE 1LL.
#define float long double
using namespace std;
int32_t main()
{
    IOS;
    int n, k; cin>>n>>k;
    vector<queue<int>>a(k);
    for (int i=0; i<k; i++) {
        for (int j=k-1; j>=0; j--) {
            a[i].push(j);
        }
    }
    string s="a";
    for (int i=1; i<=k*k; i++) {
        int c = s[s.size()-1]-'a';
        int d = a[c].front();
        a[c].pop();
        s+=('a'+d);
    }
    for (int i=0; i<min(k*k+1, n); i++) {
        cout<<s[i];
    }
    string t = s.substr(0, k*k);
    for (int i=k*k+1; i<n; i++) {
        cout<<t[(i-k*k-1)%(k*k)];
    }
	return 0;
}
/*
1. Check borderline constraints. Can a variable you are dividing by be 0?
2. Use ll while using bitshifts
3. Do not erase from set while iterating it
4. Initialise everything
5. Read the task carefully, is something unique, sorted, adjacent, guaranteed??
6. DO NOT use if(!mp[x]) if you want to iterate the map later
7. Are you using i in all loops? Are the i's conflicting?
*/


### Prompt

In CPP, your task is to solve the following 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

### Response

```cpp
#include<bits/stdc++.h>
#define MOD 1000000007
#define MOD2 998244353
#define pb push_back
#define mp make_pair
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define ll long long
#define N 20000001
#define M 1001
//#define int long long //:( (KS). VVI:: USE 1LL.
#define float long double
using namespace std;
int32_t main()
{
    IOS;
    int n, k; cin>>n>>k;
    vector<queue<int>>a(k);
    for (int i=0; i<k; i++) {
        for (int j=k-1; j>=0; j--) {
            a[i].push(j);
        }
    }
    string s="a";
    for (int i=1; i<=k*k; i++) {
        int c = s[s.size()-1]-'a';
        int d = a[c].front();
        a[c].pop();
        s+=('a'+d);
    }
    for (int i=0; i<min(k*k+1, n); i++) {
        cout<<s[i];
    }
    string t = s.substr(0, k*k);
    for (int i=k*k+1; i<n; i++) {
        cout<<t[(i-k*k-1)%(k*k)];
    }
	return 0;
}
/*
1. Check borderline constraints. Can a variable you are dividing by be 0?
2. Use ll while using bitshifts
3. Do not erase from set while iterating it
4. Initialise everything
5. Read the task carefully, is something unique, sorted, adjacent, guaranteed??
6. DO NOT use if(!mp[x]) if you want to iterate the map later
7. Are you using i in all loops? Are the i's conflicting?
*/


```