#include using namespace std; typedef long long ll; ll A, B; vector v; ll my_pow(ll x, ll n) { if (n == 0) return 1; if (n % 2 == 0) return my_pow(x * x, n / 2); return x * my_pow(x, n - 1); } ll a; int t; void add(int n) { t = -1; for (int i = 1; i <= n; i++) { if (B - a - A * my_pow(2, i) >= 0) { t = i; } } if (t != -1) { v.push_back(A * my_pow(2, t)); a += v.back(); } } void add2() { ll k = a; int g = 0; while (k % 2 == 0 && B - a - my_pow(2, g) >= 0) { k /= 2; g++; } if (g == 0) return; if (B - a - my_pow(2, g) < 0) g--; v.push_back(my_pow(2, g)); a += my_pow(2, g); } void solve() { v.clear(); a = A; for (int i = 0; i < 120; i++) { if (B >= 2 * a) { v.push_back(a); a *= 2; } } a = A; for (ll i : v) { a += i; } t = v.size(); for (int i = 0; i < 70; i++) { if (t == -1) break; add(t); } if (B - a - A >= 0) { v.push_back(A); a += A; } if (a % 2 == 1 && B - a != 0) { a++; v.push_back(1); } for (int i = 0; i < 70; i++) { add2(); } ll n = A; cout << v.size() << "\n"; for (int i = 0; i < v.size(); i++) { if (i == v.size() - 1) { cout << v.back() << "\n"; } else { cout << v[i] << " "; } n += v[i]; } //cout << B << " " << n << "\n"; } int main() { int T; cin >> T; for (int i = 0; i < T; i++) { cin >> A >> B; solve(); } return 0; }