#include using namespace std; #define ALL(x) x.begin(),x.end() #define rep(i,n) for(int i=0;i<(n);i++) #define debug(v) cout<<#v<<":";for(auto x:v){cout<bool chmax(T &a,const T &b){if(abool chmin(T &a,const T &b){if(bn-r) r=n-r; if(r==0) return 1; ll a=1; //a=n!/(n-r)!=n~n-r+1までの総積->O(r) for(ll i=0;i>n>>k; if(n==k){ if(n==0) cout<<0< v; for(ll i=2;i*i<=n;i++)if(n%i==0){ ll x=i; if(k%x==0) v.push_back(x); if(x*x!=n){ x=n/i; if(k%x==0) v.push_back(x); } } sort(ALL(v)); // debug(v); vector dp(n+1,0); for(auto x:v){ ll a=n/x,b=k/x; dp[a]+=COM(a,b); dp[a]%=mod; for(int i=a+a;i<=n;i+=a){ dp[i]+=mod-COM(a,b); dp[i]%=mod; } } ll ans=0; for(auto x:v){ ans+=dp[n/x]; // cout<