#include <stdio.h>
#include <stdlib.h>
typedef struct ptr_list
{
char input;
struct ptr_list *prev;
struct ptr_list *next;
} ptr_L;
int idx = 0;
int length = 0;
ptr_L *head = NULL;
ptr_L *current;
void insert_list(char str);
void delete_list(void);
void print_list(void);
void free_list(void);
int main(void)
{
int n, i;
char str;
scanf("%d",&n);
getchar();
for(i=0; i<n; i++)
{
do
{
scanf("%c",&str);
if(str == '<')
{
if(idx > 0)
{
idx--;
if(idx > 0)
current = current->prev;
}
continue;
}
if(str == '>')
{
if(idx < length)
{
idx++;
if(current->next != NULL)
current = current->next;
}
continue;
}
if(str == '-')
{
if(idx != 0 && idx <= length)
delete_list();
continue;
}
if(str != '\n')
insert_list(str);
}while(str != '\n');
print_list();
idx = length = 0;
free_list();
}
return 0;
}
void insert_list(char str)
{
ptr_L *L = (ptr_L *)malloc(sizeof(ptr_L));
L->input = str;
if(idx == 0)
{
if(!head)
L->next = NULL;
else
{
L->next = head;
head->prev = L;
}
L->prev = NULL;
head = L;
current = head;
}
else
{
L->prev = current;
L->next = current->next;
if(current->next != NULL)
L->next->prev = L;
L->prev->next = L;
current = current->next;
}
length++;
idx++;
}
void delete_list(void)
{
ptr_L *temp, *temp2;
int i;
if(idx == 1)
{
temp = head;
if(head->next != NULL)
{
head = temp->next;
head->prev = NULL;
}
else
head = NULL;
free(temp);
current = head;
}
else
{
temp = current;
temp2 = current->prev;
if(temp->next != NULL)
temp->next->prev = temp2;
temp2->next = temp->next;
free(temp);
current = temp2;
}
length--;
idx--;
}
void print_list(void)
{
ptr_L *temp;
for(temp = head; temp != NULL; temp = temp->next)
printf("%c",temp->input);
printf("\n");
}
void free_list(void)
{
ptr_L *temp;
current = NULL;
while(head)
{
temp = head;
head = head->next;
free(temp);
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KIAp0eXBlZGVmIHN0cnVjdCBwdHJfbGlzdAp7CiAgICBjaGFyIGlucHV0OwogICAgc3RydWN0IHB0cl9saXN0ICpwcmV2OwogICAgc3RydWN0IHB0cl9saXN0ICpuZXh0Owp9IHB0cl9MOwogCmludCBpZHggPSAwOwppbnQgbGVuZ3RoID0gMDsKcHRyX0wgKmhlYWQgPSBOVUxMOwpwdHJfTCAqY3VycmVudDsKIAp2b2lkIGluc2VydF9saXN0KGNoYXIgc3RyKTsKdm9pZCBkZWxldGVfbGlzdCh2b2lkKTsKdm9pZCBwcmludF9saXN0KHZvaWQpOwp2b2lkIGZyZWVfbGlzdCh2b2lkKTsKIAppbnQgbWFpbih2b2lkKQp7CiAgICBpbnQgbiwgaTsKICAgIGNoYXIgc3RyOwogCiAgICBzY2FuZigiJWQiLCZuKTsKICAgIGdldGNoYXIoKTsKICAgICAKICAgIGZvcihpPTA7IGk8bjsgaSsrKQogICAgewogICAgICAgIGRvCiAgICAgICAgewogICAgICAgICAgICBzY2FuZigiJWMiLCZzdHIpOwogICAgICAgICAgICBpZihzdHIgPT0gJzwnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihpZHggPiAwKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlkeC0tOwogICAgICAgICAgICAgICAgICAgIGlmKGlkeCA+IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wcmV2OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoc3RyID09ICc+JykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoaWR4IDwgbGVuZ3RoKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlkeCsrOwogICAgICAgICAgICAgICAgICAgIGlmKGN1cnJlbnQtPm5leHQgIT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZihzdHIgPT0gJy0nKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihpZHggIT0gMCAmJiBpZHggPD0gbGVuZ3RoKQogICAgICAgICAgICAgICAgICAgIGRlbGV0ZV9saXN0KCk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZihzdHIgIT0gJ1xuJykKICAgICAgICAgICAgICAgIGluc2VydF9saXN0KHN0cik7CiAgICAgICAgfXdoaWxlKHN0ciAhPSAnXG4nKTsKICAgICAgICBwcmludF9saXN0KCk7CiAgICAgICAgaWR4ID0gbGVuZ3RoID0gMDsKICAgICAgICBmcmVlX2xpc3QoKTsKICAgIH0KICAgIHJldHVybiAwOwp9CnZvaWQgaW5zZXJ0X2xpc3QoY2hhciBzdHIpCnsKICAgIHB0cl9MICpMID0gKHB0cl9MICopbWFsbG9jKHNpemVvZihwdHJfTCkpOwogICAgTC0+aW5wdXQgPSBzdHI7CiAgICAgCiAgICBpZihpZHggPT0gMCkKICAgIHsKICAgICAgICBpZighaGVhZCkKICAgICAgICAgICAgTC0+bmV4dCA9IE5VTEw7CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgTC0+bmV4dCA9IGhlYWQ7CiAgICAgICAgICAgIGhlYWQtPnByZXYgPSBMOwogICAgICAgIH0KICAgICAgICBMLT5wcmV2ID0gTlVMTDsKICAgICAgICBoZWFkID0gTDsKICAgICAgICBjdXJyZW50ID0gaGVhZDsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgIEwtPnByZXYgPSBjdXJyZW50OwogICAgICAgTC0+bmV4dCA9IGN1cnJlbnQtPm5leHQ7CiAgICAgICBpZihjdXJyZW50LT5uZXh0ICE9IE5VTEwpCiAgICAgICAgICAgTC0+bmV4dC0+cHJldiA9IEw7CiAgICAgICBMLT5wcmV2LT5uZXh0ID0gTDsKICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0OwogICAgfQogICAgbGVuZ3RoKys7CiAgICBpZHgrKzsKfQp2b2lkIGRlbGV0ZV9saXN0KHZvaWQpCnsKICAgIHB0cl9MICp0ZW1wLCAqdGVtcDI7CiAgICBpbnQgaTsKICAgICAKICAgIGlmKGlkeCA9PSAxKQogICAgewogICAgICAgIHRlbXAgPSBoZWFkOwogICAgICAgIGlmKGhlYWQtPm5leHQgIT0gTlVMTCkKICAgICAgICB7CiAgICAgICAgICAgIGhlYWQgPSB0ZW1wLT5uZXh0OwogICAgICAgICAgICBoZWFkLT5wcmV2ID0gTlVMTDsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICBoZWFkID0gTlVMTDsKICAgICAgICBmcmVlKHRlbXApOwogICAgICAgIGN1cnJlbnQgPSBoZWFkOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIHRlbXAgPSBjdXJyZW50OwogICAgICAgIHRlbXAyID0gY3VycmVudC0+cHJldjsKICAgICAgICBpZih0ZW1wLT5uZXh0ICE9IE5VTEwpCiAgICAgICAgICAgIHRlbXAtPm5leHQtPnByZXYgPSB0ZW1wMjsKICAgICAgICB0ZW1wMi0+bmV4dCA9IHRlbXAtPm5leHQ7CiAgICAgICAgZnJlZSh0ZW1wKTsKICAgICAgICBjdXJyZW50ID0gdGVtcDI7CiAgICB9CiAgICBsZW5ndGgtLTsKICAgIGlkeC0tOwp9CnZvaWQgcHJpbnRfbGlzdCh2b2lkKQp7CiAgICBwdHJfTCAqdGVtcDsKICAgIGZvcih0ZW1wID0gaGVhZDsgdGVtcCAhPSBOVUxMOyB0ZW1wID0gdGVtcC0+bmV4dCkKICAgICAgICBwcmludGYoIiVjIix0ZW1wLT5pbnB1dCk7CiAgICBwcmludGYoIlxuIik7Cn0Kdm9pZCBmcmVlX2xpc3Qodm9pZCkKewogICAgcHRyX0wgKnRlbXA7CiAgICBjdXJyZW50ID0gTlVMTDsKICAgIHdoaWxlKGhlYWQpCiAgICB7CiAgICAgICAgdGVtcCA9IGhlYWQ7CiAgICAgICAgaGVhZCA9IGhlYWQtPm5leHQ7CiAgICAgICAgZnJlZSh0ZW1wKTsKICAgIH0KfQ==