#include <iostream>
#include <cstdio>
#include <vector>
#include <map>
#include <string>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
using namespace std;

typedef unsigned long long ll;

// v[i] := iが偶数のときは i/2 + 1桁とi/2 + 2桁 の15個の数字のFizzBuzzStringの文字数
// v[i] := iが奇数のときは i/2+2 桁のFizzBuzzStringの文字数
vector<ll> v;
// m[i] := i に対応する 10^x 未満の最大の15^x + 1を返す.
map<int,ll> m;

//stinrg -> ll
ll s_to_i(string s){
	ll n = 0;
	for(ll i=0 ; i < s.size() ; i++ ){
		n *= 10;
		n += s[i] - '0';
	}
	return n;
}

// ll -> string
string i_to_s(ll n){
	string s;
	do{
		s.push_back((n%10)+'0');
		n /= 10;
	}while( n != 0 );
	
	reverse(s.begin(),s.end());
	return s;
}

/// [a,a+14] までのFizzBuzzStringを返す. (a は 15^x + 1)
string get_fb(ll a){
	string res;
	for(ll i=a ; i < a+15 ; i++ ){
		if( i % 3 == 0 && i % 5 == 0 ){
			res += "FizzBuzz";
		}else if( i % 3 == 0 ){
			res += "Fizz";
		}else if( i % 5 == 0 ){
			res += "Buzz";
		}else{
			res += i_to_s(i);
		}
	}
	return res;
}

// 10^x を返す
ll pow10(int x){
	ll res = 1;
	for(int i=0 ; i < x ; i++ ){
		res *= 10ull;
	}
	return res;
}

// k を超えない最大の(32 + 8*d) * x を返す. (d は桁数, x についての二分探索)
ll search(ll k, ll d, ll& x){
	ll low = 0, high = 1e+17;
	while( high - low > 1 ){
		ll mid = (low + high) / 2;
		ll n = (32 + 8*d) * mid;
		if( n < k ){
			low = mid;
		}else{
			high = mid;
		}
	}
	ll a = (32 + 8*d) * low;
	ll b = (32 + 8*d) * high;
	if( b <= k ){
		x = high;
		return b;
	}
	x = low;
	return a;
}

// FizzBuzzString の k 文字目を返す.
char get_ch(ll k){
	
	char res;
	//ll y=0;
	for(int i=0 ; i < v.size() ; i++ ){
		//cout << "v[i]:" << v[i] << endl;
		//cout << "k < v[i]:" << (k < v[i]) << endl;
		if( k < v[i]  ){ // v[i] のところに答えがある 
			
			if( i % 2 == 0 ){ // 桁の変わる中間のとき
				// m[i]から15個分の数字のFizzBuzzStringをたどる
				string s = get_fb( m[i] );
				for(int i=0 ; i < s.size() ; i++ ){
					//cout << "k:" << k << endl;
					if( k == 0 ){
						return res = s[i];
					}
					k--;
				}
			}else{
				// k+y を超えない最大の(32 + 8*d) * x を返す.
				ll x;
				ll n = search(k, i/2+2, x);
				//cout << "k:" << k << " n:" << n << " x:" << x << endl;
				k = k - n;
				ll b = (m[i-1]+15) + 15 * x;
				//cout << "i:" << i << " m[i] : " << m[i] << endl;
				//cout << "b:" << b << endl;
				// bから15個分の数字のFizzBuzzStringをたどる
				string s = get_fb( b );
				for(int i=0 ; i < s.size() ; i++ ){
					if( k == 0 ){
						return res = s[i];
					}
					k--;
				}
			}
		}else{ // 次に進める
			k = k - v[i];
			//y += v[i];
		}
	}
	return res;
}

int main(){
	ll k;
	cin >> k;
	
	for(int i=2 ; i < 18 ; i++ ){
		// 10^i 未満で最大の 15^x + 1(= a) を求める
		ll a;
		for(ll j = pow10(i-1)-1 ; ; j-- ){
			if( j % 15 == 1 ){
				a = j;
				break;
			}
		}
		// a .. a+14 までのFizzBuzzの文字数を実際に生成して求める.
		string s = get_fb(a);
		//cout << s << endl;
		v.push_back( s.size() );
		//cout << "a:" << a << " i:" << v.size()-1 << endl;
		m[v.size()-1] = a;
		
		// i 桁のFizzBuzzStringの長さを求める. (桁数の変わる境界部分は除く)
		// 数字 15個のかたまりが b 個ある
		ll b = (pow10(i) - (a+15)) / 15;
		// 15個の長さは FizzとBuzzで32文字, 桁数 i の数字が8個なので 32 + 8*i
		ll len = b * (32 + 8 * i);
		v.push_back( len );
	}
	for(ll i=k ; i < k+20 ; i++ ){
		cout << get_ch(i-1);
	}
	//cout << get_ch(k-1);
	cout << endl;
}

Measured memory_bytes: 1224