#include #include #include using namespace std; using namespace atcoder; using mint = modint1000000007; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 2000000001 #define Inf64 4000000000000000001LL int main(){ long long N,M; cin>>N>>M; if(M<=2){ if(1%N==0){ cout<<2<> t(1,{1%N,1%N}); while(true){ long long x = t.back().second; long long y = x + t.back().first; y %= N; if(x==1%N&&y==1%N)break; t.push_back({x,y}); } map mp; rep(i,t.size()){ mp[t[i].first] += M / t.size(); } rep(i,M % t.size()){ mp[t[i].first] ++; } mp[t[0].first] --; long long ans = 0; for(auto a:mp){ long long v = a.second; ans += v * (v-1) / 2; } { long long tt = M - 2; if(t[tt%t.size()].first == 0)ans++; } { long long tt = M - 1; if(t[tt%t.size()].first == 0){ ans ++; if(M>=3)ans++; } } cout<