#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int cost[N];
bool vis[30][N];
bool pd[30][N];
bool solve(int pos, int rem) {
  if (rem < 0) return pd[pos][rem] = false;
  if (pos >= 26) {
    if (rem == 0) return pd[pos][rem] = true;
    return pd[pos][rem] = false;
  }
  if (vis[pos][rem]) return pd[pos][rem];
  vis[pos][rem] = true;
  for (int i = 0; cost[i] <= rem; i++)
    pd[pos][rem] = pd[pos][rem] || solve(pos + 1, rem - cost[i]);
  return pd[pos][rem];
}
int cnt[30];
void trace(int pos, int rem) {
  if (pos >= 26) return;
  for (int i = 0; cost[i] <= rem; i++) {
    if (pd[pos + 1][rem - cost[i]]) {
      cnt[pos] = i;
      trace(pos + 1, rem - cost[i]);
      return;
    }
  }
}
int main() {
  cost[0] = 0;
  for (int i = 1; i < N; i++) cost[i] = cost[i - 1] + i - 1;
  int k;
  scanf("%d", &k);
  if (k == 0) {
    printf("a\n");
    return 0;
  }
  solve(0, k);
  trace(0, k);
  for (int i = 0; i < 26; i++) {
    for (int j = 0; j < cnt[i]; j++) printf("%c", 'a' + i);
  }
  printf("\n");
  return 0;
}
