#include #define show(x) cerr << #x << " = " << x << endl using namespace std; using ll = long long; using pii = pair; using vi = vector; template ostream& operator<<(ostream& os, const vector& v) { os << "sz=" << v.size() << "\n["; for (const auto& p : v) { os << p << ","; } os << "]\n"; return os; } template ostream& operator<<(ostream& os, const pair& p) { os << "(" << p.first << "," << p.second << ")"; return os; } constexpr ll MOD = 1e9 + 7; template constexpr T INF = numeric_limits::max() / 100; int main() { cin.tie(0); ios::sync_with_stdio(false); ll N; cin >> N; vector ind; for (int i = 0; i < 64; i++) { if (N & (1LL << i)) { ind.push_back(i); } } for (int i = ind.size() - 1; i >= 1; i--) { ind[i] -= ind[i - 1]; if (i != ind.size() - 1) { ind[i]++; } } show(ind); string st; for (int i = 0; i < ind.size(); i++) { const int cnt = ind[i]; for (int j = 0; j < cnt; j++) { st.push_back('a' + i); } } cout << st << (char)('a' + ind.size()); reverse(st.begin(), st.end()); cout << st << endl; return 0; }