#include <bits/stdc++.h>
using namespace std;
char ans[4][105];
int cc[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
vector<char> Hash;
char get(int i, int j, int n) {
  Hash.clear();
  char c = 'a';
  int x, y;
  int k;
  for (k = 0; k < 4; k++) {
    x = i + cc[k][0];
    y = j + cc[k][1];
    if (x < 0 || x > 3 || y < 0 || y >= n) continue;
    if (ans[x][y]) Hash.push_back(ans[x][y]);
  }
  j++;
  for (k = 0; k < 4; k++) {
    x = i + cc[k][0];
    y = j + cc[k][1];
    if (x < 0 || x > 3 || y < 0 || y >= n) continue;
    if (ans[x][y]) Hash.push_back(ans[x][y]);
  }
  while (1) {
    for (i = 0; i < Hash.size(); i++) {
      if (c == Hash[i]) break;
    }
    if (i == Hash.size()) break;
    c++;
  }
  return c;
}
void slove(int n) {
  int i, j;
  char c;
  if (n % 2 == 0) {
    ans[1][0] = ans[2][0] = 'z';
    ans[2][n - 1] = ans[1][n - 1] = 'z';
    for (i = 0; i < 4; i++) {
      for (j = 0; j < n; j++) {
        if (ans[i][j]) continue;
        c = get(i, j, n);
        ans[i][j] = ans[i][j + 1] = c;
        j++;
      }
    }
  }
  if (n % 2 != 0) {
    ans[1][0] = ans[0][0] = 'z';
    ans[2][n - 1] = ans[3][n - 1] = 'z';
    for (i = 0; i < 4; i++) {
      for (j = 0; j < n; j++) {
        if (ans[i][j]) continue;
        c = get(i, j, n);
        ans[i][j] = ans[i][j + 1] = c;
        j++;
      }
    }
  }
}
int main() {
  int n;
  int i, j;
  while (scanf("%d", &n) != EOF) {
    memset(ans, 0, sizeof(ans));
    if (n == 1) {
      ans[0][0] = ans[1][0] = 'a';
      ans[2][0] = ans[3][0] = 'b';
    } else if (n == 2) {
      for (i = 0; i < 4; i++) {
        ans[i][0] = ans[i][1] = 'a' + i;
      }
    } else
      slove(n);
    for (i = 0; i < 4; i++) {
      for (j = 0; j < n; j++) {
        printf("%c", ans[i][j]);
      }
      printf("\n");
    }
  }
  return 0;
}
