#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
using i64 = int64_t;
void solve();
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
int t=1;
cin>>t;
while(t--) {
solve();
}
return 0;
}
void solve() {
i64 n,k;cin>>n>>k;
vector<i64>a(n+1);
vector<pair<i64,i64> >v;
map<i64,i64>mp;
for(int i=1; i<=n; i+=1)cin>>a[i];
__int128 ans = 1;
for(int i=1; ans*k<=(i64)1e18; i+=1) {
ans *= k;
mp[ans] += 1;
if(i>1e6)break;
}
for(auto [k,vv] : mp) {
string s = to_string(k);
for(int i=0; i<=s.size(); i+=1) {
i64 fa = 0,ba = 0;
if(s[0] == '0')continue;
for(int j = 0; j < i && j < s.size(); j += 1)fa = fa * 10 + (s[j] - '0');
if(s[i] == '0')continue;
for(int j = i; j < s.size(); j += 1)ba = ba * 10 + (s[j] - '0');
if(fa && ba && fa <= n && ba <= a[fa])v.push_back({fa,ba});
}
}
sort(v.begin(),v.end(),[&](pair<i64,i64>a,pair<i64,i64>b) {
return a.first == b.first ? a.second < b.second : a.first < b.first;
});
cout<<v.size()<<'\n';
for(auto e : v)cout<<e.first<<" "<<e.second<<'\n';
}