#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <stack>
using namespace std;
const int maxn = 300;
char s[maxn];
struct Node{
int value;
Node *left, *right;
Node():value(0),left(NULL),right(NULL){}
};
Node *root;
Node * newnode(){
return new Node();
}
void remove_node(Node *u){
if(u == NULL) return;
remove_node(u -> left);
remove_node(u -> right);
delete u;//调用u的析构函数释放结点本身的内存
}
int failed;
void add_node(int v, char *s){
int len = strlen(s);
Node *u = root;
for(int i=0; i<len; i++){
if(s[i] == 'L'){
if(u -> left == NULL)
u -> left = newnode();
u = u -> left;
}
if(s[i] == 'R'){
if(u->right == NULL)
u->right = newnode();
u = u->right;
}
}
if(u -> value > 0) failed = 1;
u -> value = v;
}
int read_input(){
failed = 0;
remove_node(root);
root = newnode();
while(1){
if(scanf("%s",s) != 1) return 0;
if(!strcmp("()",s)) break;
int v;
sscanf(&s[1], "%d", &v);
add_node(v, strchr(s, ',') + 1);
}
return 1;
}
int n,ans[maxn];
int BFS(){
int front = 0, rear = 1;
n = 0;
Node *q[maxn];
q[0] = root;
while(front < rear){
Node *u = q[front++];
if(!u -> value) return 0;
ans[n++] = u -> value;
if(u->left) q[rear++] = u->left;
if(u->right) q[rear++] = u->right;
}
return 1;
}
int main(){
while(read_input()){
if(!BFS()) failed = 1;
if(failed) puts("not complete");
else{
for(int i=0; i<n; i++){
printf("%s",i ? " " : "");
printf("%d",ans[i]);
}
printf("\n");
}
}
return 0;
}