#include<bits/stdc++.h>
using namespace std;

char infile[100], outfile[100];

int A[100100];
int f(int n){
    if(n==1) return 0;
    if(A[n]>0) return A[n];
    int i, m = 10000000;
    for(i=2;i*i<=n;i++){
        if(n%i==0){
            if((n/i)%2==1) m = min(m,f(i));
            if(i%2==1) m = min(m,f(n/i));
        }
    }
    m = min(m,f(n-1));
    return A[n]=m+1;
}
int main(){
    int n, i, m, a,k,T,I,j;
    scanf("%lld",&T);
	srand(time(NULL));
	for(I=1;I<=T;I++){
        sprintf(infile, ".%d.in", I);
        freopen(infile, "w", stdout);
	    scanf("%d %d", &n, &m);
	    printf("%d %d\n", n, m);
	    k = 0;
	    for(i=1;i<=n;i++)A[i]=0;
	    for(i=0;i<m;i++){
	    	for(j=3;j<n and i<m and k==0;j++){
				if(n%j==0){
	    			printf("%d ", j);
	    			//scanf("%d",&a);
	    			A[j] = 10000000;
	    			i++;
				}
			}
			k = 1;
	    	a = rand()%n+1;
	    	printf("%d ", a);
	    	A[a] = 10000000;
		} 
	    for(i=1;i<=n;i++){
	        f(i);
	    }
	    sprintf(outfile, ".%d.out", I);
        freopen(outfile, "w", stdout);
	    if(A[n]<10000000) printf("%d",A[n]);
	    else printf("-1\n");
	}
}

