#include <bits/stdc++.h>
using namespace std;
int q;
long long a, b, m;
vector<long long> sol;
void solve(long long total, int left) {
  if (left <= 0) return;
  long long lo = total + 1;
  long long hi = total + m;
  while (lo <= hi) {
    long long next = (lo + hi) / 2;
    long long curA = next;
    long long sumA = total + next;
    long long curB = next;
    long long sumB = total + next;
    for (int i = 2; i <= left; i++) {
      curA = sumA + 1;
      sumA += curA;
      curB = sumB + m;
      sumB += curB;
      if (b < curA) break;
    }
    if (b >= curA && b <= curB) {
      sol.push_back(next);
      solve(total + next, left - 1);
      return;
    }
    if (b < curA)
      hi = next - 1;
    else
      lo = next + 1;
  }
}
int main() {
  scanf("%d", &q);
  while (q--) {
    scanf("%I64d%I64d%I64d", &a, &b, &m);
    if (a == b) {
      printf("1 %I64d\n", a);
      continue;
    }
    if (a > b) {
      printf("-1\n");
      continue;
    }
    long long curA = 0;
    long long sumA = a;
    long long curB = 0;
    long long sumB = a;
    for (int i = 2; i <= 50; i++) {
      curA = sumA + 1;
      sumA += curA;
      curB = sumB + m;
      sumB += curB;
      if (b >= curA && b <= curB) {
        sol.clear();
        sol.push_back(a);
        solve(a, i - 1);
        printf("%d ", sol.size());
        for (int j = 0; j < sol.size(); j++) {
          if (j) printf(" ");
          printf("%I64d", sol[j]);
        }
        printf("\n");
        break;
      }
      if (b < curA || i == 50) {
        printf("-1\n");
        break;
      }
    }
  }
}
