#include <bits/stdc++.h>
using namespace std;
long long labs(long long a) { return a < 0 ? (-a) : a; }
long long max(long long a, long long b) { return a > b ? a : b; }
long long min(long long a, long long b) { return a < b ? a : b; }
template <typename T>
struct Point {
  T x, y;
  Point() {}
  Point(T xx, T yy) : x(xx), y(yy) {}
};
template <typename T>
bool operator<(const Point<T> &p1, const Point<T> &p2) {
  return p1.x < p2.x || p1.x == p2.x && p1.y < p2.y;
}
char c = 'a' - 1;
char NextChar() {
  c++;
  if (c > 'z') c = 'a';
  return c;
}
vector<vector<char> > v;
int main() {
  int n;
  cin >> n;
  if (n == 2) {
    cout << "aa" << endl;
    cout << "bb" << endl;
    cout << "cc" << endl;
    cout << "dd" << endl;
    return 0;
  }
  v.assign(4, vector<char>(n));
  v[2][0] = v[3][0] = NextChar();
  for (int(i) = 0; (i) < (n - 1); (i)++) {
    if (i % 2 == 0) {
      v[0][i] = v[0][i + 1] = NextChar();
      v[1][i] = v[1][i + 1] = NextChar();
    } else {
      v[2][i] = v[2][i + 1] = NextChar();
      v[3][i] = v[3][i + 1] = NextChar();
    }
  }
  if (n % 2 == 0) {
    v[2][n - 1] = v[3][n - 1] = NextChar();
  } else {
    v[0][n - 1] = v[1][n - 1] = NextChar();
  }
  for (int(i) = 0; (i) < (4); (i)++) {
    for (int(j) = 0; (j) < (n); (j)++) {
      cout << v[i][j];
    }
    cout << endl;
  }
  return 0;
}
