#include <bits/stdc++.h>
using namespace std;
template <class S, class T>
ostream& operator<<(ostream& o, const pair<S, T>& p) {
  return o << "(" << p.first << "," << p.second << ")";
}
template <class T>
ostream& operator<<(ostream& o, const vector<T>& vc) {
  o << "sz = " << vc.size() << endl << "[";
  for (const T& v : vc) o << v << ",";
  o << "]";
  return o;
}
int main() {
  int Xo;
  cin >> Xo;
  for (int N = 4; N <= 7; N++) {
    int X = Xo;
    vector<int> vs;
    vector<long long> a(N + 1);
    a[0] = 1;
    for (int i = 0; i < (int)(100); i++) {
      for (int j = 0; j < (int)(N); j++) a[j + 1] += a[j];
      if (a[N] > 1e6) break;
      vs.push_back(a[N]);
    }
    int K = vs.size();
    string pat;
    for (int i = 0; i < (int)(N + 1); i++) pat += 'a' + i;
    string ans;
    for (int i = K - 1; i >= 0; i--) {
      int v = vs[i];
      int q = X / v;
      X %= v;
      ans += string(q, pat[N]);
      if (ans.empty()) continue;
      for (int j = N - 1; j >= 0; j--) ans += pat[j];
    }
    if (ans.size() > 200) continue;
    reverse(ans.begin(), ans.end());
    cout << ans << " " << pat << endl;
    return 0;
  }
}
