#include<iostream>#include<vector>usingnamespace std;constint N =5500;int prime[N], sum[N], tot;bool st[N];voidget_prime(int n){for(int i =2;i <= n;i ++){if(!st[i]) prime[tot ++]= i ;for(int j =0; j < tot && i * prime[j]<= n ;j ++){
st[i * prime[j]]=true;if(i % prime[j]==0)break;}}return;}intget(int a ,int p){int sum =0;while(a){
sum += a / p ;
a /= p ;}return sum ;}
vector<int>muti(vector<int> a ,int b){int t =0;
vector<int> res ;for(int i =0;i < a.size();i ++){
t += a[i]* b ;
res.push_back(t %10);
t /=10;}while(t){
res.push_back(t %10);
t /=10;}return res ;}intmain(){int a , b ;
cin >> a >> b ;get_prime(a);for(int i =0; i < tot ;i ++){int p = prime[i];
sum[i]=get(a,p)-get(b,p)-get(a-b , p);}
vector<int> res;
res.push_back(1);for(int i =0;i < tot ; i ++)for(int j =0; j < sum[i];j ++)
res =muti(res, prime[i]);for(int i = res.size()-1;i >=0;i --)
cout << res[i];
cout << endl ;return0;}