#include <iostream>
#include <cstdio>
#include <set>
using namespace std;
int main(){
int factorial[10] = {1,1,2,6,24,120,720,5040,40320,362880};
set<int> possible;
possible.insert(0);
for(int j=0;j<10;j++){
set<int> tmp;
set<int>::iterator it;
for(it=possible.begin();it!=possible.end();it++){
tmp.insert(*it+factorial[j]);
}
for(it=tmp.begin();it!=tmp.end();it++){
possible.insert(*it);
}
}
possible.erase(0);
int n;
while(scanf("%d",&n)!=EOF){
if(n<0) break;
if(possible.count(n)>0) printf("YES\n");
else printf("NO\n");
}
return 0;
}