#include<bits/stdc++.h>
using namespace std;
int dis[1005][1005],n,m,h;
int beforex[1005][1005],beforey[1005][1005],_goto[1005][1005];
void bfs(){
queue<int>qx,qy;
qx.push(0),qy.push(0);
dis[0][0]=0;
while(!qx.empty()){
int x=qx.front(),y=qy.front();
qx.pop(),qy.pop();
if(x!=n&&dis[n][y]==-1){
dis[n][y]=dis[x][y]+1;
qx.push(n),qy.push(y);
beforex[n][y]=x,beforey[n][y]=y,_goto[n][y]=1;
}
if(y!=m&&dis[x][m]==-1){
dis[x][m]=dis[x][y]+1;
qx.push(x),qy.push(m);
beforex[x][m]=x,beforey[x][m]=y,_goto[x][m]=2;
}
if(x!=0&&dis[0][y]==-1){
dis[0][y]=dis[x][y]+1;
qx.push(0),qy.push(y);
beforex[0][y]=x,beforey[0][y]=y,_goto[0][y]=3;
}
if(y!=0&&dis[x][0]==-1){
dis[x][0]=dis[x][y]+1;
qx.push(x),qy.push(0);
beforex[x][0]=x,beforey[x][0]=y,_goto[x][0]=4;
}
if(x!=0&&y!=m){
int dl=min(x,m-y);
int nx=x-dl,ny=y+dl;
if(dis[nx][ny]==-1){
dis[nx][ny]=dis[x][y]+1;
qx.push(nx),qy.push(ny);
beforex[nx][ny]=x,beforey[nx][ny]=y,_goto[nx][ny]=6;
}
}
if(y!=0&&x!=n){
int dl=min(y,n-x);
int nx=x+dl,ny=y-dl;
if(dis[nx][ny]==-1){
dis[nx][ny]=dis[x][y]+1;
qx.push(nx),qy.push(ny);
beforex[nx][ny]=x,beforey[nx][ny]=y,_goto[nx][ny]=5;
}
}
}
}
int main(){
ios::sync_with_stdio(false);
int T;
cin>>T;
while(T--){
cin>>n>>m>>h;
memset(dis,-1,sizeof(dis));
memset(beforex,0,sizeof(beforex));
memset(beforey,0,sizeof(beforey));
memset(_goto,0,sizeof(_goto));
bfs();
int minn=INT_MAX,x,y;
for(int i=0;i<=n;i++)
if(dis[i][h]!=-1)
if(minn>dis[i][h]&&_goto[i][h]){
minn=dis[i][h];
x=i,y=h;
}
printf("%d ",minn);
vector<int>vec;
while(x!=0||y!=0){
vec.push_back(_goto[x][y]);
int lj=beforex[x][y],lz=beforey[x][y];
x=lj,y=lz;
}
for(int i=vec.size()-1;i>=0;i--)cout<<vec[i]<<" ";
cout<<"\n";
}
return 0;
}