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
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
#include<bits/stdc++.h>
#define fi first
#define se second
using namespace std;
const int MX=15e4;
const int N=1e4;
int dp[2][N+10];
int g[2][N+10];
void rep(string s,long long k)
{
	if(k==0)
		return;
	if(k==1)
	{
		cout<<s;
		return;
	}
	if(k<10)
	{
		if(s.size()==1)
			cout<<k<<s;
		else
			cout<<k<<"["<<s<<"]";
		return;
	}

	if(k>N)
	{
		cout<<"9[";
		rep(s,k/9);
		cout<<"]";

		if(k%9==0)
			return;
		if(k%9>1)
			cout<<k%9;
		if(s.size()==1)
			cout<<s;
		else
			cout<<"["<<s<<"]";
		return;
	}
	if(g[s.size()-1][k]<0)
	{
		cout<<-g[s.size()-1][k]<<"[";
		rep(s,k/(-g[s.size()-1][k]));
		cout<<"]";
	}
	else
	{
		rep(s,k-g[s.size()-1][k]);
		rep(s,g[s.size()-1][k]);
	}
	return;
}
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	long long n;
	cin>>n;
	for(int j:{0,1})
	{
		dp[j][1]=j+1;
		for(int i=2;i<=N;i++)
		{
			dp[j][i]=dp[j][i-1]+j+1;
			g[j][i]=1;
			for(int k=2;2*k<=i;k++)
			{
				if(dp[j][i-k]+dp[j][k]<dp[j][i])
				{
					dp[j][i]=dp[j][i-k]+dp[j][k];
					g[j][i]=k;
				}
			}
			for(int k=2;k<=9;k++)
			{
				if(i%k==0 && dp[j][i/k]+3<dp[j][i])
				{
					dp[j][i]=dp[j][i/k]+3;
					g[j][i]=-k;
				}
			}
			if(j==0 && i<=9)
			{
				g[j][i]=-i;
				dp[j][i]=2;
			}
		}
	}
	for(int i=n;i>=1;i--)
	{
		rep("D",i);
		rep("FB",i-1);
		cout<<"F";
	}
	rep("B",n);
	cout<<"\n";
	return 0;
}