#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; using namespace atcoder; typedef long long ll; typedef pair P; int main() { int T; cin>>T; while(T--){ ll s, t; cin>>s>>t; if(16*s*s%t!=0){ cout<<0< mp; ll s1=s, t1=t; for(ll p=2; p*p<=s1; p++){ if(s1%p==0){ while(s1%p==0){ s1/=p; mp[p]+=2; } } } if(s1>1) mp[s1]+=2; mp[2]+=4; for(ll p=2; p*p<=t1; p++){ if(t1%p==0){ while(t1%p==0){ t1/=p; mp[p]--; } } } if(t1>1) mp[t1]--; vector

f; for(auto p:mp) f.push_back(p); vector v; auto dfs=[&](auto dfs, ll x, int k)->void{ if(k==f.size()){ if(t>x && (t-x)%2==0){ v.push_back(x); } return; } ll p=f[k].first, x1=x; for(int i=0; i<=f[k].second; i++){ if(x1, ll>> ans; for(auto x:v){ for(auto y:v){ if(u/x%y!=0 || (t-u/x/y)%2!=0) continue; ll a=(t-x)/2, b=(t-y)/2, c=(t-u/x/y)/2; if(c>0 && a+b+c==t && a<=b && b<=c && c<=1000000000){ ans.push_back({{a, b}, c}); } } } cout<