#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
const int N = 2e5, oo = 2e18, MOD = 1e9+7;
void add(string& a, string& b) {
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
int c = 0;
int i = 0;
auto get = [&](int i) {
if (i >= a.size()) return 0;
return (a[i] - '0');
};
auto add = [&](int i, int d) {
if (i >= a.size()) a.push_back(d + '0');
a[i] = d + '0';
};
for (; i < b.size(); i++) {
int s = get(i) + (b[i] - '0') + c;
c = s / 10;
add(i, s % 10);
}
// cout << c << ' ' << i << endl;
if (c) {
add(i, c + get(i));
}
reverse(a.begin(), a.end());
}
void solve() {
int c; cin >> c;
string n; cin >> n;
string s = "1", b = "1";
for (int i = 0; i < 1e3; i++) {
if (s == n) {
cout << "YES\n";
return;
}
string temp = s;
add(s, b);
b = temp;
}
cout << "NO\n";
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
// #ifndef ONLINE_JUDGE
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
// #endif
int t; t = 1;
// cin >> t;
while (t--) solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGVuZGwgICAgICdcbicKI2RlZmluZSBpbnQgICAgICBsb25nIGxvbmcKCmNvbnN0IGludCBOID0gMmU1LCBvbyA9IDJlMTgsIE1PRCA9IDFlOSs3OwoKCgp2b2lkIGFkZChzdHJpbmcmIGEsIHN0cmluZyYgYikgewogICAgcmV2ZXJzZShhLmJlZ2luKCksIGEuZW5kKCkpOwogICAgcmV2ZXJzZShiLmJlZ2luKCksIGIuZW5kKCkpOwogICAgaW50IGMgPSAwOwogICAgaW50IGkgPSAwOwogICAgYXV0byBnZXQgPSBbJl0oaW50IGkpIHsKICAgICAgICBpZiAoaSA+PSBhLnNpemUoKSkgcmV0dXJuIDA7CiAgICAgICAgcmV0dXJuIChhW2ldIC0gJzAnKTsKICAgIH07CgogICAgYXV0byBhZGQgPSBbJl0oaW50IGksIGludCBkKSB7CiAgICAgICAgaWYgKGkgPj0gYS5zaXplKCkpIGEucHVzaF9iYWNrKGQgKyAnMCcpOwogICAgICAgIGFbaV0gPSBkICsgJzAnOwogICAgfTsKICAgIGZvciAoOyBpIDwgYi5zaXplKCk7IGkrKykgewogICAgICAgIGludCBzID0gZ2V0KGkpICsgKGJbaV0gLSAnMCcpICsgYzsKICAgICAgICBjID0gcyAvIDEwOwogICAgICAgIGFkZChpLCBzICUgMTApOwogICAgfQogICAgLy8gY291dCA8PCBjIDw8ICcgJyA8PCBpIDw8IGVuZGw7CiAgICBpZiAoYykgewogICAgICAgIGFkZChpLCBjICsgZ2V0KGkpKTsKICAgIH0KCiAgICByZXZlcnNlKGEuYmVnaW4oKSwgYS5lbmQoKSk7Cgp9Cgp2b2lkIHNvbHZlKCkgewogICAgaW50IGM7IGNpbiA+PiBjOwogICAgc3RyaW5nIG47IGNpbiA+PiBuOwogICAgc3RyaW5nIHMgPSAiMSIsIGIgPSAiMSI7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxZTM7IGkrKykgewogICAgICAgIGlmIChzID09IG4pIHsKICAgICAgICAgICAgY291dCA8PCAiWUVTXG4iOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHN0cmluZyB0ZW1wID0gczsKICAgICAgICBhZGQocywgYik7CiAgICAgICAgYiA9IHRlbXA7CiAgICB9CiAgICBjb3V0IDw8ICJOT1xuIjsKfQoKCnNpZ25lZCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAogICAgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7CiAgICAvLyAjaWZuZGVmIE9OTElORV9KVURHRSAKICAgIC8vICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOyAKICAgIC8vICAgIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7IAogICAgLy8gI2VuZGlmIAogICAgaW50IHQ7IHQgPSAxOwogICAgLy8gY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0K