#include using namespace std; const int MaxN = (int)1e6 + 10; const int INF = 1e9; int n, a[MaxN], d[MaxN]; long long s[MaxN]; int cnt[MaxN], pr[MaxN]; void solve() { scanf("%d", &n); // n = rand() % 1000 + 50; for (int i = 1; i <= n; ++i) { scanf("%d", &a[i]); // a[i] = 1; s[i] = a[i] + s[i - 1]; } memset(cnt, 0, (n + 10) * sizeof(cnt[0])); for (int i = 1; i <= n; ++i) { long long num = s[i]; long long den = s[n]; long long g = __gcd(num, den); num /= g; den /= g; if (den <= n) { cnt[den] += 1; } } int ans = 0; for (int i = n; i >= 1; --i) { for (int j = i + i; j <= n; j += i) { cnt[j] += cnt[i]; } } // int ans2 = 0; for (int i = 1; i <= n; ++i) { // ans2 += chk(i); ans += cnt[i] == i; // assert (ans == ans2); if (cnt[i] == i) { printf("1"); } else { printf("0"); } } printf("\n"); } int main() { // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); int t = 1000; scanf("%d", &t); while (t --> 0) { solve(); } return 0; }