#include <bits/stdc++.h>
#pragma GCC optimize(2)
const int mod = 1e9 + 7;
const long long INF = 1e18;
const int maxn = 1e6 + 10;
using namespace std;
int dp[maxn] = {0, 2};
int cnt = 0;
long long max(long long a, long long b) { return a > b ? a : b; }
long long min(long long a, long long b) { return a < b ? a : b; }
void init_dp(const int n = 1e6) {
  for (int i = 2; i <= n; i++) {
    dp[i] = dp[i - 1] + (i - 1) + 2 * i;
    if (dp[i] >= 1e9) {
      cnt = i;
      break;
    }
  }
}
int main() {
  init_dp();
  ios::sync_with_stdio(false);
  cin.tie(NULL), cout.tie(NULL);
  int T;
  cin >> T;
  while (T--) {
    int n;
    cin >> n;
    int ans = 0;
    for (int i = cnt; i >= 1; i--) {
      if (n >= dp[i]) {
        int val = n / dp[i];
        n -= val * dp[i];
        ans += val;
      }
    }
    cout << ans << endl;
  }
  return 0;
}
