/*
欧拉路的问题 用dfs求出路径
*/
#include<cstdio>
#include<cstring>#include<cstdlib>
int map[110][110],g[110][110];
int n,deg[10],strat,end,cnt;
struct S
{
int u,v;
} a[110],s[110];
int dfs(int u)
{
for(int i = 0; i <= 6; i++)
if(g[u][i])
{
g[u][i]--;
g[i][u]--;
dfs(i);
++cnt;
a[cnt].u = u;
a[cnt].v = i;
}
}
int main()
{
int as,b;
while(scanf("%d",&n)==1)
{
memset(g,0,sizeof(g));
memset(deg,0,sizeof(deg));
for(int i = 1; i <= n; i++)
{
scanf("%d%d",&as,&b);
s[i].u = as;
s[i].v = b;
g[as][b]++;
g[b][as]++;
deg[as]++;
deg[b]++;
}
int count=0;
for(int i = 0; i <= 6; i++)
{
if(deg[i]%2)
{
count++;
strat = i;
}
else if(!count&°[i])
strat=i;
}
if(count>2)
{
puts("No solution");
continue;
}
cnt=0;
dfs(strat);
if(cnt<n||cnt>n)
puts("No solution");
else
{
for(int i = cnt; i >= 1; i--)
for(int j = 1; j <= n; j++)
{
if(a[i].u==s[j].u&&a[i].v==s[j].v)
{
printf("%d +\n",j);
s[j].u=-10;
break;
}
else if(a[i].u==s[j].v&&a[i].v==s[j].u)
{
printf("%d -\n",j);
s[j].u=-10;
break;
}
}
}
}
}