#include <bits/stdc++.h>
using namespace std;
struct o {
  int x;
  int y;
  int z;
};
long a[1000][1000] = {0}, n, rt[7], f = 0, d[100000], e[100000];
o b[10000];
void dfs(int v) {
  for (int k = 0; k <= 6; ++k)
    if (a[v][k] > 0) {
      --a[v][k];
      --a[k][v];
      dfs(k);
    }
  ++f;
  d[f] = v;
  return;
}
int main() {
  cin >> n;
  for (int k = 1; k <= n; ++k) {
    long x, y;
    cin >> x >> y;
    ++a[x][y];
    ++a[y][x];
    b[k].x = x;
    b[k].y = y;
    ++rt[x];
    ++rt[y];
    b[k].z = 0;
  }
  if (n == 1) {
    cout << 1 << ' ' << '+';
    return 0;
  }
  string t;
  long kenti = 0, gamo = -1123;
  for (int k = 0; k <= 6; ++k)
    if (rt[k] % 2 == 1) {
      ++kenti;
      gamo = k;
    }
  if (kenti > 2) {
    cout << "No solution";
    return 0;
  }
  if (gamo == -1123)
    for (int k = 0; k <= 6; ++k)
      if (rt[k] > 0) {
        gamo = k;
      }
  dfs(gamo);
  long s = 0;
  for (int k = f; k > 1; --k) {
    long d1 = 0;
    for (int i = 1; i <= n; ++i) {
      if (d[k - 1] == b[i].y && d[k] == b[i].x && b[i].z != -1) {
        ++d1;
        t = t + '+';
        ++s;
        e[s] = i;
        b[i].z = -1;
        break;
      } else if (d[k - 1] == b[i].x && d[k] == b[i].y && b[i].z != -1) {
        b[i].z = -1;
        ++d1;
        ++s;
        t = t + '-';
        e[s] = i;
        break;
      }
    }
    if (d1 == 0) {
      cout << "No solution";
      return 0;
    }
  }
  for (int k = 1; k <= n; ++k)
    if (b[k].z != -1) {
      cout << "No solution";
      return 0;
    }
  for (int k = 1; k <= s; ++k) cout << e[k] << ' ' << t[k - 1] << endl;
  return 0;
}
