#include <bits/stdc++.h>
using namespace std;
char a[4][256];
int c[1024];
int t;
vector<pair<int, int> > g;
int n, N;
int f(int y, int x) { return y * n + x; }
void h(int y1, int x1, int y2, int x2) {
  int dx = x1 - x2;
  int dy = y1 - y2;
  assert(y1 >= 0 && y1 < 4);
  assert(y2 >= 0 && y2 < 4);
  assert(x1 >= 0 && x1 < n);
  assert(x2 >= 0 && x2 < n);
  assert(dx * dx + dy * dy == 1);
  g.push_back(make_pair(f(y1, x1), f(y2, x2)));
}
void line(int y, int x) {
  while (x + 1 < n) {
    h(y, x, y, x + 1);
    x += 2;
  }
}
void solve() {
  if (n == 1) {
    h(0, 0, 1, 0);
    h(2, 0, 3, 0);
    return;
  }
  if (n == 2) {
    line(0, 0);
    line(1, 0);
    h(2, 0, 3, 0);
    h(2, 1, 3, 1);
    return;
  }
  if (n % 2) {
    line(0, 0);
    line(1, 0);
    h(0, n - 1, 1, n - 1);
    line(2, 1);
    line(3, 1);
    h(2, 0, 3, 0);
    return;
  }
  h(1, 0, 2, 0);
  h(1, n - 1, 2, n - 1);
  line(0, 0);
  line(1, 1);
  line(2, 1);
  line(3, 0);
}
char b[512][512];
int ad[512][512];
int adj(int i, int j) {
  if (ad[g[i].first][g[j].first] || ad[g[i].first][g[j].second] ||
      ad[g[i].second][g[j].first] || ad[g[i].second][g[j].second])
    return 1;
  return 0;
}
void gr() {
  for (int i1 = 0; i1 < n; i1++)
    for (int j1 = 0; j1 < 4; j1++)
      for (int i2 = 0; i2 < n; i2++)
        for (int j2 = 0; j2 < 4; j2++) {
          int dx = i1 - i2;
          int dy = j1 - j2;
          if (dx * dx + dy * dy == 1) ad[j1 * n + i1][j2 * n + i2] = 1;
        }
}
int main(void) {
  int i, j, k;
  scanf("%d", &n);
  solve();
  N = g.size();
  fprintf(stderr, "[%d]\n", 76);
  memset(b, 0, sizeof(b));
  memset(ad, 0, sizeof(ad));
  gr();
  for (i = 0; i < N; i++)
    for (j = 0; j < N; j++) b[i][j] = adj(i, j);
  memset(c, 0xff, sizeof(c));
  for (i = 0; i < N; i++) {
    int color;
    for (color = 0; color < 26; color++) {
      int could = 1;
      for (j = 0; j < N; j++)
        if (b[i][j] && c[j] == color) {
          could = 0;
          break;
        }
      if (could) {
        c[i] = color;
        break;
      }
    }
    assert(color < 26);
  }
  memset(a, 0, sizeof(a));
  for (k = 0; k < N; k++) {
    i = g[k].first;
    j = g[k].second;
    assert(a[i / n][i % n] == 0);
    assert(a[j / n][j % n] == 0);
    a[i / n][i % n] = a[j / n][j % n] = 'a' + c[k];
  }
  for (j = 0; j < 4; j++) {
    for (i = 0; i < n; i++) {
      printf("%c", a[j][i]);
    }
    printf("\n");
  }
  return 0;
}
