#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #pragma GCC optimize("O3") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") #pragma comment(linker, "STACK:36777216") using namespace std; using i64 = int64_t; using i128 = __int128_t; constexpr i64 MOD = 1e9 + 7; mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); using vi = vector; using vvi = vector; using vvvi = vector; using ii = pair; int main() { int n; cin >> n; n--; deque ans = {'a'}; string b = ""; while (n) { b += '0' + (n & 1); n >>= 1; } reverse(b.begin(), b.end()); for (int i = 0; i < b.size(); i++) { if (b[i] == '1') { auto other = [](char a) { return a == 'a' ? 'b' : 'a'; }; ans.push_front(other(ans.front())); ans.push_back(other(ans.back())); } if (i != b.size() - 1) { ans.push_front(ans.front()); ans.push_back(ans.back()); } } for (int i = 0; i < ans.size() - 1; i++) { cout << ans[i]; } cout << ans.back() << endl; }