#include<iostream>
using namespace std;
const int N = 1e6 + 10;
string a;
char s[N];
int f[N],top;
int ans,ansx;
int main(){
cin >> a;
for(int i = 0; i < a.size(); i++){
if(a[i] == '(' || a[i] == '['){
f[i] = max(f[i - 1],f[i]);
s[++top] = a[i];
continue;
}
if(a[i] == ')' && s[top] == '(' || a[i] == ']' && s[top] == '['){
f[i] = max(f[i - 1] + 2,f[i]);
if(ans < f[i]){
ansx = i;
ans = f[i];
}
top--;
}else {
top = 0;
}
}
for(int i = ansx - ans + 1; i <= ansx; i++){
cout << a[i];
}
return 0;
}