stablegradients/pie-gem5-pairs huggingface dataset:
// Slower C++ solution:
#include<bits/stdc++.h>



using namespace std;



typedef long long LL;



LL f[20];



LL p[20];



int main(){

    LL n;scanf("%lld",&n);



    f[0]=1;

    for(int i=1;i<=12;++i)f[i]=26ll*f[i-1];

    for(int i=2;i<=12;++i)f[i]+=f[i-1];



    p[0]=1;

    for(int i=1;i<=12;++i)p[i]=26ll*p[i-1];



    int idx=1;

    while(f[idx]<n)++idx;



    string res;



    LL cnt;

    if(idx==1)cnt=0;

    else cnt=f[idx-1];



    for(int i=1;i<=idx;++i){

        for(int ch=0;ch<=25;++ch){

            LL t=cnt+1ll*(ch+1)*p[idx-i];

            if(t>=n){

                res+=ch+'a';

                cnt+=1ll*ch*p[idx-i];

                break;

            }

        }

    }



    cout<<res;



    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.288685085080394x):
//h

#include <stdio.h>

 

int main(){

    long long int a;

    scanf("%lld",&a);

 

    char name[100];

    int i=0;

    

    while(a!=0)

	{

        a--;

        int b = a%26;

        name[i] ='a'+ b;

        a/=26;

        i++;

    }

 

    for(int j=i-1;j>=0;j--)

	{

        printf("%c",name[j]);

    }

    

    return 0;

}
// Slower C++ solution:
#include <iostream>

#include <string>

#include <algorithm>

using namespace std;

int main(){

	long long n,i=1;

	string k ="";

	cin >> n;

	while(n!=0){

		k+=char('a'+((n-1)%26));

		n--;

		n/=26;

	

	};

	reverse(k.begin(),k.end());

	cout <<  k << endl;

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.346319753893984x):
//h

#include <stdio.h>

 

int main(){

    long long int a;

    scanf("%lld",&a);

 

    char name[100];

    int i=0;

    

    while(a!=0)

	{

        a--;

        int b = a%26;

        name[i] ='a'+ b;

        a/=26;

        i++;

    }

 

    for(int j=i-1;j>=0;j--)

	{

        printf("%c",name[j]);

    }

    

    return 0;

}
// Slower C++ solution:


#include <iostream>

#include <cstdio>

#include <cstring>

#include <algorithm>

#include <vector>

#include <map>

#include <cmath>

#include <queue>

#include <set>

#include <ctime>

#define rep(i,j,k) for(int i = j; i <= k; i++)

#define dow(i,j,k) for(int i = j; i >= k; i--)

#define ez(i,x) for(int i = h[x]; i; i = e[i].next)

#define fi first

#define se second

#define MS(x) memset(x, 0, sizeof(x))

using namespace std;



long long f[100];



int main() {

	f[1] = 1;

	f[2] = 26;

	rep(i,3,80) f[i] = f[i-1] * 26;

	rep(i,2,80) f[i] += f[i-1];

	long long a;

	string s;

	cin >> a;

	int b = 0;

	rep(i,1,50) {

		//cout << a << " " << f[i] << endl;

        if (a < f[i]) {

        a -= f[i-1], b= i-1;;

       

        break;

        }

	}

	rep(i,1,b) {

		s.push_back(a % 26 + 'a');

		a /= 26;

	}

	reverse(s.begin(), s.end());

	cout << s << endl;

}

// Faster C++ solution for the same problem (measured speedup: 5.3478584099947115x):
//h

#include <stdio.h>

 

int main(){

    long long int a;

    scanf("%lld",&a);

 

    char name[100];

    int i=0;

    

    while(a!=0)

	{

        a--;

        int b = a%26;

        name[i] ='a'+ b;

        a/=26;

        i++;

    }

 

    for(int j=i-1;j>=0;j--)

	{

        printf("%c",name[j]);

    }

    

    return 0;

}
// Slower C++ solution:
#include<iostream>

using namespace std;

int a[1007],c[1007];

long long b[1007];

long long aaa=(long long)1000000000000001;

int h=0;

int main()

{

	long long n;

	scanf("%lld",&n);

	b[1]=26;

	int h=0;

	for(int i=1;;++i)

	{

		b[i]=(b[i-1]+1)*26;

		if(b[i]>aaa||b[i]<=0)

		{

			h=i;break;

		}

	}

	b[h+1]=0x3f3f3f3f3f3f3f3f;

	for(int i=1;i<=h;++i)

	{

		c[i]=n%26;

		n=(n-1)/26;

		if(n==0)

		{

			for(int j=i;j>=1;--j)

			{

				if(c[j]==0)cout<<"z";

				else

				cout<<(char)(c[j]+'a'-1);

			}

			break;

		}

	}

return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.245154227440651x):
//h

#include <stdio.h>

 

int main(){

    long long int a;

    scanf("%lld",&a);

 

    char name[100];

    int i=0;

    

    while(a!=0)

	{

        a--;

        int b = a%26;

        name[i] ='a'+ b;

        a/=26;

        i++;

    }

 

    for(int j=i-1;j>=0;j--)

	{

        printf("%c",name[j]);

    }

    

    return 0;

}
// Slower C++ solution:
#include <iostream>

#include <stack>

using namespace std;

char rec[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

void decTo26(long long dec,stack<char> q)

{

    long long temp = dec;

    while(temp){

        temp--;

        char c = rec[temp%26];

        q.push(c);

        temp = temp/26;

    }

    while(!q.empty()){

        cout<<q.top();

        q.pop();

    }

    cout<<endl;

}



int main()

{//26进制

    long long n;

    cin >> n;

    stack<char> q;

    decTo26(n,q);

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.3605526339470835x):
//h

#include <stdio.h>

 

int main(){

    long long int a;

    scanf("%lld",&a);

 

    char name[100];

    int i=0;

    

    while(a!=0)

	{

        a--;

        int b = a%26;

        name[i] ='a'+ b;

        a/=26;

        i++;

    }

 

    for(int j=i-1;j>=0;j--)

	{

        printf("%c",name[j]);

    }

    

    return 0;

}
// Slower C++ solution:
#include <iostream>

#include <bits/stdc++.h>



using namespace std;



int main()

{

    string str = "";

    long long num, rem;

    bool flag = true;



    cin >> num;



    while(num > 0)

    {

        rem = num % 26;

        num /= 26;

        if(rem == 0)

        {

            rem = 26;

            num--;

        }

        str += (char)(rem + 96);

    }

    for(int i = str.length() - 1; i >= 0; i--)

        cout << str[i];

    cout << endl;

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.349250402766282x):
//h

#include <stdio.h>

 

int main(){

    long long int a;

    scanf("%lld",&a);

 

    char name[100];

    int i=0;

    

    while(a!=0)

	{

        a--;

        int b = a%26;

        name[i] ='a'+ b;

        a/=26;

        i++;

    }

 

    for(int j=i-1;j>=0;j--)

	{

        printf("%c",name[j]);

    }

    

    return 0;

}
// Slower C++ solution:
#include <iostream>

#include <algorithm>

#include <set>

#include <string>

#include <vector>

#include <queue>

#include <deque>

#include <sstream>

#include <map>

#include <cmath>

#include <stack>



using namespace std;



typedef long long ll;

int main() {

    ll n; cin >> n;

    int j = 0;

    stack<char> sk;

    while (n > 0) {

        if(n % 26 == 0) {

            // break;

            sk.push('z');

            n--;

            n /= 26;

            continue;

        }

        j = (n-1) % 26 ;

        // if(j == -1) j = 25;

        sk.push('a' + j);

        n /= 26;

    }

    while (!sk.empty())

    {

        cout << sk.top();

        sk.pop();

    }





}

// Faster C++ solution for the same problem (measured speedup: 5.340235764770444x):
//h

#include <stdio.h>

 

int main(){

    long long int a;

    scanf("%lld",&a);

 

    char name[100];

    int i=0;

    

    while(a!=0)

	{

        a--;

        int b = a%26;

        name[i] ='a'+ b;

        a/=26;

        i++;

    }

 

    for(int j=i-1;j>=0;j--)

	{

        printf("%c",name[j]);

    }

    

    return 0;

}
// Slower C++ solution:


#include <iostream>

using namespace std;

typedef long long ll;

#include<algorithm>

char a[30] {'a','b','c','d','e','f','g'

,'h','i','j','k','l',

'm','n','o','p','q','r','s','t','u','v',

'w','x','y','z'};

 int main()

   {

     ll N,X,i=0;

     string s;

     cin>>N;

     while(N)

       

       {

         X= N%26;

         if(X==0){X=26;}

         s+= a[X-1];

         N=(N-1)/26;

         

       }

       reverse(s.begin(),s.end());

       cout<<s<<endl;

   }

   

// Faster C++ solution for the same problem (measured speedup: 5.347653541936564x):
//h

#include <stdio.h>

 

int main(){

    long long int a;

    scanf("%lld",&a);

 

    char name[100];

    int i=0;

    

    while(a!=0)

	{

        a--;

        int b = a%26;

        name[i] ='a'+ b;

        a/=26;

        i++;

    }

 

    for(int j=i-1;j>=0;j--)

	{

        printf("%c",name[j]);

    }

    

    return 0;

}
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

#include <math.h>

#include <iomanip>

template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }

template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }

const int INF=1001001001;

vector<pair<int64_t,int64_t>>pppp(int64_t x){

  vector<pair<int64_t,int64_t>>p;

  for(int64_t i=2;i*i<=x;i++){

    int cnt=0;

    if(x%i==0){

    while(x%i==0){cnt++;x/=i;}

    p.push_back(make_pair(i,cnt));

    }

  }

  if(x!=1){p.push_back(make_pair(x,1));}

  return p; 

}

 

int main() {

  int64_t N;

  cin>>N;

  string k;

  while(N>0){

    N--;

    k=(char)(N%26+'a')+k;

    N/=26;

  }

  cout<<k<<endl;

  return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.3561304048558736x):
//h

#include <stdio.h>

 

int main(){

    long long int a;

    scanf("%lld",&a);

 

    char name[100];

    int i=0;

    

    while(a!=0)

	{

        a--;

        int b = a%26;

        name[i] ='a'+ b;

        a/=26;

        i++;

    }

 

    for(int j=i-1;j>=0;j--)

	{

        printf("%c",name[j]);

    }

    

    return 0;

}
// Slower C++ solution:
#include <iostream>

#include<vector>

#include<map>

#include<set>

#include<string>

#include<algorithm>

#include<math.h>

#include<bits/stdc++.h>

#include<cmath>

#include<iomanip>

#include<queue>

#include<string>

using namespace std;



const double PI  =3.141592653589793238463;

#define pb push_back

#define pf push_front

#define sz(v)  ((int)(v).size());

#define all(v) ((v).begin()),((v).end())

typedef unsigned long long ull;

typedef long long ll;



typedef vector<int> vi;

typedef pair<int,int> pi;

//2 7 3 4 9



void printVec(vi v1)

{

    for(int i=0; i<v1.size(); i++)

        cout<<v1[i]<<" ";

    cout<<endl;

}

ll rec(ll r,ll c){



if(r<=1 || c<=1){

    return 1;

}





return rec(r-1,c)+rec(r,c-1);

}



int main()

{

    ios::sync_with_stdio(false);

    cout.tie(NULL);

    cin.tie(NULL);

ull n;cin>>n;

string str="";

while(n>=1){

    n--;

    str+='a'+(n%26);

    n/=26;

}reverse(str.begin(),str.end());

 cout<<str;

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.407110008754454x):
//h

#include <stdio.h>

 

int main(){

    long long int a;

    scanf("%lld",&a);

 

    char name[100];

    int i=0;

    

    while(a!=0)

	{

        a--;

        int b = a%26;

        name[i] ='a'+ b;

        a/=26;

        i++;

    }

 

    for(int j=i-1;j>=0;j--)

	{

        printf("%c",name[j]);

    }

    

    return 0;

}
// Slower C++ solution:
#include <bits/stdc++.h>



using namespace std;



int main() {

  ios_base::sync_with_stdio(0), cin.tie(0), cout .tie(0);

  long long n;

  cin >> n;

  string k;

  while (n) {

    n -= 1;

    k.push_back('a' + n % 26LL);

    n /= 26LL;

  }



  for (int i = k.size(); i > 0; i--) cout << k[i - 1]; 

  return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.366380745412187x):
//h

#include <stdio.h>

 

int main(){

    long long int a;

    scanf("%lld",&a);

 

    char name[100];

    int i=0;

    

    while(a!=0)

	{

        a--;

        int b = a%26;

        name[i] ='a'+ b;

        a/=26;

        i++;

    }

 

    for(int j=i-1;j>=0;j--)

	{

        printf("%c",name[j]);

    }

    

    return 0;

}
// Slower C++ solution:
#include <bits/stdc++.h>



using namespace std;



int main()

{

    stack<char> out;

    long long int n;

    cin>>n;

    while(n)

    {

        --n;

        out.push('a'+n%26);

        n/=26;//number of alphabet letters i.e base

    }

    while(!out.empty()){

        cout<<out.top();

        out.pop();

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.336725772145666x):
//h

#include <stdio.h>

 

int main(){

    long long int a;

    scanf("%lld",&a);

 

    char name[100];

    int i=0;

    

    while(a!=0)

	{

        a--;

        int b = a%26;

        name[i] ='a'+ b;

        a/=26;

        i++;

    }

 

    for(int j=i-1;j>=0;j--)

	{

        printf("%c",name[j]);

    }

    

    return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>



using namespace std;



typedef long long LL;



LL f[20];



LL p[20];



int main(){

    LL n;scanf("%lld",&n);



    f[0]=1;

    for(int i=1;i<=12;++i)f[i]=26ll*f[i-1];

    for(int i=2;i<=12;++i)f[i]+=f[i-1];



    p[0]=1;

    for(int i=1;i<=12;++i)p[i]=26ll*p[i-1];



    int idx=1;

    while(f[idx]<n)++idx;



    string res;



    LL cnt;

    if(idx==1)cnt=0;

    else cnt=f[idx-1];



    for(int i=1;i<=idx;++i){

        for(int ch=0;ch<=25;++ch){

            LL t=cnt+1ll*(ch+1)*p[idx-i];

            if(t>=n){

                res+=ch+'a';

                cnt+=1ll*ch*p[idx-i];

                break;

            }

        }

    }



    cout<<res;



    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.288581141783833x):
#include<stdio.h>

#include<string.h>



int main()

{

	long long n;

	char pass[255] = {0};

	

	scanf("%lld", &n);

	--n;

	int i = 0;

	

	while(n >= 0){

		pass[i] = (n % 26) + 'a';

		n /= 26;

		++i;

		--n;

	}

	

	int len = strlen(pass);

	

	for(int i = len - 1 ; i >= 0; i--){

		printf("%c", pass[i]);

	}

	

	

}
// Slower C++ solution:
#include <iostream>

#include <string>

#include <algorithm>

using namespace std;

int main(){

	long long n,i=1;

	string k ="";

	cin >> n;

	while(n!=0){

		k+=char('a'+((n-1)%26));

		n--;

		n/=26;

	

	};

	reverse(k.begin(),k.end());

	cout <<  k << endl;

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.34621467785131x):
#include<stdio.h>

#include<string.h>



int main()

{

	long long n;

	char pass[255] = {0};

	

	scanf("%lld", &n);

	--n;

	int i = 0;

	

	while(n >= 0){

		pass[i] = (n % 26) + 'a';

		n /= 26;

		++i;

		--n;

	}

	

	int len = strlen(pass);

	

	for(int i = len - 1 ; i >= 0; i--){

		printf("%c", pass[i]);

	}

	

	

}
// Slower C++ solution:


#include <iostream>

#include <cstdio>

#include <cstring>

#include <algorithm>

#include <vector>

#include <map>

#include <cmath>

#include <queue>

#include <set>

#include <ctime>

#define rep(i,j,k) for(int i = j; i <= k; i++)

#define dow(i,j,k) for(int i = j; i >= k; i--)

#define ez(i,x) for(int i = h[x]; i; i = e[i].next)

#define fi first

#define se second

#define MS(x) memset(x, 0, sizeof(x))

using namespace std;



long long f[100];



int main() {

	f[1] = 1;

	f[2] = 26;

	rep(i,3,80) f[i] = f[i-1] * 26;

	rep(i,2,80) f[i] += f[i-1];

	long long a;

	string s;

	cin >> a;

	int b = 0;

	rep(i,1,50) {

		//cout << a << " " << f[i] << endl;

        if (a < f[i]) {

        a -= f[i-1], b= i-1;;

       

        break;

        }

	}

	rep(i,1,b) {

		s.push_back(a % 26 + 'a');

		a /= 26;

	}

	reverse(s.begin(), s.end());

	cout << s << endl;

}

// Faster C++ solution for the same problem (measured speedup: 5.347753303711442x):
#include<stdio.h>

#include<string.h>



int main()

{

	long long n;

	char pass[255] = {0};

	

	scanf("%lld", &n);

	--n;

	int i = 0;

	

	while(n >= 0){

		pass[i] = (n % 26) + 'a';

		n /= 26;

		++i;

		--n;

	}

	

	int len = strlen(pass);

	

	for(int i = len - 1 ; i >= 0; i--){

		printf("%c", pass[i]);

	}

	

	

}
// Slower C++ solution:
#include<iostream>

using namespace std;

int a[1007],c[1007];

long long b[1007];

long long aaa=(long long)1000000000000001;

int h=0;

int main()

{

	long long n;

	scanf("%lld",&n);

	b[1]=26;

	int h=0;

	for(int i=1;;++i)

	{

		b[i]=(b[i-1]+1)*26;

		if(b[i]>aaa||b[i]<=0)

		{

			h=i;break;

		}

	}

	b[h+1]=0x3f3f3f3f3f3f3f3f;

	for(int i=1;i<=h;++i)

	{

		c[i]=n%26;

		n=(n-1)/26;

		if(n==0)

		{

			for(int j=i;j>=1;--j)

			{

				if(c[j]==0)cout<<"z";

				else

				cout<<(char)(c[j]+'a'-1);

			}

			break;

		}

	}

return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.245051139695284x):
#include<stdio.h>

#include<string.h>



int main()

{

	long long n;

	char pass[255] = {0};

	

	scanf("%lld", &n);

	--n;

	int i = 0;

	

	while(n >= 0){

		pass[i] = (n % 26) + 'a';

		n /= 26;

		++i;

		--n;

	}

	

	int len = strlen(pass);

	

	for(int i = len - 1 ; i >= 0; i--){

		printf("%c", pass[i]);

	}

	

	

}
// Slower C++ solution:
#include <iostream>

#include <stack>

using namespace std;

char rec[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

void decTo26(long long dec,stack<char> q)

{

    long long temp = dec;

    while(temp){

        temp--;

        char c = rec[temp%26];

        q.push(c);

        temp = temp/26;

    }

    while(!q.empty()){

        cout<<q.top();

        q.pop();

    }

    cout<<endl;

}



int main()

{//26进制

    long long n;

    cin >> n;

    stack<char> q;

    decTo26(n,q);

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.360447278172784x):
#include<stdio.h>

#include<string.h>



int main()

{

	long long n;

	char pass[255] = {0};

	

	scanf("%lld", &n);

	--n;

	int i = 0;

	

	while(n >= 0){

		pass[i] = (n % 26) + 'a';

		n /= 26;

		++i;

		--n;

	}

	

	int len = strlen(pass);

	

	for(int i = len - 1 ; i >= 0; i--){

		printf("%c", pass[i]);

	}

	

	

}
// Slower C++ solution:
#include <iostream>

#include <bits/stdc++.h>



using namespace std;



int main()

{

    string str = "";

    long long num, rem;

    bool flag = true;



    cin >> num;



    while(num > 0)

    {

        rem = num % 26;

        num /= 26;

        if(rem == 0)

        {

            rem = 26;

            num--;

        }

        str += (char)(rem + 96);

    }

    for(int i = str.length() - 1; i >= 0; i--)

        cout << str[i];

    cout << endl;

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.349145269124923x):
#include<stdio.h>

#include<string.h>



int main()

{

	long long n;

	char pass[255] = {0};

	

	scanf("%lld", &n);

	--n;

	int i = 0;

	

	while(n >= 0){

		pass[i] = (n % 26) + 'a';

		n /= 26;

		++i;

		--n;

	}

	

	int len = strlen(pass);

	

	for(int i = len - 1 ; i >= 0; i--){

		printf("%c", pass[i]);

	}

	

	

}
// Slower C++ solution:
#include <iostream>

#include <algorithm>

#include <set>

#include <string>

#include <vector>

#include <queue>

#include <deque>

#include <sstream>

#include <map>

#include <cmath>

#include <stack>



using namespace std;



typedef long long ll;

int main() {

    ll n; cin >> n;

    int j = 0;

    stack<char> sk;

    while (n > 0) {

        if(n % 26 == 0) {

            // break;

            sk.push('z');

            n--;

            n /= 26;

            continue;

        }

        j = (n-1) % 26 ;

        // if(j == -1) j = 25;

        sk.push('a' + j);

        n /= 26;

    }

    while (!sk.empty())

    {

        cout << sk.top();

        sk.pop();

    }





}

// Faster C++ solution for the same problem (measured speedup: 5.340130808301894x):
#include<stdio.h>

#include<string.h>



int main()

{

	long long n;

	char pass[255] = {0};

	

	scanf("%lld", &n);

	--n;

	int i = 0;

	

	while(n >= 0){

		pass[i] = (n % 26) + 'a';

		n /= 26;

		++i;

		--n;

	}

	

	int len = strlen(pass);

	

	for(int i = len - 1 ; i >= 0; i--){

		printf("%c", pass[i]);

	}

	

	

}
// Slower C++ solution:


#include <iostream>

using namespace std;

typedef long long ll;

#include<algorithm>

char a[30] {'a','b','c','d','e','f','g'

,'h','i','j','k','l',

'm','n','o','p','q','r','s','t','u','v',

'w','x','y','z'};

 int main()

   {

     ll N,X,i=0;

     string s;

     cin>>N;

     while(N)

       

       {

         X= N%26;

         if(X==0){X=26;}

         s+= a[X-1];

         N=(N-1)/26;

         

       }

       reverse(s.begin(),s.end());

       cout<<s<<endl;

   }

   

// Faster C++ solution for the same problem (measured speedup: 5.347548439679751x):
#include<stdio.h>

#include<string.h>



int main()

{

	long long n;

	char pass[255] = {0};

	

	scanf("%lld", &n);

	--n;

	int i = 0;

	

	while(n >= 0){

		pass[i] = (n % 26) + 'a';

		n /= 26;

		++i;

		--n;

	}

	

	int len = strlen(pass);

	

	for(int i = len - 1 ; i >= 0; i--){

		printf("%c", pass[i]);

	}

	

	

}
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

#include <math.h>

#include <iomanip>

template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }

template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }

const int INF=1001001001;

vector<pair<int64_t,int64_t>>pppp(int64_t x){

  vector<pair<int64_t,int64_t>>p;

  for(int64_t i=2;i*i<=x;i++){

    int cnt=0;

    if(x%i==0){

    while(x%i==0){cnt++;x/=i;}

    p.push_back(make_pair(i,cnt));

    }

  }

  if(x!=1){p.push_back(make_pair(x,1));}

  return p; 

}

 

int main() {

  int64_t N;

  cin>>N;

  string k;

  while(N>0){

    N--;

    k=(char)(N%26+'a')+k;

    N/=26;

  }

  cout<<k<<endl;

  return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.356025135995631x):
#include<stdio.h>

#include<string.h>



int main()

{

	long long n;

	char pass[255] = {0};

	

	scanf("%lld", &n);

	--n;

	int i = 0;

	

	while(n >= 0){

		pass[i] = (n % 26) + 'a';

		n /= 26;

		++i;

		--n;

	}

	

	int len = strlen(pass);

	

	for(int i = len - 1 ; i >= 0; i--){

		printf("%c", pass[i]);

	}

	

	

}
// Slower C++ solution:
#include <iostream>

#include<vector>

#include<map>

#include<set>

#include<string>

#include<algorithm>

#include<math.h>

#include<bits/stdc++.h>

#include<cmath>

#include<iomanip>

#include<queue>

#include<string>

using namespace std;



const double PI  =3.141592653589793238463;

#define pb push_back

#define pf push_front

#define sz(v)  ((int)(v).size());

#define all(v) ((v).begin()),((v).end())

typedef unsigned long long ull;

typedef long long ll;



typedef vector<int> vi;

typedef pair<int,int> pi;

//2 7 3 4 9



void printVec(vi v1)

{

    for(int i=0; i<v1.size(); i++)

        cout<<v1[i]<<" ";

    cout<<endl;

}

ll rec(ll r,ll c){



if(r<=1 || c<=1){

    return 1;

}





return rec(r-1,c)+rec(r,c-1);

}



int main()

{

    ios::sync_with_stdio(false);

    cout.tie(NULL);

    cin.tie(NULL);

ull n;cin>>n;

string str="";

while(n>=1){

    n--;

    str+='a'+(n%26);

    n/=26;

}reverse(str.begin(),str.end());

 cout<<str;

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.40700373794609x):
#include<stdio.h>

#include<string.h>



int main()

{

	long long n;

	char pass[255] = {0};

	

	scanf("%lld", &n);

	--n;

	int i = 0;

	

	while(n >= 0){

		pass[i] = (n % 26) + 'a';

		n /= 26;

		++i;

		--n;

	}

	

	int len = strlen(pass);

	

	for(int i = len - 1 ; i >= 0; i--){

		printf("%c", pass[i]);

	}

	

	

}
// Slower C++ solution:
#include <bits/stdc++.h>



using namespace std;



int main() {

  ios_base::sync_with_stdio(0), cin.tie(0), cout .tie(0);

  long long n;

  cin >> n;

  string k;

  while (n) {

    n -= 1;

    k.push_back('a' + n % 26LL);

    n /= 26LL;

  }



  for (int i = k.size(); i > 0; i--) cout << k[i - 1]; 

  return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.366275275092757x):
#include<stdio.h>

#include<string.h>



int main()

{

	long long n;

	char pass[255] = {0};

	

	scanf("%lld", &n);

	--n;

	int i = 0;

	

	while(n >= 0){

		pass[i] = (n % 26) + 'a';

		n /= 26;

		++i;

		--n;

	}

	

	int len = strlen(pass);

	

	for(int i = len - 1 ; i >= 0; i--){

		printf("%c", pass[i]);

	}

	

	

}