#include <bits/stdc++.h>
using namespace std;
const int maxn = 200 + 10;
vector<pair<int, int>> e[maxn];
int pt[maxn];
bool mark[maxn];
vector<int> ans;
void solve(int v) {
  for (int i = 0; i < e[v].size(); i++) {
    int anss = 0;
    if (e[v][i].second % 2)
      anss = e[v][i].second;
    else
      anss = e[v][i].second - 1;
    if (!mark[anss] && !mark[anss + 1]) {
      mark[e[v][i].second] = true;
      solve(e[v][i].first);
      ans.push_back(e[v][i].second);
    }
  }
  return;
}
int main() {
  ios::sync_with_stdio, cin.tie(0), cout.tie(0);
  int n, a, b;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a >> b;
    e[a].push_back({b, i * 2 - 1}), e[b].push_back({a, i * 2});
  }
  int start = 0, srt = 0;
  for (int i = 0; i <= 6; i++)
    if (e[i].size() % 2) {
      if (srt == 2) return cout << "No solution" << '\n', 0;
      start = i;
      srt++;
    }
  if (srt == 1) return cout << "No solution" << '\n', 0;
  if (!srt)
    for (int i = 0; i <= 6; i++)
      if (e[i].size()) start = i;
  solve(start);
  if (ans.size() < n) return cout << "No solution" << '\n', 0;
  for (int i = 0; i < ans.size(); i++) {
    if (ans[i] % 2)
      cout << (ans[i] + 1) / 2 << " -" << '\n';
    else
      cout << (ans[i] / 2) << " +" << '\n';
  }
  return 0;
}
