// Arup Guha
// 2/26/2023
// Solution to 2022 SER D1 Problem: Counting Satellites

/* I used Jacob Magnuson's idea of concatenating SATELLITE over
   and over again and padding extra S's to each S from left to right.
*/

using namespace std;

#include <iostream>
#include <string>
#include <vector>

typedef long long ll;

string s;

ll solve(int* repSize, int sz);

int main() {

    // I foumd out this was enough repetitions for any input case...
    s = "SATELLITE";
    string t = "";
    for (int i=0; i<201; i++)
        t = t + s;

    // dp[x] stores # of subsequences that are the first x letters of
    // SATELLITE.
    ll dp[10];
    for (int i=0; i<10; i++) dp[i] = 0;
    dp[0] = 1;

    vector<ll> rep;
    rep.push_back(0);

    // i is character being processed.
    for (int i=0; i<t.size(); i++) {

        // j is character we are adding.
        for (int j=9; j>=1; j--)
            if (t[i] == s[j-1])
                dp[j] += dp[j-1];

        // Stores answer for (i+1)/9 repetitions of SATELLITE
        if (i%9 == 8)
            rep.push_back(dp[9]);
    }

    // Get input.
    ll n;
    cin >> n;

    // Base size of string.
    int sz = rep.size();
    while (rep[sz-1] > n) sz--;
    sz--;

    // Store # of extra s's here.
    int* repSize = new int[sz];
    for (int i=0; i<sz; i++) repSize[i] = 9;

    // Fill out extra S's for copy i+1.
    for (int i=0; i<sz; i++) {

        // May as well try one extra.
        repSize[i]++;

        // Keep adding until we're equal or too big.
        while (solve(repSize,sz) < n) repSize[i]++;

        // Perfect!
        if (solve(repSize,sz) == n) break;

        // We went one too big, so subtract one.
        repSize[i]--;
    }

    // Easy enough to just print out...
    for (int i=0; i<sz; i++) {
        for (int j=0; j<repSize[i]-9; j++) cout << "S";
        cout << "SATELLITE";
    }
    cout << endl;

    return 0;
}

// Returns the # of SATELLITE subsequence.
ll solve(int* repSize, int sz) {

    // Set up DP same as above.
    ll dp[10];
    for (int i=0; i<10; i++) dp[i] = 0;
    dp[0] = 1;

    // I loop through repetitions instead of string characters.
    for (int i=0; i<sz; i++) {

        // Processing s's...
        for (int j=0; j<repSize[i]-8; j++) dp[1] += dp[0];

        // Processing "ATELLITE"
        for (int j=1; j<9; j++) {
            for (int z=9; z>=2; z--)
                if (s[j] == s[z-1])
                    dp[z] += dp[z-1];
        }
    }

    // Ta da!
    return dp[9];
}
