#include <bits/stdc++.h>
using namespace std;
const int N = 7;
int g[N][N], deg[N];
vector<pair<int, char> > num[N][N];
int pt[N][N];
int main() {
  int a, b, n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> a >> b;
    g[a][b]++;
    g[b][a]++;
    num[a][b].push_back(make_pair(i, '+'));
    num[b][a].push_back(make_pair(i, '-'));
  }
  for (int i = 0; i < N; i++)
    for (int j = 0; j < N; j++) deg[i] += g[i][j];
  int first = 0;
  while (!deg[first]) ++first;
  int v1 = -1, v2 = -1;
  bool bad = false;
  for (int i = 0; i < N; i++)
    if (deg[i] & 1)
      if (v1 == -1)
        v1 = i;
      else if (v2 == -1)
        v2 = i;
      else
        bad = true;
  if (v1 != -1) ++g[v1][v2], ++g[v2][v1];
  stack<int> st;
  st.push(first);
  vector<int> res;
  while (!st.empty()) {
    int v = st.top();
    int i;
    for (i = 0; i < N; i++)
      if (g[v][i]) break;
    if (i == N) {
      res.push_back(v);
      st.pop();
    } else {
      --g[v][i];
      --g[i][v];
      st.push(i);
    }
  }
  if (v1 != -1)
    for (size_t i = 0; i + 1 < res.size(); i++)
      if (res[i] == v1 && res[i + 1] == v2 ||
          res[i] == v2 && res[i + 1] == v1) {
        vector<int> res2;
        for (size_t j = i + 1; j < res.size(); ++j) res2.push_back(res[j]);
        for (size_t j = 1; j <= i; j++) res2.push_back(res[j]);
        res = res2;
        break;
      }
  for (int i = 0; i < N; i++)
    for (int j = 0; j < N; j++)
      if (g[i][j]) bad = true;
  if (bad)
    cout << "No solution";
  else {
    for (int i = 1; i < res.size(); i++) {
      a = res[i - 1], b = res[i];
      cout << num[a][b][pt[a][b]].first + 1 << " " << num[a][b][pt[a][b]].second
           << "\n";
      pt[a][b]++;
      pt[b][a]++;
    }
  }
  return 0;
}
