#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:10000000")
using namespace std;
template <typename T>
inline T abs(T a) {
  return ((a < 0) ? -a : a);
}
template <typename T>
inline T sqr(T a) {
  return a * a;
}
const int INF = (int)1E9 + 7;
const long double EPS = 1E-9;
const long double PI = 3.1415926535897932384626433832795;
int n;
int main() {
  cin >> n;
  if (n == 1) {
    cout << "a\na\nb\nb\n" << endl;
    exit(0);
  }
  vector<vector<int> > ans(4, vector<int>(n, -1));
  if (n % 2 == 0) {
    for (int i = 0; i < int(n); ++i)
      ans[0][i] = ans[3][i] = ((i / 2) & 1) ? 0 : 1;
    ans[1][0] = ans[2][0] = 2;
    ans[1][n - 1] = ans[2][n - 1] = 3;
    for (int ci = 0; ci < int(2); ++ci) {
      int i = ci + 1;
      int startCol = ci ? 5 : 20;
      for (int j = 1; j < n && j + 1 < n; j += 2) {
        ans[i][j] = ans[i][j + 1] = startCol;
        if (((j - 1) / 2) & 1) ans[i][j]++, ans[i][j + 1]++;
      }
    }
  } else {
    ans[0][0] = ans[1][0] = 0;
    ans[2][n - 1] = ans[3][n - 1] = 1;
    for (int i = 0; i < int(4); ++i) {
      int startJ = i < 2 ? 1 : 0;
      int startCol = 2 + i * 4;
      for (int j = startJ; j < n && j + 1 < n; j += 2) {
        ans[i][j] = ans[i][j + 1] = startCol;
        if (((j - startJ) / 2) & 1) ans[i][j]++, ans[i][j + 1]++;
      }
    }
  }
  for (int i = 0; i < int(int((ans).size())); ++i)
    for (int j = 0; j < int(int((ans[i]).size())); ++j)
      cout << char(ans[i][j] + 'a')
           << (j == int((ans[i]).size()) - 1 ? "\n" : "");
  return 0;
}
