#include<iostream>
#include<queue>
#include<vector>
using namespace std;
int flag=0;int g;int g1;
int ww=0;
int len;int num=0;int u,v;
bool vis[200]={0};
vector<int>vec;
string s;
queue<char>q,q1,q3;
void check(string s,int num){
for(int i=0;i<s.size();i++)
{ if(s[i]=='[')
{u=i;
}
}
for(int i=s.size()-1;i>u;i--)
{ if(s[i]==']')
{v=i;
}
}
if(s[u+1]-'0'!=1)
{ if(s[u+2]>'0'&&s[u+2]<='9')
{
g1=(s[u+1]-'0')*10+s[u+2]-'0';
ww=1;
}
else g1=s[u+1]-'0';
}
else if(s[u+1]-'0'==1&&s[u+2]>'0'&&s[u+2]<='9')
{
g1=(s[u+1]-'0')*10+s[u+2]-'0'; ww=1;
}
else g1=1;
if(flag==0)
{
if(ww==1)
{
for(int i=1;i<=g1;i++)
{
for(int j=u+3;j<v;j++)q.push(s[j]);
}
flag=1;
}
else if(ww==0)
{
for(int i=1;i<=g1;i++)
{
for(int j=u+2;j<v;j++)q.push(s[j]);
}
flag=1;
}
}
else if(flag)
{
q1=q;
q3=q;
for(int i=1;i<=g1;i++)
{
while(!q1.empty())
{
char r=q1.front();
q.push(r);
q1.pop();
}
}q1=q3;
}
s.erase(s.begin()+u,s.begin()+v);
num=num-1;
if(num==0)return;
else check(s,num);
}
int main()
{
string d;int tt;
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cin>>s; d=s;len=s.size();
for(int i=0;i<len;i++)
{
if(s[i]=='['&&!vis[i])
{
for(int j=len-1;j>i;j--)
{
if(s[j]==']'&&vis[j]!=1)
{
num++;
vis[j]=1;
vis[i]=1;
vec.push_back(j);
}
}
}
}
check(s,num);
int g=0;
while(d[g]!='[')
{
cout<<d[g];
g++;
}
while(!q.empty())
{
char c=q.front();
cout<<c;
q.pop();
} int l=len-1;
int ll=vec.front();
for(int i=ll+1;i<len;i++)
{
cout<<d[i];
}
return 0;
}