#include <iostream>
#include <bits/stdc++.h>
#define maxn 100
using namespace std;
struct Node
{
bool have_value;//
int v;
Node *left,*right;
Node():have_value(false),left(NULL),right(NULL){}
};
Node *root;
Node* newnode(){ return new Node();}
bool failed;
char s[maxn];
void addnode(int v,char* s)
{
int n = strlen(s);
Node *u = root;
for(int i = 0;i<n;i++)
{
if(s[i]=='L')
{
if(u->left == NULL) u->left = newnode();
u = u->left;
}
else if(s[i]=='R')
{
if(u->right == NULL) u->right = newnode();
u = u->right;
}
}
if(u->have_value) failed = true;
u->v = v;
u->have_value = 1;
}
bool read_input()
{
root = newnode();
for(;;)
{
if(scanf("%s",s)!=1) return false;
if(!strcmp(s,"()")) break;
int v;
sscanf(&s[1],"%d",&v);
addnode(v,strchr(s,',')+1);
}
return true;
}
bool bfs(vector<int>& ans)
{
queue<Node *>q;
ans.clear();
q.push(root);
while(!q.empty())
{
Node *u = q.front();
q.pop();
if(!u->have_value) return false;
ans.push_back(u->v);
if(u->left != NULL) q.push(u->left);
if(u->right!= NULL) q.push(u->right);
}
return true;
}
void remove_tree(Node* u)
{
if(u == NULL) return;
remove_tree(u->left);
remove_tree(u->right);
delete u;
}
int main()
{
vector<int>ans;
while(1)
{
remove_tree(root);
failed = false;
if(!read_input()) break;
if(bfs(ans)&&!failed)
{
int i;
for( i= 0;i<ans.size()-1;i++)
{
cout<<ans[i]<<" ";
}
cout<<ans[i]<<endl;
}
else
cout<<"not complete"<<endl;
}
return 0;
}
/**
(11,LL) (7,LLL) (8,R)
(5,) (4,L) (13,RL) (2,LLR) (1,RRR) (4,RR) ()
(3,L) (4,R) ()
**/