#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define nl "\n"
#define OO 0x3f3f3f3f
using namespace std;
void ta2to2a()
{
ios_base::sync_with_stdio(false), cout.tie(nullptr), cin.tie(nullptr);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
}
ll n;
vector<ll> v(55);
set<ll> powerfulNumbers()
{
set<ll> st;
for (int i = 0; i <= 41; i++)
{
st.insert(1LL << i);
}
ll x = 1LL;
for (int i = 1; i <= 15; i++)
{
x *= i;
st.insert(x);
}
return st;
}
ll powerfulSum(int i, ll sum, ll nums)
{
if (sum == n)
{
return nums;
}
if (i == 55 || sum + v[i] > n)
{
return LONG_LONG_MAX;
}
ll ans1 = powerfulSum(i + 1, sum + v[i], nums + 1);
ll ans2 = powerfulSum(i + 1, sum, nums);
return min(ans1, ans2);
}
void solve()
{
cin >> n;
ll ans = powerfulSum(0, 0, 0);
cout << ((ans == LONG_LONG_MAX) ? -1 : ans) << nl;
}
int main()
{
ta2to2a();
int t = 1;
cin >> t;
int i = 0;
for (auto it : powerfulNumbers())
{
v[i] = it;
i++;
}
while (t--)
{
solve();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBubCAiXG4iCiNkZWZpbmUgT08gMHgzZjNmM2YzZgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCB0YTJ0bzJhKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSksIGNvdXQudGllKG51bGxwdHIpLCBjaW4udGllKG51bGxwdHIpOwojaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwojZW5kaWYKfQpsbCBuOwp2ZWN0b3I8bGw+IHYoNTUpOwpzZXQ8bGw+IHBvd2VyZnVsTnVtYmVycygpCnsKICAgIHNldDxsbD4gc3Q7CiAgICBmb3IgKGludCBpID0gMDsgaSA8PSA0MTsgaSsrKQogICAgewogICAgICAgIHN0Lmluc2VydCgxTEwgPDwgaSk7CiAgICB9CiAgICBsbCB4ID0gMUxMOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gMTU7IGkrKykKICAgIHsKICAgICAgICB4ICo9IGk7CiAgICAgICAgc3QuaW5zZXJ0KHgpOwogICAgfQoKICAgIHJldHVybiBzdDsKfQpsbCBwb3dlcmZ1bFN1bShpbnQgaSwgbGwgc3VtLCBsbCBudW1zKQp7CiAgICBpZiAoc3VtID09IG4pCiAgICB7CiAgICAgICAgcmV0dXJuIG51bXM7CiAgICB9CiAgICBpZiAoaSA9PSA1NSB8fCBzdW0gKyB2W2ldID4gbikKICAgIHsKICAgICAgICByZXR1cm4gTE9OR19MT05HX01BWDsKICAgIH0KICAgIGxsIGFuczEgPSBwb3dlcmZ1bFN1bShpICsgMSwgc3VtICsgdltpXSwgbnVtcyArIDEpOwogICAgbGwgYW5zMiA9IHBvd2VyZnVsU3VtKGkgKyAxLCBzdW0sIG51bXMpOwogICAgcmV0dXJuIG1pbihhbnMxLCBhbnMyKTsKfQp2b2lkIHNvbHZlKCkKewogICAgY2luID4+IG47CiAgICBsbCBhbnMgPSBwb3dlcmZ1bFN1bSgwLCAwLCAwKTsKICAgIGNvdXQgPDwgKChhbnMgPT0gTE9OR19MT05HX01BWCkgPyAtMSA6IGFucykgPDwgbmw7Cn0KaW50IG1haW4oKQp7CiAgICB0YTJ0bzJhKCk7CiAgICBpbnQgdCA9IDE7CiAgICBjaW4gPj4gdDsKICAgIGludCBpID0gMDsKICAgIGZvciAoYXV0byBpdCA6IHBvd2VyZnVsTnVtYmVycygpKQogICAgewogICAgICAgIHZbaV0gPSBpdDsKICAgICAgICBpKys7CiAgICB9CiAgICB3aGlsZSAodC0tKQogICAgewogICAgICAgIHNvbHZlKCk7CiAgICB9Cn0=