#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef string str;

#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(x) (x).begin(), (x).end()
#define len(x) ((int)(x).size())

#define forn(i, n) for (int i = 0; i < (int)(n); ++i)
#define forr(i, l, r) for (int i = (int)(l); i <= (int)(r); ++i)
#define ford(i, r, l) for (int i = (int)(r); i >= (int)(l); --i)

#define cmin(a, b) a = min(a, b)
#define cmax(a, b) a = max(a, b)

str decode(str s) {
    stack<int> num_stack;
    stack<str> str_stack;
    str cur_str = "";
    int cur_num = 0;

    forn(i, len(s)) {
        if (isdigit(s[i])) {
            cur_num = cur_num * 10 + (s[i] - '0');
        } else if (s[i] == '[') {
            num_stack.push(cur_num);
            str_stack.push(cur_str);
            cur_num = 0;
            cur_str = "";
        } else if (s[i] == ']') {
            int k = num_stack.top();
            num_stack.pop();
            
            str prev_str = str_stack.top();
            str_stack.pop();
            
            str repeated = "";
            forn(j, k) {
                repeated += cur_str;
            }
            
            cur_str = prev_str + repeated;
        } else {
            cur_str += s[i];
        }
    }
    return cur_str;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

	 str s;
    if (cin >> s) {
        cout << decode(s) << "\n";
	}
    return 0;
}
