#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; //make_tuple emplace_back next_permutation #define REP(i,n) for(int (i)=0; (i)<(n) ;++(i)) #define REPN(i,a,n) FOR((i),(a),(a)+(n)) #define FOR(i,a,b) for(int (i)=(a); (i)<(b) ;++(i)) #define PB push_back #define MP make_pair #define SE second #define FI first #define DBG(...) string s999;s999=#__VA_ARGS__;replace(ALL(s999),',',' ');stringstream ds999; ds999<void debug(stringstream& ds,const F& f, const R&... r){string n; ds>>n; cerr<< n <<' '< PLL; typedef vector VLL; typedef pairPI; typedef vector VI; const LL LINF=334ll<<53; const int INF=15<<26; const LL MOD=1E9+7; VLL divisor; LL n,x; map,int> dp; void pre(long long k){ for(long long i=2; ;++i){ if(i*i>k){ break; } if(k%i==0){ divisor.push_back(i); if(i*isecond; } if(a==n-1){ if(x/p>=m and x%(x/p)==0) return 1; else return 0; } for(auto it = lower_bound(ALL(divisor),m); it> n >> x; ++x; pre(x); sort(ALL(divisor)); cout << calc(0,0,1)<