T3 68pts
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,k;
int a[30000005];
int cnt;
struct node
{
int d1,d2;
}ans[30000005];
bool cmp(node x,node y)
{
if(x.d1==y.d1) return x.d2<y.d2;
return x.d1<y.d1;
}
string s,ss;
int num1,num2,len,numm,num;
void check(int k)
{
num=1;
while(num<=(int)3000001000000000){
num*=k;
s=to_string(num);
len=s.length();
for(int i=0;i<len-1;i++){
num1=0,num2=0;
for(int j=0;j<=i;j++) num1=num1*10+(s[j]-'0');
for(int j=i+1;j<len;j++) num2=num2*10+(s[j]-'0');
if(num1<=n){
if(num2<=a[num1]){
ss=to_string(num2);
numm=num1*pow(10,ss.length())+num2;
if(numm==num) ans[++cnt].d1=num1,ans[cnt].d2=num2;
}
}
}
}
}
main()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int t;
cin>>t;
while(t--){
cin>>n>>k;
cnt=0;
for(int i=1;i<=n;i++) cin>>a[i];
if(k>1) check(k);
else{
cout<<"0\n";
continue;
}
cout<<cnt<<"\n";
sort(ans+1,ans+1+cnt,cmp);
for(int i=1;i<=cnt;i++) cout<<ans[i].d1<<" "<<ans[i].d2<<"\n";
}
return 0;
}