#include <bits/stdc++.h>
using namespace std;
vector<bool> visited(100005, false);
vector<long long> adj[100005];
vector<long long> parent(100005, -1);
long long ans1;
long long expo(long long x, long long n, long long M) {
  if (n == 0)
    return 1;
  else if (n % 2 == 0)
    return (expo((x * x) % M, n / 2, M)) % M;
  else
    return (x * expo((x * x) % M, (n - 1) / 2, M)) % M;
}
void dfs(long long v1) {
  visited[v1] = true;
  ans1++;
  if (adj[v1].size() == 0) return;
  for (long long j = 0; j < adj[v1].size(); j++) {
    if (!visited[adj[v1][j]]) dfs(adj[v1][j]);
  }
}
long long find(vector<long long> &parent, long long i) {
  while (parent[i] != i) {
    parent[i] = parent[parent[i]];
    i = parent[i];
  }
  return parent[i];
}
void Union(vector<long long> &parent, long long i, long long j) {
  long long x = find(parent, i);
  long long y = find(parent, j);
  parent[x] = y;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long i, j, k, a, b, c, t, x, y, n, m, z, flag = 0, ans = 0, sum = 0;
  t = 1;
  while (t--) {
    string st, s, t;
    cin >> n;
    x = n / 4;
    y = n % 4;
    st = "";
    for (i = 0; i < x; i++) st += "aabb";
    if (y) {
      if (y == 1)
        st += 'a';
      else if (y == 2)
        st += "aa";
      if (y == 3) st += "aab";
    }
    cout << st;
  }
  return 0;
}
