Problem: Welcome to CODE FESTIVAL 2016! In order to celebrate this contest, find a string s that satisfies the following conditions:

* The length of s is between 1 and 5000, inclusive.
* s consists of uppercase letters.
* s contains exactly K occurrences of the string "FESTIVAL" as a subsequence. In other words, there are exactly K tuples of integers (i_0, i_1, ..., i_7) such that 0 ≤ i_0 < i_1 < ... < i_7 ≤ |s|-1 and s[i_0]='F', s[i_1]='E', ..., s[i_7]='L'.



It can be proved that under the given constraints, the solution always exists. In case there are multiple possible solutions, you can output any.

Constraints

* 1 ≤ K ≤ 10^{18}

Input

The input is given from Standard Input in the following format:


K


Output

Print a string that satisfies the conditions.

Examples

Input

7


Output

FESSSSSSSTIVAL


Input

256


Output

FFEESSTTIIVVAALL

Solution (in CPP):

Solution:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cmath>
#include <iomanip>
#include <cassert>
#include <bitset>
using namespace std;

typedef pair<int, int> P;
#define rep(i, n) for (int i=0; i<(n); i++)
#define all(c) (c).begin(), (c).end()
#define uniq(c) c.erase(unique(all(c)), (c).end())
#define index(xs, x) (int)(lower_bound(all(xs), x) - xs.begin())
#define _1 first
#define _2 second
#define pb push_back
#define INF 1145141919
#define MOD 1000000007

long long K;

long long C[9];
long long f(string &S) {
  rep(i, 9) C[i] = 0;
  C[0] = 1;
  for (char c : S) {
    if (c == 'F') C[1] += C[0];
    else if (c == 'E') C[2] += C[1];
    else if (c == 'S') C[3] += C[2];
    else if (c == 'T') C[4] += C[3];
    else if (c == 'I') C[5] += C[4];
    else if (c == 'V') C[6] += C[5];
    else if (c == 'A') C[7] += C[6];
    else C[8] += C[7];
  }
  return C[8];
}

signed main() {
  ios::sync_with_stdio(false); cin.tie(0);
  cin >> K;
  string S;
  rep(_, 500) S += "FESTIVA";
  while (f(S) < K) {
    int lo = 0, hi = S.length();
    while (hi-lo > 1) {
      int mid = (lo+hi) / 2;
      string T = S.substr(0, mid)+'L'+S.substr(mid, S.length()-1);
      if (f(T) <= K) lo = mid;
      else hi = mid;
    }
    S = S.substr(0, lo)+'L'+S.substr(lo, S.length()-1);
  }
  assert(f(S) == K);
  cout << S << "\n";
  return 0;
}