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
#include<bits/stdc++.h>
using namespace std;
#define FAST ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define int long long 
#define pi 3.14159265359
#define all(v) v.begin(),v.end()
#define vil vector<long long int>
#define vi vector<int> 
#define vb vector<bool>
#define pb(x) push_back(x)
#define pf(x) push_front(x)
#define mxe(v) *max_element(v.begin(),v.end())
#define mne(v) *min_element(v.begin(),v.end())
#define ub upper_bound
#define lb lower_bound
#define mod 1000000007
#define mxn 1000000000000000000
#define sec second
#define fir first
#define pil pair<long,long>
#define acc(v) accumulate(v.begin(),v.end(),0)
#define vi2 vector<vector<int>>
#define re
#define fir first
#define sec second
int find_set(int v,vi &p){
    if(v==p[v])
        return v;
    return p[v]=find_set(p[v],p);
}
void union_set(int a,int b,vi &p){
    a=find_set(a,p);
    b=find_set(b,p);
    if(a!=b){
        p[b]=a;
    }
}
bool mysort(pair<int,int> a,pair<int,int> b){
    return a.fir>=b.fir;
} 
void solve(){
  int n,k;
  cin>>n>>k;
   string s;
if(n==1){
    cout<<"a"<<endl;
    return;
}
char y='a';
char z=y;
char x=y;
char w=(char)((int)y+k);
int j=0;
for( ; ;){
if(x<w){
    s+=x;
    if(s.size()==n){
        break;
    }
    x++;
    if(x<w){
    s+=y;
     if(s.size()==n){
        break;
    }
    }
}
else{
     z++;
     if(z==w){
         z='a';
     }
    x=z;
   
    y++;
  
    if(y==w){
        y='a';
    }
}
}
cout<<s<<endl;






}
signed main() 
{ 
    FAST;
    int t;
t=1;
//   cin>>t;
    while(t--)
        solve();
    return 0; 
} 