#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
const int INF = 1000000007;
using namespace std;
using Graph = vector<vector<int>>;
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;
}
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long lcm(long long a, long long b) { return (a * b) / gcd(a, b); }
int solve() {
  long long n;
  cin >> n;
  if (n == 1) {
    cout << "a" << endl;
  } else if (n == 2) {
    cout << "ab" << endl;
    cout << "aa" << endl;
  } else if (n == 3) {
    cout << "aaa" << endl;
    cout << "aba" << endl;
    cout << "abc" << endl;
    cout << "aab" << endl;
    cout << "abb" << endl;
  } else {
    return -1;
  }
  return 0;
}
int main() {
  solve();
  return 0;
}
