#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-12;
const int INF = 1e9 + 10;
template <typename T>
using MinPQ = priority_queue<T, vector<T>, greater<T>>;
char Convert(int x) {
  if (x < 26) return x + 'a';
  return x - 26 + 'A';
}
void Solve() {
  int n;
  scanf("%d", &n);
  vector<int> head, tail;
  n--;
  int i = 0;
  for (; n > 0; ++i) {
    if (n & 1) {
      head.push_back(i);
      --n;
    }
    if (n == 0) break;
    tail.push_back(i);
    tail.push_back(i);
    n >>= 1;
    --n;
    if (n == 0) break;
  }
  vector<int> ans;
  for (int j = i; j >= 0; --j) ans.push_back(j);
  for (auto &x : (head)) ans.push_back(x);
  for (int j = int((tail).size()) - 1; j >= 0; --j) ans.push_back(tail[j]);
  for (auto &x : (ans)) printf("%c", Convert(x));
  printf(" ");
  for (int j = i; j >= 0; --j) printf("%c", Convert(j));
  printf("\n");
}
int main() {
  int t = 1;
  for (int i = 1; i <= t; ++i) {
    Solve();
  }
  return 0;
}
