#include #include using mint = atcoder::static_modint<998244353>; //using mint = atcoder::static_modint<1000000007>; using namespace std; using namespace atcoder; using ld = long double; using ll = long long; #define mp(a,b) make_pair(a,b) #define rep(i,s,n) for(int i=s; i dx{1,0,-1,0},dy{0,1,0,-1}; const int m=5000000; vector factorial(m,1),invfactorial(m,1); mint combi(int n,int r){ if(0<=r && r<=n)return factorial[n]*invfactorial[r]*invfactorial[n-r]; else return 0; } int main(){ int Q; cin >> Q; rep(i,1,m)factorial[i]=factorial[i-1]*i,invfactorial[i]=factorial[i].inv(); int cnt=0; vector ans; rep(q,0,Q){ int a,b; cin >> a>> b; for(int i=2; i*i<=a; i++)if(a%i==0){ while(a%i==0)cnt++,a/=i; } if(a>1)cnt++; //cout << cnt << "\n"; ans.push_back(combi(cnt-1,b-1)); } for(auto x:ans)cout << x.val() << "\n"; }