#include <bits/stdc++.h>
using namespace std;
int a[7][7][101];
int d[101], t[7];
char cd[101];
bool dfs(int now, int saw, int n) {
  if (saw == n) return true;
  for (int i = 0; i < 7; i++)
    if (a[now][i][0] > 0) {
      d[saw] = a[now][i][a[now][i][0]];
      cd[saw] = '+';
      a[now][i][0]--;
      if (dfs(i, saw + 1, n)) return true;
      a[now][i][0]++;
    }
  for (int i = 0; i < 7; i++)
    if (a[i][now][0] > 0) {
      d[saw] = a[i][now][a[i][now][0]];
      cd[saw] = '-';
      a[i][now][0]--;
      if (dfs(i, saw + 1, n)) return true;
      a[i][now][0]++;
    }
  return false;
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    int v1, v2;
    cin >> v1 >> v2;
    a[v1][v2][0]++;
    a[v1][v2][a[v1][v2][0]] = i + 1;
    t[v1]++;
    t[v2]++;
  }
  int odd1 = -1, odd2 = -1;
  for (int i = 0; i < 7; i++)
    if (t[i] % 2 == 1) {
      if (odd2 != -1) {
        cout << "No solution\n";
        return 0;
      } else if (odd1 == -1)
        odd1 = i;
      else
        odd2 = i;
    }
  if (odd1 != -1 && odd2 == -1) {
    cout << "No solution\n";
    return 0;
  }
  if (odd1 != -1) {
    if (dfs(odd1, 0, n)) {
      for (int i = 0; i < n; i++) cout << d[i] << ' ' << cd[i] << endl;
      return 0;
    } else {
      cout << "No solution\n";
      return 0;
    }
  } else {
    for (int i = 0; i < 7; i++)
      if (t[i] > 0) {
        if (dfs(i, 0, n)) {
          for (int j = 0; j < n; j++) cout << d[j] << ' ' << cd[j] << endl;
          return 0;
        } else {
          cout << "No solution\n";
          return 0;
        }
      }
    cout << "No solution\n";
    return 0;
  }
  return 0;
}
