Problem:
Score : 200 points

Problem Statement

Sig has built his own keyboard. Designed for ultimate simplicity, this keyboard only has 3 keys on it: the 0 key, the 1 key and the backspace key.

To begin with, he is using a plain text editor with this keyboard. This editor always displays one string (possibly empty). Just after the editor is launched, this string is empty. When each key on the keyboard is pressed, the following changes occur to the string:

The 0 key: a letter 0 will be inserted to the right of the string.

The 1 key: a letter 1 will be inserted to the right of the string.

The backspace key: if the string is empty, nothing happens. Otherwise, the rightmost letter of the string is deleted.

Sig has launched the editor, and pressed these keys several times. You are given a string s, which is a record of his keystrokes in order. In this string, the letter 0 stands for the 0 key, the letter 1 stands for the 1 key and the letter B stands for the backspace key. What string is displayed in the editor now?

Constraints

1 ≦ |s| ≦ 10 (|s| denotes the length of s)

s consists of the letters 0, 1 and B.

The correct answer is not an empty string.

Input

The input is given from Standard Input in the following format:

s

Output

Print the string displayed in the editor in the end.

Sample Input 1

01B0

Sample Output 1

00

Each time the key is pressed, the string in the editor will change as follows: 0, 01, 0, 00.

Sample Input 2

0BB1

Sample Output 2

1

Each time the key is pressed, the string in the editor will change as follows: 0, (empty), (empty), 1.

Solution in C (GCC 9.2.1) (judge verdict: Runtime Error)

/* ex9_1
   bonbonc    */

#include <stdio.h> 
#include<stdlib.h>
#include<string.h>
#define SIZE 100
typedef struct{
    int size;
    int count;
    char data[SIZE];
    char *top;
} stack;

void initialize_stack(stack *stk);
void print_stack(stack *stk);
void push(stack *stk,char token);
char pop(stack *stk);

stack stk;

int main(void){
    int i=0;
    char string[SIZE];//入力を受け取るchar配列

    initialize_stack(&stk);//スタックを初期化

    scanf("%s", string);//入力を受け取る
    for(i=0;i<strlen(string);i++){//stringを一文字ずつ見ていく
        if(string[i]=='0' || string[i]=='1'){//0か1ならスタックにプッシュ
            push(&stk,string[i]);
        }else if(string[i]=='B'){//Bならスタックから一文字pop
            pop(&stk);
        }
    }  
    print_stack(&stk);//stackの中身を出力
    printf("\n");
    return 0;
}

void initialize_stack(stack *stk){//スタックの初期化
    stk->count = 0;//要素数を0にする
    stk->size = SIZE;//スタックの大きさをSIZEにする
    stk->top = &(stk->data[SIZE]);//topを配列の末尾にする
}

void push(stack *stk,char token){//スタックにプッシュする
    if(stk->count>=stk->size){
        printf("Error: stack overflow.");//これ以上プッシュ出来ないとき終了する
        exit(1);
    }else{
        stk->top--;//topを配列の一つ手前にする
        *(stk->top)=token;//topにtokenを格納
        stk->count++;//要素数を1増やす
    }
    return;
}

char pop(stack *stk){
    char ret_char;//返す文字
    if(stk->count<=0){
        printf("Error: stack underflow");//返す文字が無いとき、終了
        exit(1);
    }else{
        ret_char = *(stk->top);//topの文字をret_charに代入
        stk->count--;//要素数を1減らす
        stk->top++;//topを1つ後ろにずらす
        return ret_char;//ret_charを返す
    }

}

void print_stack(stack *stk){
    int i=0,j=0;
    for(i=0;i<stk->count;i++){//要素数の数だけループを回す
        j = SIZE-i-1;//配列を後ろから参照するためのインデックスを準備
        putchar((stk->data[j]));//一文字ずつ出力する
    }
    return;
}