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