#include <bits/stdc++.h>
using namespace std;
const int maxn = 101;
const long long inf = 2e18, mod = 1e9 + 7;
int n;
vector<pair<int, int> > graph[maxn];
vector<int> tour;
pair<int, int> direct[maxn];
bool visited[maxn], d[maxn];
void dfs(int u) {
  int v, edge;
  while (!graph[u].empty()) {
    v = graph[u].back().first;
    edge = graph[u].back().second;
    graph[u].pop_back();
    if (visited[edge]) continue;
    visited[edge] = true;
    d[edge] = (direct[edge] == make_pair(u, v));
    dfs(v);
    tour.push_back(edge);
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  int u, v;
  for (int i = (0); i < (n); i++) {
    cin >> u >> v;
    graph[u].push_back(make_pair(v, i));
    graph[v].push_back(make_pair(u, i));
    direct[i] = make_pair(u, v);
  }
  int cnt = 0;
  for (int i = (0); i < (7); i++) cnt += (graph[i].size() & 1);
  if (cnt > 2)
    cout << "No solution" << endl;
  else {
    if (cnt == 2) {
      for (int i = (0); i < (7); i++)
        if ((graph[i].size() & 1)) {
          dfs(i);
          break;
        }
    } else
      for (int i = (0); i < (7); i++)
        if (!graph[i].empty()) {
          dfs(i);
          break;
        }
    if ((int)tour.size() != n)
      cout << "No solution" << endl;
    else
      for (int i : tour) cout << i + 1 << (d[i] ? " -" : " +") << endl;
  }
}
