#include <stdio.h>
#include <stdlib.h>
#define INITSIZE 100
#define INCREAMENT 10
typedef struct SqStack{
char * data;
char * top;
int stacksize;
}SqStack;
void InitStack(SqStack * L){
L -> data = (char *)malloc(INITSIZE * sizeof(char));
if (!(L -> data)) exit(0);
L -> top = L -> data;
L -> stacksize = INITSIZE;
}
void Push(SqStack * L, char e){
if (L -> top - L -> data >= L -> stacksize){
L -> data = (char *)realloc(L -> data, (L -> stacksize + INCREAMENT) * sizeof(char));
if (!(L -> data)) exit(0);
L -> top = L -> data + L -> stacksize;
L -> stacksize = L -> stacksize + INCREAMENT;
}
* L -> top ++ = e;
}
void Pop(SqStack * L, char * e){
if (L -> top == L -> data) exit(0);
* e = * -- L -> top;
}
void GetTop(SqStack L, char * e){
if (L.top == L.data) exit(0);
* e = * (L.top - 1);
}
int main(){
SqStack L;
InitStack(&L);
SqStack L1;
InitStack(&L1);
char c, e;
while ((c = getchar()) != '\n'){ //whli##ilr#e(s#*s)
if(c == '#')
Pop(&L, &e);
else if(c == '@')
L.top = L.data;
else
Push(&L, c);
}
while (L.top != L.data){
Pop(&L, &e);
Push(&L1, e);
}
while (L1.top != L1.data){
Pop(&L1, &e);
printf("%c", e);
}
return 0;
}