#include <bits/stdc++.h>
using namespace std;
const long long inf = 1e18 + 111;
const int maxn = 1e3 + 10;
const int maxq = 1e6 + 10;
const int alf = 26;
const int dlm = 1e9 + 7;
const int del = 239487234;
string O[] = {"Yes", "No", "YES", "NO"};
int ON = 0;
char pri[] = {'+', '-'};
vector<pair<int, pair<int, int> > > g[10];
vector<int> q;
int mark[maxn];
vector<pair<int, int> > ans;
int ty = 0;
int dfs(int v) {
  for (int i = 0; i < g[v].size(); i++) {
    int u = g[v][i].first;
    pair<int, int> ah = g[v][i].second;
    int s1 = ah.first;
    if (mark[s1] == 1) continue;
    mark[s1] = 1;
    dfs(u);
    ans.push_back(ah);
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    int x, y;
    cin >> x >> y;
    g[x].push_back({y, {i, 0}});
    g[y].push_back({x, {i, 1}});
  }
  for (int i = 0; i < 7; i++) {
    if ((g[i].size() % 2) == 1) q.push_back(i);
  }
  if (q.size() > 2) {
    return cout << "No solution", 0;
  }
  if (q.size() > 0) {
    dfs(q[0]);
  } else {
    for (int i = 0; i < 7; i++) {
      if (g[i].size() > 0) {
        dfs(i);
        break;
      }
    }
  }
  if (ans.size() < n || ans.size() > n) return cout << "No solution", 0;
  for (int i = ans.size() - 1; i >= 0; i--) {
    int x1 = ans[i].first;
    int x2 = ans[i].second;
    cout << x1 << " " << pri[x2] << '\n';
  }
  return 0;
}
