#include <bits/stdc++.h>
using namespace std;
const int N = 1e2 + 10;
int mark[N];
vector<pair<int, int> > g[7];
vector<pair<int, char> > ans;
void dfs(int v, int id = 0) {
  while (g[v].size()) {
    pair<int, int> p = g[v].back();
    g[v].pop_back();
    int u = p.first, id = p.second;
    if (!mark[abs(id)]) {
      mark[abs(id)] = 1;
      dfs(u, id);
    }
  }
  if (id > 0) ans.push_back({id, '-'});
  if (id < 0) ans.push_back({-id, '+'});
}
int main() {
  int n, src = -1, cnt = 0;
  ;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    int x, y;
    cin >> x >> y;
    src = x;
    g[x].push_back({y, i});
    g[y].push_back({x, -i});
  }
  for (int i = 0; i < 7; i++) {
    if ((int)g[i].size() % 2) src = i, cnt++;
  }
  if (cnt > 2) return cout << "No solution\n", 0;
  dfs(src);
  if (ans.size() != n) return cout << "No solution\n", 0;
  for (pair<int, int> p : ans) cout << p.first << " " << (char)p.second << "\n";
  return 0;
}
