/*
dp[i][j]表示和为i时,当前数字是j时的最小步数
dir[i]保存与数字i相邻的四个数字
*/
#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
int dir[7][4]= {{1,1,1,1},{2,3,4,5},{1,3,4,6},{1,2,5,6},{1,2,5,6},{1,3,4,6},{2,3,4,5}};
int dp[10009][10];
int main()
{
int t,n;
cin>>t;
while(t--)
{
cin>>n;
memset(dp,inf,sizeof(dp));
for(int i=0; i<4; i++)
{
dp[dir[1][i]][dir[1][i]]=1;//与1相邻的几个数一次就能达到
}
for(int i=1; i<=n; i++)
{
for(int j=1; j<=6; j++)
{
for(int k=0; k<4; k++)
{
dp[i+dir[j][k]][dir[j][k]]=min(dp[i][j]+1,dp[i+dir[j][k]][dir[j][k]]);//要么在前一状态转一次,要么有更好的方式
}
}
}
int ans=inf;
for(int i=1; i<=6; i++)
{
ans=min(ans,dp[n][i]);
}
if(ans>=inf) cout<<-1<<endl;
else cout<<ans<<endl;
}
return 0;
}