#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/stack:16000000")
#pragma warning(disable : 4996)
const int inf = 1 << 25;
const double eps = 1e-9;
int di[] = {-1, 1, 0, 0};
int dj[] = {0, 0, 1, -1};
void place(vector<string>& a, int i, int j, bool hor) {
  int i1 = i, j1 = j;
  if (hor)
    ++j1;
  else
    ++i1;
  int n = a[0].size();
  if (i1 >= 4 || i1 < 0 || j1 >= n || j1 < 0) return;
  pair<int, int> b[] = {pair<int, int>(i, j), pair<int, int>(i1, j1)};
  set<int> adj;
  for (int k = (0); k < (2); ++k) {
    int i = b[k].first, j = b[k].second;
    for (int t = (0); t < (4); ++t) {
      int ni = i + di[t];
      int nj = j + dj[t];
      if (ni < 0 || ni >= 4 || nj < 0 || nj >= n || a[ni][nj] == '#') continue;
      adj.insert(a[ni][nj] - 'a');
    }
  }
  int color = 0;
  for (int i = (0); i < (26); ++i)
    if (!adj.count(i)) {
      color = i;
      break;
    }
  a[i][j] = a[i1][j1] = 'a' + color;
}
int main() {
  int n;
  cin >> n;
  vector<string> a(4, string(n, '#'));
  if (n & 1) {
    for (int j = 2; j < n; j += 2) {
      place(a, 0, j - 2, true);
      place(a, 1, j - 2, true);
      place(a, 2, j - 1, true);
      place(a, 3, j - 1, true);
    }
    place(a, 0, n - 1, false);
    place(a, 2, 0, false);
  } else {
    for (int j = 0; j < n; j += 2) {
      place(a, 0, j, true);
      place(a, 3, j, true);
      place(a, 1, j + 1, true);
      place(a, 2, j + 1, true);
    }
    place(a, 1, 0, false);
    place(a, 1, n - 1, false);
  }
  for (int i = (0); i < (4); ++i) cout << a[i] << endl;
  return 0;
}
