Karl likes Codeforces and subsequences. He wants to find a string of lowercase English letters that contains at least kk subsequences codeforces. Out of all possible strings, Karl wants to find a shortest one.
Formally, a codeforces subsequence of a string ss is a subset of ten characters of ss that read codeforces from left to right. For example, codeforces contains codeforces a single time, while codeforcesisawesome contains codeforces four times: codeforcescisawesome, codeforcecsiscawesome, codeforcecsisawescome, codeforccesisawescome.
Help Karl find any shortest string that contains at least kk ccodeforces subsequences.

Input

The only line contains a single integer kk (1k1016)(1≤k≤10^{16}).

Output

Print a shortest string of lowercase English letters that contains at least kk ccodeforces subsequences. If there are several such strings, print any of them.

Examples

input

1
1

output

1
codeforces

input

1
3

output

1
codeforcesss

Translation

找到包含 kk 个形如 codeforces 子序列的最短字符串 ss,若有多个可行方案,输出任意一个。

Idea

贪心地想,显然我们发现形如 s=s=ccccooddddfffoorrrcccceess 的情况下肯定是最优的,这样构造非常节省需要添加的字母个数。codeforces 一个 1010 个字母,不妨设第 ii 个位置的字母在 ss 中连续出现次数为 xix_i,那么包含的 codeforces 子序列个数有 i=110xi\prod\limits_{i=1}^{10}x_i;题目要求 i=110xik\prod\limits_{i=1}^{10}x_i\ge k,且 i=110xi\sum\limits_{i=1}^{10}x_i 尽量小。
由均值不等式 i=110xi2(i=110xi)1102k110\sum\limits_{i=1}^{10}x_i\ge2\cdot\left(\prod\limits_{i=1}^{10}x_i\right)^{\frac{1}{10}}\ge2\cdot k^{\frac{1}{10}},当且仅当 x1=x2==x10x_1=x_2=\cdots=x_{10} 时取等号。我们的任务是使得 x1,x2,,x10x_1,x_2,\cdots,x_{10} 尽量平均。不妨先取 x1=x2==x10=k10x_1=x_2=\cdots=x_{10}=\lfloor\sqrt[10]k\rfloor,然后根据条件 i=110xik\prod\limits_{i=1}^{10}x_i\ge k,不断试探,依次将 x1,x2,,x10x_1,x_2,\cdots,x_{10} 增加 11,直到满足条件。

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/******************************************************************
Copyright: 11D_Beyonder All Rights Reserved
Author: 11D_Beyonder
Problem ID: CF1368B
Date: 01/13/2020
Description: Constructive, Greedy, String, Math
*******************************************************************/
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
typedef long double lb;
const char* s="$codeforces$";
int main(){
ll k;
cin>>k;
ll per=powl(lb(k),0.1);
int pos=10;
for(int i=0;i<=10;i++){
if(ll(pow(per+1,i))*ll(pow(per,10-i))>=k){
//找到1~pos位置的字符需要重复per+1次
pos=i;
break;
}
}
//输出
for(int i=1;i<=pos;i++){
for(int j=1;j<=per+1;j++){
cout<<s[i];
}
}
for(int i=pos+1;i<=10;i++){
for(int j=1;j<=per;j++){
cout<<s[i];
}
}
return 0;
}