#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define vi vector<int>
#define vl vector<ll>
#define vld vector<ld>
#define all(a) a.begin(), a.end()
#define ull unsigned long long
#define endl '\n'
#define loop(i, n) for (int i = 0; i < (n); i++)
const ll MOD = 1e9 + 7;
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
void fileio() {
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
}
void read2d(vector<vector<int>>&arr,int n,int m) {
for (int i =0;i<n;i++) {
for (int j =0;j<m;j++) {
cin>>arr[i][j];
}
}
}
void print2d(vector<vector<int>>&arr,int n,int m) {
for (int i =0;i<n;i++) {
for (int j =0;j<m;j++) {
cout<<arr[i][j]<<" ";
}
cout<<'\n';
}
}
void read1d(vector<int>&arr) {
for (int i =0;i<arr.size();i++) {
cin>>arr[i];
}
}
void read1d(vector<ll>&arr) {
for (int i =0;i<arr.size();i++) {
cin>>arr[i];
}
}
void print1d(vector<int>&arr) {
for (int i =0;i<arr.size();i++) {
cout<<arr[i]<<" ";
}
cout<<endl;
}
bool ispowerof2(ll n ) {
return log2(n)-static_cast<long long>(log2(n))==0;
}
ll isafactorial(ll n) {
ll i =2 ;
long double m = static_cast<long double>(n);
while (m>1) {
m/=i;
i++;
}
return m==1 ? i : 0;
}
bool LinearSearch(vector<ll>& nums, ll val) {
ll n = nums.size();
for (ll i =0;i<n;i++) {
if (nums[i]==val) {
return 1 ;
}
}
return 0;
}
ll cnt = LLONG_MAX;vector<ll>factorials;
int factorial(int n ) {
if (n==1||n==0) {
return 1 ;
}
return n * factorial(n-1);
}
void preprocessing() {
for (ll i =1 ;i<=15;i++) {
ll fact=factorial(i);
factorials.push_back(fact);
}
for (ll i = 1 ;i<=39;i++) {
factorials.push_back(pow(2,i));
}
factorials.erase(unique(all(factorials)),factorials.end());
}
void gen(ll i ,ll sum,ll op, ll n ) {
if (i==factorials.size()) {
return;
}
if (sum>n) {
return;
}
if (sum==n) {
cnt=min(cnt, op);
return;
}
gen(i+1,sum,op,n);
if (LinearSearch(factorials,factorials[i])) {
gen(i+1,sum+factorials[i],op+1,n);
}
}
void solve() {
cnt = LLONG_MAX ; ll n ; cin>>n ;
if (LinearSearch(factorials,n)) {
cout<<1<<endl;
return;
}
gen(0,0,0,n);
cout<<cnt<<endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
fileio();
preprocessing();
int t = 1;
cin >> t;
while (t--)
{
solve();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSB2aSB2ZWN0b3I8aW50PgojZGVmaW5lIHZsIHZlY3RvcjxsbD4KI2RlZmluZSB2bGQgdmVjdG9yPGxkPgojZGVmaW5lIGFsbChhKSBhLmJlZ2luKCksIGEuZW5kKCkKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgZW5kbCAnXG4nCiNkZWZpbmUgbG9vcChpLCBuKSBmb3IgKGludCBpID0gMDsgaSA8IChuKTsgaSsrKQpjb25zdCBsbCBNT0QgPSAxZTkgKyA3OwojcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QiKQojcHJhZ21hIEdDQyBvcHRpbWl6ZSgidW5yb2xsLWxvb3BzIikKI3ByYWdtYSBHQ0MgdGFyZ2V0KCJhdngyLGJtaSxibWkyLGx6Y250LHBvcGNudCIpCgp2b2lkIGZpbGVpbygpIHsKICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKfQp2b2lkIHJlYWQyZCh2ZWN0b3I8dmVjdG9yPGludD4+JmFycixpbnQgbixpbnQgbSkgewogICAgZm9yIChpbnQgaSA9MDtpPG47aSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9MDtqPG07aisrKSB7CiAgICAgICAgICAgIGNpbj4+YXJyW2ldW2pdOwogICAgICAgIH0KICAgIH0KfQp2b2lkIHByaW50MmQodmVjdG9yPHZlY3RvcjxpbnQ+PiZhcnIsaW50IG4saW50IG0pIHsKICAgIGZvciAoaW50IGkgPTA7aTxuO2krKykgewogICAgICAgIGZvciAoaW50IGogPTA7ajxtO2orKykgewogICAgICAgICAgICBjb3V0PDxhcnJbaV1bal08PCIgIjsKICAgICAgICB9CiAgICAgICAgY291dDw8J1xuJzsKICAgIH0KfQp2b2lkIHJlYWQxZCh2ZWN0b3I8aW50PiZhcnIpIHsKICAgIGZvciAoaW50IGkgPTA7aTxhcnIuc2l6ZSgpO2krKykgewogICAgICAgIGNpbj4+YXJyW2ldOwogICAgfQp9CnZvaWQgcmVhZDFkKHZlY3RvcjxsbD4mYXJyKSB7CiAgICBmb3IgKGludCBpID0wO2k8YXJyLnNpemUoKTtpKyspIHsKICAgICAgICBjaW4+PmFycltpXTsKICAgIH0KfQp2b2lkIHByaW50MWQodmVjdG9yPGludD4mYXJyKSB7CiAgICBmb3IgKGludCBpID0wO2k8YXJyLnNpemUoKTtpKyspIHsKICAgICAgICBjb3V0PDxhcnJbaV08PCIgIjsKICAgIH0KICAgIGNvdXQ8PGVuZGw7Cn0KYm9vbCBpc3Bvd2Vyb2YyKGxsIG4gKSB7CiAgICByZXR1cm4gbG9nMihuKS1zdGF0aWNfY2FzdDxsb25nIGxvbmc+KGxvZzIobikpPT0wOwp9CmxsIGlzYWZhY3RvcmlhbChsbCBuKSB7CiAgICBsbCBpID0yIDsKICAgIGxvbmcgZG91YmxlIG0gPSBzdGF0aWNfY2FzdDxsb25nIGRvdWJsZT4obik7CiAgICB3aGlsZSAobT4xKSB7CiAgICAgIG0vPWk7CiAgICAgICAgaSsrOwogICAgfQogICAgcmV0dXJuICBtPT0xID8gaSA6IDA7Cgp9Cgpib29sIExpbmVhclNlYXJjaCh2ZWN0b3I8bGw+JiBudW1zLCBsbCB2YWwpIHsKICAgIGxsIG4gPSBudW1zLnNpemUoKTsKICAgIGZvciAobGwgaSA9MDtpPG47aSsrKSB7CiAgICAgICAgaWYgKG51bXNbaV09PXZhbCkgewogICAgICAgICAgICByZXR1cm4gMSA7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0KbGwgY250ID0gTExPTkdfTUFYO3ZlY3RvcjxsbD5mYWN0b3JpYWxzOwppbnQgZmFjdG9yaWFsKGludCBuICkgewogICAgaWYgKG49PTF8fG49PTApIHsKICAgICAgICByZXR1cm4gMSA7CiAgICB9CiAgICByZXR1cm4gbiAqIGZhY3RvcmlhbChuLTEpOwp9Cgp2b2lkIHByZXByb2Nlc3NpbmcoKSB7CiAgICBmb3IgKGxsIGkgPTEgO2k8PTE1O2krKykgewogICAgICAgIGxsIGZhY3Q9ZmFjdG9yaWFsKGkpOwogICAgICAgIGZhY3RvcmlhbHMucHVzaF9iYWNrKGZhY3QpOwogICAgfQogICAgZm9yIChsbCBpID0gMSA7aTw9Mzk7aSsrKSB7CiAgICAgICAgZmFjdG9yaWFscy5wdXNoX2JhY2socG93KDIsaSkpOwogICAgfQogICAgZmFjdG9yaWFscy5lcmFzZSh1bmlxdWUoYWxsKGZhY3RvcmlhbHMpKSxmYWN0b3JpYWxzLmVuZCgpKTsKfQp2b2lkIGdlbihsbCBpICxsbCBzdW0sbGwgb3AsIGxsIG4gKSB7CiAgICBpZiAoaT09ZmFjdG9yaWFscy5zaXplKCkpIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoc3VtPm4pIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoc3VtPT1uKSB7CiAgICAgICAgY250PW1pbihjbnQsIG9wKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBnZW4oaSsxLHN1bSxvcCxuKTsKICAgIGlmIChMaW5lYXJTZWFyY2goZmFjdG9yaWFscyxmYWN0b3JpYWxzW2ldKSkgewogICAgICAgZ2VuKGkrMSxzdW0rZmFjdG9yaWFsc1tpXSxvcCsxLG4pOwogICAgfQp9Cgp2b2lkIHNvbHZlKCkgewogIGNudCA9IExMT05HX01BWCAgOyAgbGwgbiA7IGNpbj4+biA7CiAgICBpZiAoTGluZWFyU2VhcmNoKGZhY3RvcmlhbHMsbikpIHsKICAgICAgICBjb3V0PDwxPDxlbmRsOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGdlbigwLDAsMCxuKTsKICAgIGNvdXQ8PGNudDw8ZW5kbDsKCn0KCmludCBtYWluKCkKewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgZmlsZWlvKCk7CiAgICBwcmVwcm9jZXNzaW5nKCk7CiAgICBpbnQgdCA9IDE7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pCiAgICB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KfQo=