#include<bits/stdc++.h>
using namespace std;
/*
一个数学家,创造了一个重要的贡献
有一些数字可以由阶乘的和表示
这位数学家表示很感兴趣,因此他给了你一个数字n
希望你判断是否可以由阶乘的和表示n
是否存在xi,有xi的阶乘的和=n
*/
int factorials(int k)//返回k!
{
int ans=1;
for(int i=2;i<=k;i++)
{
ans*=i;
}
return ans;
}
int sum_factorials(int j,int k,vector<int>v)
{
int ans=0;
ans=accumulate(v.begin()+j,v.begin()+k+1,0);
return ans;
}
int main(){
int n;
while(cin>>n)
{
int sum=0;
//int l=0,r=1;
vector<int>v(11);//存放阶乘
for(int i=0;i<v.size();i++)
{
v[i]=factorials(i);
}
int flag=0;
for(int i=10;i>=0;i--){
if(n>=v[i]){
n-=v[i];
}
}
if(n!=0)
{
cout<<"NO"<<endl;
}
else cout<<"YES"<<endl;
}
return 0;
}