#include<bits/stdc++.h>
#define maxn 505
#define ll long long
using namespace std;
struct num
{
int a[5005],len;
void init(ll x)
{
memset(a,0,sizeof(a));len=0;
while(x)a[++len]=x%10,x/=10;
}
num operator * (num x)
{
num res;res.init(0);
for(int i=1;i<=len;i++)
{
int carry=0;
for(int j=1,t;j<=x.len;j++)
{
t=res.a[i+j-1];
res.a[i+j-1]=(a[i]*x.a[j]+carry+res.a[i+j-1])%10;
carry=(a[i]*x.a[j]+carry+t)/10;
}
res.a[i+x.len]=carry;
}
res.len=len+x.len;
while(res.len>0&&!res.a[res.len])res.len--;
return res;
}
void print(){for(int i=len;i>=1;i--)printf("%d",a[i]);printf(" ");}
}ans,K,N;
ll gcd(ll a,ll b){if(b==0)return a;return gcd(b,a%b);}
num ksm(num A,int k)
{
num res;res.init(1);
while(k)
{
if(k&1)res=res*A;
A=A*A;k>>=1;
}
return res;
}
int main()
{
int T;cin>>T;
while(T--)
{
int n,k,m;ll g=1,t;scanf("%d%d",&n,&k);m=n;t=1;
if(n>k){printf("0 1\n");continue;}
while(m>0&&g<gcd(t*k,k-n+1)&&t*k>0)g=gcd(k-n+1,t*k),m--,t=t*k;
N.init((k-n+1)/g);K.init(k+1);ans=ksm(K,n-1);ans=ans*N;ans.print();
K.init(k);N.init(t/g);ans=ksm(K,m);ans=ans*N;ans.print();printf("\n");
}
return 0;
}