#include <bits/stdc++.h>
using namespace std;
inline long long mod(long long n, long long m) {
  long long ret = n % m;
  if (ret < 0) ret += m;
  return ret;
}
long long gcd(long long a, long long b) {
  return (b == 0LL ? a : gcd(b, a % b));
}
long long exp(long long a, long long b, long long m) {
  if (b == 0LL) return 1LL;
  if (b == 1LL) return mod(a, m);
  long long k = mod(exp(a, b / 2, m), m);
  if (b & 1LL) {
    return mod(a * mod(k * k, m), m);
  } else
    return mod(k * k, m);
}
const long long N = 150;
long long a[N];
long long b[N * N];
long long n, k;
long long ok() {
  long long sum = 0;
  for (long long i = 1; i <= k; i++) {
    sum += b[i];
  }
  long long s2 = sum;
  long long tam = n;
  for (long long i = k + 1; i <= tam; i++) {
    s2 -= a[i - k];
    s2 += a[i];
    if (s2 != sum) return false;
  }
  return true;
}
long long T;
long long go(long long n, long long m, long long obj, long long t) {
  if (n == obj) {
    T = min(T, t);
    return t;
  }
  if (n > obj) return 1e9;
  long long has = 1e9;
  for (long long x = m; x >= 0; x--) {
    has = min(has, go(n + x + m, m + x, obj, t + 1));
  }
  return has;
}
void go2(long long n, long long m, long long obj, long long t) {
  if (n == obj) {
    return;
  }
  for (long long x = m; x >= 0; x--) {
    if (go(n + x + m, m + x, obj, t + 1) == T) {
      cout << x << " ";
      go2(n + x + m, m + x, obj, t + 1);
      return;
    }
  }
}
void solve(long long coisa = 0) {
  long long n, m;
  if (coisa == 0)
    cin >> n;
  else
    n = coisa;
  if (n == 3) {
    cout << 1 << "\n";
    cout << 1 << "\n";
    return;
  }
  long long t = 0;
  for (long long i = 30; i >= 0; i--) {
    if (n & (1LL << i)) {
      t = i;
      break;
    }
  }
  cout << t << "\n";
  T = t;
  if (n < 10) {
    go2(1, 1, n, 0);
    cout << "\n";
  } else if ((1 << t) == n) {
    long long has = 1;
    for (long long x = 1; x <= t; x++) {
      if (x == 1)
        cout << 0 << " ";
      else {
        cout << has << " ";
        has = has + has;
      }
    }
    cout << "\n";
  } else {
    long long has = 1;
    long long m = 1;
    for (long long x = 1; x < t - 1; x++) {
      cout << has << " ";
      m = m + has + has;
      has = has + has;
    }
    long long op1 = m + has + has;
    long long has2 = has + has;
    op1 = op1 + has2;
    if (n < (op1)) {
      for (long long x = 1; x <= has; x *= 2) {
        has2 = has + x;
        long long m2 = m + has2;
        if (n - m2 - has2 <= has2 and n - m2 - has2 >= 0) {
        } else
          continue;
        cout << x << " ";
        has += x;
        m += has;
        cout << n - m - has << "\n";
      }
    } else {
      cout << has << " ";
      has += has;
      m += has;
      cout << n - m - has << "\n";
    }
  }
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  long long t;
  cin >> t;
  while (t--) {
    solve();
  }
}
