#include <bits/stdc++.h>
using namespace std;
const int INF = (int)2E9;
const long long LINF = (long long)9E18;
const long double PI = acos(-1.0);
const long double EPS = 1E-11;
template <typename T>
inline T sqr(const T x) {
  return x * x;
}
template <typename T>
T gcd(T a, T b) {
  return (b == 0) ? a : gcd(b, a % b);
}
template <typename T>
T lcm(T a, T b) {
  return a / gcd(a, b) * b;
}
template <typename T>
T mod(T a, T b) {
  a %= b;
  if (a < 0) a += b;
  return a;
}
template <typename T>
inline T rad(const T x) {
  return x * PI / 180;
}
template <typename T>
inline string toString(T x) {
  ostringstream oss;
  oss << x;
  return oss.str();
}
inline long long toInt(const string& st) {
  istringstream istringstream(st);
  long long x;
  istringstream >> x;
  return x;
}
inline long double toDouble(const string& st) {
  istringstream istringstream(st);
  long double x;
  istringstream >> x;
  return x;
}
inline string toLower(string st) {
  for (int i = 0; i < (((int)(st).size())); ++i) st[i] = tolower(st[i]);
  return st;
}
inline string toUpper(string st) {
  for (int i = 0; i < (((int)(st).size())); ++i) st[i] = toupper(st[i]);
  return st;
}
const int dx[] = {-1, 0, 0, 1};
const int dy[] = {0, -1, 1, 0};
int DEBUG = false;
const char DEBUG_PARAM[] = "__LOCAL_TESTING";
const int MAXCLOCK = 100;
int aClock[MAXCLOCK], mClock[MAXCLOCK], nClock = 0, iClock = 0;
inline void tick(int maxTime = 10000) {
  if (DEBUG) {
    mClock[nClock] = maxTime;
    aClock[nClock++] = clock();
  }
}
inline void untick(string name = "Execution Time") {
  if (DEBUG) {
    int numClock = clock() - aClock[--nClock];
    cout << "@ " << name << ": ["
         << (int)((double)(numClock) / CLOCKS_PER_SEC * 1000) << " ms]";
    if (numClock > (int)(mClock[nClock]))
      cout << " [TLE]";
    else if (numClock > (int)(mClock[nClock] * 0.9))
      cout << " [almost TLE]";
    cout << endl;
  }
}
const char IN[] = "_.in";
const char OUT[] = "_.out";
int ntest = 1, test = 1;
int N;
inline void run() {
  for (test = 1; test <= ntest; ++test) {
    tick((int)2E3);
    cin >> N;
    if (N == 1) {
      cout << "a" << endl << "a" << endl << "b" << endl << "b" << endl;
    } else {
      if (N & 1) {
        int N2 = N / 2;
        for (int i = (1); i <= (N2); ++i) {
          if (i & 1) {
            cout << "aa";
          } else {
            cout << "bb";
          }
        }
        cout << "c" << endl;
        for (int i = (1); i <= (N2); ++i) {
          if (i & 1) {
            cout << "bb";
          } else {
            cout << "aa";
          }
        }
        cout << "c" << endl << "d";
        for (int i = (1); i <= (N2); ++i) {
          if (i & 1) {
            cout << "ee";
          } else {
            cout << "ff";
          }
        }
        cout << endl << "d";
        for (int i = (1); i <= (N2); ++i) {
          if (i & 1) {
            cout << "ff";
          } else {
            cout << "ee";
          }
        }
        cout << endl;
      } else {
        int N2 = N / 2;
        for (int i = (1); i <= (N2); ++i) {
          if (i & 1) {
            cout << "aa";
          } else {
            cout << "bb";
          }
        }
        cout << endl << "c";
        for (int i = (1); i <= (N2 - 1); ++i) {
          if (i & 1) {
            cout << "dd";
          } else {
            cout << "ee";
          }
        }
        cout << "f" << endl << "c";
        for (int i = (1); i <= (N2 - 1); ++i) {
          if (i & 1) {
            cout << "gg";
          } else {
            cout << "hh";
          }
        }
        cout << "f" << endl;
        for (int i = (1); i <= (N2); ++i) {
          if (i & 1) {
            cout << "ii";
          } else {
            cout << "kk";
          }
        }
        cout << endl;
      }
    }
    untick("#" + toString(test));
  }
}
int main(int argc, char* argv[]) {
  if (argc > 1 && strcmp(argv[1], DEBUG_PARAM) == 0) {
    DEBUG = true;
  }
  if (DEBUG) {
    tick((int)1E4);
    freopen(IN, "r", stdin);
  }
  run();
  if (DEBUG) {
    untick("TOTAL");
  }
  return 0;
}
