#include<iostream>
#include<map>
#include<queue>
#include<vector>
using namespace std;
int ca, cb, L;
int n;
typedef pair<int, int> PII;
#define x first
#define y second
const int N = 1e3 + 10;
//队列扩展一次就是当前的最短路线
void bfs(int a, int b, int id)
{
map<PII, vector<int>>step;
queue<PII>q;
q.push({ a,b });
map<PII, int>dist;
dist[{a, b}] = 0;
while (q.size())
{
auto t = q.front();
q.pop();
if (t.y == L)
{
cout << dist[{t.x, t.y}] << ' ';
for (auto s : step[{t.x, t.y}])
{
cout << s << ' ';
}
cout << endl;
return;
}
int a = t.x, b = t.y;//该点向六个方向进行扩展
if (a != ca)
{
step[{ca, b}] = step[{a, b}];
step[{ca, b}].push_back(1);
if (!dist.count({ ca,b }))
{
q.push({ ca,b });
dist[{ca, b}] = dist[{a, b}] + 1;
}
}
if (b != cb)
{
step[{a,cb}] = step[{a, b}];
step[{ a,cb }].push_back(2);
if (!dist.count({ a,cb }))
{
q.push({ a,cb });
dist[{a, cb}] = dist[{a, b}] + 1;
}
}
if (a != 0)
{
step[{0, b}] = step[{a, b}];
step[{0,b }].push_back(3);
if (!dist.count({ 0,b }))
{
q.push({ 0,b });
dist[{0, b}] = dist[{a, b}] + 1;
}
}
if (b != 0)
{
step[{a, 0}] = step[{a, b}];
step[{a,0 }].push_back(4);
if (!dist.count({ a,0 }))
{
q.push({ a,0 });
dist[{a, 0}] = dist[{a, b}] + 1;
}
}
if (b != 0&&a != ca)
{
int s, t;
if (b > ca - a)
{
t = b - ca + a;
s = ca;
}
else
{
s = a + b;
t = 0;
}
step[{s, t}] = step[{a, b}];
step[{ s,t }].push_back(5);
if (!dist.count({ s,t }))
{
q.push({ s,t });
dist[{s, t}] = dist[{a, b}] + 1;
}
}
if (a != 0 && b != cb)
{
int s, t;
if (a > cb - b)
{
s = a - cb + b;
t = cb;
}
else
{
s = 0;
t = b + a;
}
step[{s, t}] = step[{a, b}];
step[{s,t}].push_back(6);
if (!dist.count({ s,t }))
{
q.push({ s,t });
dist[{s, t}] = dist[{a, b}] + 1;
}
}
}
}
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
cin >> ca >> cb >> L;
bfs(0, 0, i);
}
return 0;
}