#include <bits/stdc++.h>
using namespace std;
int mx[] = {-1, 0, 1, 0};
int my[] = {0, 1, 0, -1};
char board[4][110];
bool canuse[255];
int n;
void putv(int x, int y) {
  memset(canuse, true, sizeof(canuse));
  for (int i = 0; i < 4; i++) {
    int nx = x + mx[i], ny = y + my[i];
    if (nx < 0 or ny < 0 or nx >= 4 or ny >= n) continue;
    canuse[board[nx][ny]] = false;
  }
  x++;
  for (int i = 0; i < 4; i++) {
    int nx = x + mx[i], ny = y + my[i];
    if (nx < 0 or ny < 0 or nx >= 4 or ny >= n) continue;
    canuse[board[nx][ny]] = false;
  }
  x--;
  for (int i = 'a'; i <= 'z'; i++) {
    if (canuse[i]) {
      board[x][y] = board[x + 1][y] = i;
      return;
    }
  }
  return;
}
void puth(int x, int y) {
  memset(canuse, true, sizeof(canuse));
  for (int i = 0; i < 4; i++) {
    int nx = x + mx[i], ny = y + my[i];
    if (nx < 0 or ny < 0 or nx >= 4 or ny >= n) continue;
    canuse[board[nx][ny]] = false;
  }
  y++;
  for (int i = 0; i < 4; i++) {
    int nx = x + mx[i], ny = y + my[i];
    if (nx < 0 or ny < 0 or nx >= 4 or ny >= n) continue;
    canuse[board[nx][ny]] = false;
  }
  y--;
  for (int i = 'a'; i <= 'z'; i++) {
    if (canuse[i]) {
      board[x][y] = board[x][y + 1] = i;
      return;
    }
  }
  return;
}
int main() {
  memset(board, 0, sizeof(board));
  cin >> n;
  if (n == 1) {
    printf("a\na\nb\nb\n");
    return 0;
  }
  if (n == 2) {
    printf("aa\nbb\ncc\ndd\n");
    return 0;
  }
  if (n % 2 == 0) {
    for (int i = 0; i < n; i += 2) {
      puth(0, i);
      puth(3, i);
    }
    putv(1, 0);
    for (int i = 1; i < n - 2; i += 2) {
      puth(1, i);
      puth(2, i);
    }
    putv(1, n - 1);
  } else {
    for (int i = 0; i < n - 1; i += 2) {
      puth(0, i);
      puth(1, i);
    }
    putv(0, n - 1);
    putv(2, 0);
    for (int i = 1; i < n; i += 2) {
      puth(2, i);
      puth(3, i);
    }
  }
  printf("%s\n", board[0]);
  printf("%s\n", board[1]);
  printf("%s\n", board[2]);
  printf("%s\n", board[3]);
  return 0;
}
