P6091
#include<bits/stdc++.h>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int N = 1e6+5;
vector<ll> p;
bool inp[N+5],ihg[N+5];
ll phi[N+5];
void init(){
phi[1]=1;inp[1]=1;
ihg[2]=ihg[4]=2;
for(ll i=2;i<=N;i++){
if(!inp[i])p.push_back(i),phi[i]=i-1,ihg[i]=1;
for(ll pi:p){
if(pi*i>N)break;
phi[pi*i] = (pi-(i%pi!=0))*phi[i];
inp[pi*i] = 1;
if(ihg[i] && i%pi==0 && pi!=2)ihg[i*pi]=1;
if(ihg[i] && pi==2 && i%2!=0)ihg[i*pi]=1;
if(i%pi==0)break;
}
}
return;
}
ll ksm(ll a,ll b,ll p){
ll pow=a,ans=1;
while(b){
if(b&1)ans=ans*pow%p;
pow = pow*pow%p;
b>>=1;
}
return ans;
}
vector<ll> fenjie(int x){
vector<ll> vl;
for(int i=0;x!=1 && inp[x];i++){
if(x%p[i]!=0)continue;
while(x%p[i]==0)x/=p[i];
vl.push_back(p[i]);
}
if(x!=1)vl.push_back(x);
return vl;
}
int main(){
init();
int T;cin>>T;
while(T--){
ll n,d,mg;
cin>>n>>d;
if(!ihg[n]){
printf("0\n\n");
continue;
}
if(n==2){
printf("1\n1\n");
continue;
}
printf("%d\n",phi[phi[n]]);
vector<ll> pv=fenjie(phi[n]),gen;
for(int i=2;1;i++){
int fl=0;
if(__gcd(i*1ll,n)!=1)continue;
for(auto pp : pv){
if(ksm(i,phi[n]/pp,n)==1){fl=1;break;}
}
if(!fl){mg=i;break;}
}
for(int t=mg,i=1;t%n!=1;t=t*mg%n,i++){
if(__gcd(i*1ll,phi[n])==1)gen.push_back(t);
}
sort(gen.begin(),gen.end());
for(int i=d;i<=gen.size();i+=d)cout<<gen[i-1]<<" ";
cout<<"\n";
}
}