#include <bits/stdc++.h>
using namespace std;
const int N = 100 + 10;
const int vertex = 10;
vector<pair<int, int> > ans;
int m;
bool dead[N];
vector<pair<int, int> > v[vertex];
vector<pair<int, int> > ed;
void dfs(int s) {
  for (int i = 0; i < v[s].size(); ++i) {
    if (!dead[v[s][i].second]) {
      dead[v[s][i].second] = true;
      dfs(v[s][i].first);
      ans.push_back(make_pair(v[s][i].second, s));
    }
  }
}
int main() {
  cin >> m;
  int s;
  int help1, help2;
  for (int i = 0; i < m; ++i) {
    cin >> help1 >> help2;
    help1++, help2++;
    ed.push_back(make_pair(help1, help2));
    v[help1].push_back(make_pair(help2, i));
    v[help2].push_back(make_pair(help1, i));
  }
  s = help1;
  int oddnum = 0, odd = help1;
  if (m == 1) return cout << "1 +", 0;
  for (int i = 1; i < vertex; ++i)
    if ((v[i].size() % 2) == 1) {
      oddnum++;
      odd = i;
    }
  if (oddnum > 2) return cout << "No solution", 0;
  s = odd;
  dfs(s);
  if (ans.size() != m) return cout << "No solution", 0;
  for (int i = 0; i < ans.size(); ++i) {
    cout << ans[i].first + 1;
    if (ed[ans[i].first].second == ans[i].second)
      cout << " +\n";
    else if (ed[ans[i].first].first == ans[i].second)
      cout << " -\n";
  }
}
