#include <bits/stdc++.h>
#define ll long long
#define debug(x) cerr << (#x) << '\n'
#define pii pair <int, int>
#define pb emplace_back
#define chkmin(x, y) x > y ? x = y : 0
#define chkmax(x, y) x < y ? x = y : 0
#define L(i, a, b) for (int i = (a); i <= (b); i++)
#define R(i, a, b) for (int i = (a); i >= (b); i--)
using namespace std;
int n, dp[605][605];
string s;
bool comp(int l, int r) {
return (s[l] == '(' && s[r] == ')') || (s[l] == '[' && s[r] == ']');
}
void write(int l, int r) {
if (l > r) return;
if (l == r) {
if (s[l] == ')' || s[l] == '(') cout << "()";
else cout << "[]";
return;
}
if (dp[l][r] == dp[l + 1][r - 1] && comp(l, r)) {
cout << s[l];
write(l + 1, r - 1);
cout << s[r];
return;
}
for (int i = l; i < r; i++) {
if (dp[l][r] = dp[l][i] + dp[i + 1][r]) {
write(l, i), write(i + 1, r);
return;
}
}
}
int main() {
int t;
cin >> t;
while (t--) {
getline(cin, s);
getline(cin, s);
n = s.size();
if (n == 0) {
cout << "\n\n";
continue;
}
memset(dp, 0, sizeof dp);
for (int i = 0; i < n; i++) {
dp[i][i] = 1;
}
for (int len = 2; len <= n; len++) {
for (int l = 0; l + len - 1 < n; l++) {
int r = l + len - 1;
if (s[l] == '(' && s[r] == ')' || s[l] == '[' && s[r] == ']') {
dp[l][r] = dp[l + 1][r - 1];
} else {
dp[l][r] = min(dp[l + 1][r], dp[l][r - 1]) + 1;
}
for (int k = l; k < r; k++) {
dp[l][r] = min(dp[l][r], dp[l][k] + dp[k + 1][r]);
}
}
}
write(0, n - 1);
cout << '\n';
if (t) cout << '\n';
}
}