#include <bits/stdc++.h>
using namespace std;
int a, s, d[111], f, g, h, j, k, l, i, n, m;
vector<pair<int, int> > v[7];
vector<pair<int, char> > pas;
stack<pair<int, char> > q;
void dfs(int idx) {
  for (auto it : v[idx]) {
    if (d[abs(it.second)]) continue;
    d[abs(it.second)] = 1;
    q.push({abs(it.second), it.second > 0 ? '+' : '-'});
    dfs(it.first);
  }
  if (q.size()) {
    pas.push_back(q.top());
    q.pop();
  }
}
int main() {
  cin >> n;
  for (i = 0; i < n; i++) {
    cin >> a >> s;
    v[a].push_back({s, i + 1});
    v[s].push_back({a, -(i + 1)});
  }
  k = -1;
  l = -1;
  for (i = 0; i < 7; i++) {
    if (v[i].size() % 2 == 1) {
      if (k == -1)
        k = i;
      else if (l == -1)
        l = i;
      else {
        cout << "No solution";
        return 0;
      }
    }
  }
  if (k != -1 && l == -1) {
    cout << "No solution";
    return 0;
  }
  if (k == -1)
    for (i = 0; i < 8; i++) {
      if (v[i].size()) {
        k = i;
        l = i;
        break;
      }
    }
  dfs(k);
  reverse(pas.begin(), pas.end());
  if (pas.size() != n) {
    cout << "No solution";
    return 0;
  }
  for (auto it : pas) cout << it.first << " " << it.second << endl;
}
