#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef vector VI; typedef pair PII; #define REP(i,s,t) for(int i=(s);i<(t);i++) #define FILL(x,v) memset(x,v,sizeof(x)) const int INF = (int)1E9; const string P = "ETILLETAS"; #define B 198 #define C 8 ll cc[B][C]; int cnt[B]; int M[B]; int main() { REP(i,0,B) { M[i] = i ? 2 : 1; if (i) REP(j,0,C) cc[i][j] = cc[i-1][j]; REP(j,0,C) { REP(t,0,M[i]) { for (int k = C - 1; k >= 0; k--) { if (P[k] == P[j]) cc[i][k] += k ? cc[i][k - 1] : 1; } } } // { cerr << i << ": "; REP(j,0,C) cerr << cc[i][j] / 1e18 << " "; cerr << endl; } } ll k; cin >> k; for (int i = B - 1; i >= 0; i--) { if (k >= cc[i][C - 1]) { cnt[i] = k / cc[i][C - 1]; k %= cc[i][C - 1]; } } assert(k == 0); string ans = ""; ll eCnt = 0; REP(i,0,B) { REP(j,0,C) REP(k,0,M[i]) ans += P[j]; REP(j,0,cnt[i]) ans += P[C]; eCnt += cnt[i]; bool rem = false; REP(inxt,i+1,B) if (cnt[inxt]) rem = true; if (!rem) break; } ans += P.substr(C + 1); reverse(ans.begin(), ans.end()); cout << ans << endl; // cerr << ans.size() << " " << eCnt << endl; return 0; }