#include <bits/stdc++.h>
using namespace std;
long long dx[] = {1, -1, 0, 0};
long long dy[] = {0, 0, 1, -1};
const int sz = 3e5 + 5, mod = 1e9 + 7;
long long t, n, m, k;
vector<long long> p(sz), sp(sz), fac(sz);
const long long lim = 1e18;
const long long inf = 1e15;
long long Power(long long a, long long b) {
  if (a == 0) return 0;
  if (b == 0) return 1;
  long long ans = Power((a * a) % mod, b / 2);
  if (b & 1) return (a * ans) % mod;
  return ans % mod;
}
long long Inv(long long a) { return Power(a, mod - 2); }
long long ans = 0;
long long a, b;
vector<vector<long long> > Gr(1002);
vector<int> P;
bool flag = 0;
long long q;
void DFS(int s, int pr) {
  if (flag) return;
  if (s == q) {
    P.push_back(q);
    flag = 1;
    return;
  }
  P.push_back(s);
  for (auto i : Gr[s]) {
    if (flag) return;
    if (pr != i) {
      DFS(i, s);
    }
  }
  if (flag) return;
  P.pop_back();
}
map<long long, long long> mp;
long long mat[1003][1003];
vector<pair<long long, long long> > v;
int main() {
  cin >> n;
  if (n == 0) {
    cout << "a";
    return 0;
  }
  long long req = n;
  vector<long long> ans;
  while (req) {
    long long x = 1;
    long long xx = 0;
    while (x + xx <= req) {
      xx += x;
      x++;
    }
    req -= xx;
    ans.push_back(x);
  }
  for (int i = 0; i < ans.size(); i++) {
    for (int j = 0; j < ans[i]; j++) {
      char c = 'a' + i;
      cout << c;
    }
  }
  return 0;
}
