#include <bits/stdc++.h>
using namespace std;
int q;
long long a, b, m;
bool can(long long startSum, long long low, long long high, long long target,
         long long add) {
  long long lowSum = startSum;
  long long highSum = startSum;
  while (high < target)
    lowSum += low, highSum += high, low = lowSum + 1LL, high = highSum + add;
  return low <= target && target <= high;
}
int main() {
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> q;
  for (int query = 1; query <= q; ++query) {
    cin >> a >> b >> m;
    if (!can(0, a, a, b, m)) {
      cout << -1 << '\n';
      continue;
    }
    long long sum = a;
    vector<long long> ans;
    ans.push_back(a);
    while (ans.back() != b) {
      long long low = sum + 1LL;
      long long high = sum + m + 1LL;
      while (low + 1LL != high) {
        long long mid = (low + high) / 2LL;
        if (can(sum, mid, high - 1, b, m))
          low = mid;
        else
          high = mid;
      }
      sum += low;
      ans.push_back(low);
    }
    cout << ans.size() << ' ';
    for (const auto& x : ans) cout << x << ' ';
    cout << '\n';
  }
  return 0;
}
