#ifndef _GLIBCXX_NO_ASSERT #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if __cplusplus >= 201103L #include #include #include #include #include #include #include #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if __cplusplus >= 201103L #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif using namespace std; using i64 = int64_t; using vi = vector; using vvi = vector; constexpr i64 MOD = 1000000000; string construct(long long n, bool a, long long& res) { string ret = ""; long long l = 0, r = n + 1; while (l < r - 1) { long long m = (l + r) / 2; if (m * m <= n) { l = m; } else { r = m; } } for (int i = 0; i < 2 * l - 1; i++) { ret += ((i % 2 == 0) ^ a ? "a" : "b"); } res = n - l * l; return ret; } int main() { long long n; cin >> n; string ans; long long res = n; bool a = true; int hoge = 0; while (res) { ans += construct(res, a, res); a = !a; if (res > 0) { ans += 'c' + (hoge++ % 24); res--; } } cout << ans << endl; }