#include<iostream>
#include<stdio.h>
using namespace std;
int a[101],b[101],rd[7];
bool ok[101];
bool okk[7];
int xl[101],xlf[101],z=1;
int n;
void test2(int now)
{
okk[now]=1;
for(int i=1;i<=n;i++)
{
if(a[i]==now&&!okk])
test2(b[i]);
else if(b[i]==now&&!okk[a[i]])
test2(a[i]);
}
}
bool test()
{
for(int i=0;i<=6;i++)
if(rd[i]==0)
okk[i]=1;
for(int i=0;i<=6;i++)
if(rd[i]!=0)
{
test2(i);
for(int i=0;i<=6;i++)
if(okk[i]==0)
return 0;
return 1;
}
}
void dfs(int now,int count)
{
if(count==n)
return;
for(int i=1;i<=n;i++)
if(!ok[i])
{
if(a[i]==now)
{
ok[i]=1;
dfs(b[i],count+1);
xl[z]=i;
xlf[z]=1;
z++;
}
if(b[i]==now)
{
ok[i]=1;
dfs(a[i],count+1);
xl[z]=i;
xlf[z]=0;
z++;
}
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d",&a[i],&b[i]);
for(int i=1;i<=n;i++)
{
rd[a[i]]++;
rd]++;
}
int flag=0,flagg=0,flaggg;
for(int i=0;i<=6;i++)
{
if(rd[i]%2==1)
{
flagg=i;
flag++;
}
if(rd[i]!=0)
flaggg=i;
}
if(flag>2)
cout<<"No solution"<<endl;
else if(test()==0)
cout<<"No solution"<<endl;
else if(flag==0)
dfs(flaggg,0);
else
dfs(flagg,0);
for(int i=1;i<z;i++)
{
cout<<xl[i];
if(xlf[i]==1)
cout<<" -"<<endl;
else
cout<<" +"<<endl;
}
system("pause");
return 0;
}
#include<stdio.h>
using namespace std;
int a[101],b[101],rd[7];
bool ok[101];
bool okk[7];
int xl[101],xlf[101],z=1;
int n;
void test2(int now)
{
okk[now]=1;
for(int i=1;i<=n;i++)
{
if(a[i]==now&&!okk])
test2(b[i]);
else if(b[i]==now&&!okk[a[i]])
test2(a[i]);
}
}
bool test()
{
for(int i=0;i<=6;i++)
if(rd[i]==0)
okk[i]=1;
for(int i=0;i<=6;i++)
if(rd[i]!=0)
{
test2(i);
for(int i=0;i<=6;i++)
if(okk[i]==0)
return 0;
return 1;
}
}
void dfs(int now,int count)
{
if(count==n)
return;
for(int i=1;i<=n;i++)
if(!ok[i])
{
if(a[i]==now)
{
ok[i]=1;
dfs(b[i],count+1);
xl[z]=i;
xlf[z]=1;
z++;
}
if(b[i]==now)
{
ok[i]=1;
dfs(a[i],count+1);
xl[z]=i;
xlf[z]=0;
z++;
}
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d",&a[i],&b[i]);
for(int i=1;i<=n;i++)
{
rd[a[i]]++;
rd]++;
}
int flag=0,flagg=0,flaggg;
for(int i=0;i<=6;i++)
{
if(rd[i]%2==1)
{
flagg=i;
flag++;
}
if(rd[i]!=0)
flaggg=i;
}
if(flag>2)
cout<<"No solution"<<endl;
else if(test()==0)
cout<<"No solution"<<endl;
else if(flag==0)
dfs(flaggg,0);
else
dfs(flagg,0);
for(int i=1;i<z;i++)
{
cout<<xl[i];
if(xlf[i]==1)
cout<<" -"<<endl;
else
cout<<" +"<<endl;
}
system("pause");
return 0;
}