#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:200000000")
using namespace std;
const int INF = (int)1e9;
const long long INF64 = (long long)1e18;
const long double eps = 1e-9;
const long double pi = 3.14159265358979323846;
int main() {
  int n;
  scanf("%d", &n);
  int g[7][7];
  memset(g, 0, sizeof(g));
  vector<pair<int, int> > d;
  for (int i = 0; i < int(n); ++i) {
    int a, b;
    scanf("%d %d", &a, &b);
    d.push_back(make_pair(a, b));
    g[a][b]++;
    g[b][a]++;
  }
  n = 7;
  vector<int> deg(n);
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < n; ++j) deg[i] += g[i][j];
  int first = 0;
  while (!deg[first]) ++first;
  int v1 = -1, v2 = -1;
  bool bad = false;
  for (int i = 0; i < n; ++i)
    if (deg[i] & 1)
      if (v1 == -1)
        v1 = i;
      else if (v2 == -1)
        v2 = i;
      else
        bad = true;
  if (v1 != -1) ++g[v1][v2], ++g[v2][v1];
  stack<int> st;
  st.push(first);
  vector<int> res;
  while (!st.empty()) {
    int v = st.top();
    int i;
    for (i = 0; i < n; ++i)
      if (g[v][i]) break;
    if (i == n) {
      res.push_back(v);
      st.pop();
    } else {
      --g[v][i];
      --g[i][v];
      st.push(i);
    }
  }
  if (v1 != -1)
    for (size_t i = 0; i + 1 < res.size(); ++i)
      if (res[i] == v1 && res[i + 1] == v2 ||
          res[i] == v2 && res[i + 1] == v1) {
        vector<int> res2;
        for (size_t j = i + 1; j < res.size(); ++j) res2.push_back(res[j]);
        for (size_t j = 1; j <= i; ++j) res2.push_back(res[j]);
        res = res2;
        break;
      }
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < n; ++j)
      if (g[i][j]) bad = true;
  if (bad)
    puts("No solution");
  else {
    vector<bool> used((int)(d).size(), false);
    for (int i = 1; i < res.size(); i++) {
      pair<int, int> k = make_pair(res[i - 1], res[i]);
      pair<int, int> k1 = make_pair(res[i], res[i - 1]);
      for (int i = 0; i < int((int)(d).size()); ++i) {
        if (used[i]) continue;
        if (d[i] == k) {
          used[i] = true;
          cout << i + 1 << " +\n";
          break;
        }
        if (d[i] == k1) {
          used[i] = true;
          cout << i + 1 << " -\n";
          break;
        }
      }
    }
  }
}
