#include <bits/stdc++.h>
using namespace std;
template <typename T1, typename T2>
istream &operator>>(istream &in, pair<T1, T2> &p) {
  in >> p.first >> p.second;
  return in;
}
template <typename T>
istream &operator>>(istream &in, vector<T> &v) {
  for (auto &x : v) in >> x;
  return in;
}
template <typename T1, typename T2>
ostream &operator<<(ostream &out, const std::pair<T1, T2> &p) {
  out << "[" << p.first << ", " << p.second << "]"
      << "\n";
  return out;
}
inline int gc() {
  static const int BUF = 1e7;
  static char buf[BUF], *bg = buf + BUF, *ed = bg;
  if (bg == ed) fread(bg = buf, 1, BUF, stdin);
  return *bg++;
}
inline int ri() {
  int x = 0, f = 1, c = gc();
  for (; c < 48 || c > 57; f = c == '-' ? -1 : f, c = gc())
    ;
  for (; c > 47 && c < 58; x = x * 10 + c - 48, c = gc())
    ;
  return x * f;
}
const double EPS = 1e-10;
const long long inf = 0x7fffffff;
const long long infLL = 0x7fffffffffffffffLL;
const long long mod = 1e18 + 7;
const int maxN = 2e5 + 7;
const long long ONE = 1;
const long long evenBits = 0xaaaaaaaaaaaaaaaa;
const long long oddBits = 0x5555555555555555;
int q;
long long a, b, m, k;
long long x[57];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  cin >> q;
  while (q--) {
    cin >> a >> b >> m;
    long long p = 1;
    k = 2;
    while (b > p * (a + m)) {
      ++k;
      p <<= 1;
    }
    if (b >= p * (a + 1)) {
      cout << k << " ";
      x[1] = a;
      x[k] = b;
      int t = -1;
      for (int i = (k - 1); i >= (2); --i) {
        if (x[i + 1] % 2 == 0)
          x[i] = x[i + 1] >> 1;
        else {
          x[i] = (x[i + 1] + t) >> 1;
          t = -t;
        }
      }
      for (int i = (1); i <= (k); ++i) cout << x[i] << " " << endl;
      cout << endl;
    } else if (a == b)
      cout << "1 " << a << endl;
    else
      cout << -1 << endl;
  }
  return 0;
}
