#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
#define M 1000002
int fac[12]={1,1};
void init()
{
int i;
for( i=2;i<=10;i++)
{
fac[i]=fac[i-1]*i;
}
}
int main()
{
int n;
init();
while(~scanf("%d",&n))
{
if(n<0)
break;
/*部分阶乘和 0的阶乘也要算 */
if(n==0){ printf("NO\n");continue;}
for(int i=9;i>=0;i--)
if(n>=fac[i])
n-=fac[i];
if(n==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
#include <cstdio>
#include <cstdlib>
using namespace std;
#define M 1000002
int fac[12]={1,1};
void init()
{
int i;
for( i=2;i<=10;i++)
{
fac[i]=fac[i-1]*i;
}
}
int main()
{
int n;
init();
while(~scanf("%d",&n))
{
if(n<0)
break;
/*部分阶乘和 0的阶乘也要算 */
if(n==0){ printf("NO\n");continue;}
for(int i=9;i>=0;i--)
if(n>=fac[i])
n-=fac[i];
if(n==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}