#include <bits/stdc++.h>
using namespace std;
const int Maxn = 100 + 10, Max = 8;
int n;
vector<int> adj[Maxn], num[Maxn];
pair<int, int> arr[Maxn];
vector<pair<int, char> > ans;
bool mark[Maxn];
void dfs(int v) {
  for (int i = 0; i < (int)adj[v].size(); i++) {
    if (!mark[num[v][i]]) {
      mark[num[v][i]] = true;
      dfs(adj[v][i]);
      ans.push_back(make_pair(num[v][i], '+'));
      if (arr[num[v][i]].first == v) ans[ans.size() - 1].second = '-';
    }
  }
}
int main() {
  cin >> n;
  int a, b;
  for (int i = 0; i < n; i++) {
    cin >> a >> b;
    adj[a].push_back(b);
    adj[b].push_back(a);
    num[a].push_back(i);
    num[b].push_back(i);
    arr[i] = make_pair(a, b);
  }
  int cnt = 0;
  for (int i = 0; i < 7; i++)
    if ((int)adj[i].size() % 2 == 1) {
      a = i;
      cnt++;
    }
  if (cnt > 2) {
    cout << "No solution" << endl;
    return 0;
  }
  dfs(a);
  if (ans.size() != n) {
    cout << "No solution" << endl;
    return 0;
  }
  for (int i = 0; i < n; i++)
    cout << ans[i].first + 1 << " " << ans[i].second << endl;
  return 0;
}
