#include <bits/stdc++.h>
using namespace std;
template <typename TYPE>
inline TYPE sqr(const TYPE& a) {
  return (a) * (a);
}
const int INF = 1000 * 1000 * 1000;
const long double EPS = 1e-9;
const long double PI = 2 * acos(0.0);
const int N = 110;
char a[N][4];
int j;
char next() {
  ++j;
  return (char)('a' + ((j - 1) % 26));
}
void g3(int& x) {
  a[x][0] = a[x + 1][0] = next();
  a[x][1] = a[x + 1][1] = next();
  a[x][2] = a[x][3] = next();
  a[x + 2][0] = a[x + 2][1] = next();
  a[x + 1][2] = a[x + 2][2] = next();
  a[x + 1][3] = a[x + 2][3] = next();
  x += 3;
}
void g4(int& x) {
  a[x][0] = a[x + 1][0] = next();
  a[x][1] = a[x + 1][1] = next();
  a[x][2] = a[x][3] = next();
  a[x + 1][2] = a[x + 2][2] = next();
  a[x + 1][3] = a[x + 2][3] = next();
  a[x + 2][0] = a[x + 3][0] = next();
  a[x + 2][1] = a[x + 3][1] = next();
  a[x + 3][2] = a[x + 3][3] = next();
  x += 4;
}
void g2(int& x) {
  a[x][0] = a[x + 1][0] = next();
  a[x][1] = a[x + 1][1] = next();
  a[x][2] = a[x][3] = next();
  a[x + 1][2] = a[x + 1][3] = next();
}
void gh(int x, int y) {
  a[x][y] = a[x + 1][y] = next();
  a[x][y + 1] = a[x + 1][y + 1] = next();
}
void gv(int x, int y) { a[x][y] = a[x][y + 1] = next(); }
int main() {
  int n;
  scanf("%d", &n);
  if (n == 1) {
    gv(0, 0);
    gv(0, 2);
  } else {
    if (n & 1) {
      gv(0, 2);
      for (int i = 0; i < int(n / 2); ++i) {
        gh(i * 2, 0);
        gh(i * 2 + 1, 2);
      }
      gv(n - 1, 0);
    } else {
      gv(0, 2);
      for (int i = 0; i < int(n / 2); ++i) {
        gh(i * 2, 0);
        gh(i * 2 + 1, 2);
      }
      gv(n - 1, 2);
    }
  }
  for (int i = 0; i < int(4); ++i) {
    for (int j = 0; j < int(n); ++j) printf("%c", a[j][i]);
    printf("\n");
  }
  return 0;
}
