I = input
for _ in range(int(I())):
n = int(I())
a = {}
l = []
ans = 0
for i in range(n):
s = I()
a[s] = 0
l.append(s)
for i in a:
for j in range(1, len(i)):
x = i[0:j]
y = i[j:]
if x in a and y in a:
a[i] = 1
for i in l:
print(a[i], end='')
print()
#include <bits/stdc++.h>
// #define int long long
using namespace std;
using ll = long long;
using umap = unordered_map<int,int>;
using pii = pair<int,int>;
ll gcd(ll x,ll y) {return !y?x:gcd(y,x%y);}
const int N = 100010;
map<string, int> mp;
int n;
string a[N];
void solve() {
cin >> n;
mp.clear();
for (int i = 1; i <= n; i++) {
cin >> a[i];
mp[a[i]]++;
}
string ans = "";
for (int i = 1; i <= n; i ++) {
int x = a[i].size();
bool f = 0;
for (int j = 1; j < x; j++) {
string s1 = a[i].substr(0, j);
string s2 = a[i].substr(j, x - j);
if (mp[s1] && mp[s2]) {
f = 1;
break;
}
}
cout << f;
}
cout << "\n";
}
int main()
{
ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
int T; cin >> T;
while(T --) solve();
return 0;
}
870A - Search for Pretty Integers | 1174A - Ehab Fails to Be Thanos |
1169A - Circle Metro | 780C - Andryusha and Colored Balloons |
1153A - Serval and Bus | 1487C - Minimum Ties |
1136A - Nastya Is Reading a Book | 1353B - Two Arrays And Swaps |
1490E - Accidental Victory | 1335A - Candies and Two Sisters |
96B - Lucky Numbers (easy) | 1151B - Dima and a Bad XOR |
1435B - A New Technique | 1633A - Div 7 |
268A - Games | 1062B - Math |
1294C - Product of Three Numbers | 749A - Bachgold Problem |
1486B - Eastern Exhibition | 1363A - Odd Selection |
131B - Opposites Attract | 490C - Hacking Cypher |
158B - Taxi | 41C - Email address |
1373D - Maximum Sum on Even Positions | 1574C - Slay the Dragon |
621A - Wet Shark and Odd and Even | 1395A - Boboniu Likes to Color Balls |
1637C - Andrew and Stones | 1334B - Middle Class |