#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; #define rep(i, n) for(int i = 0; i < (n); i++) template using vi = vector; template using vii = vector>; template using viii = vector>; using P = pair; struct edge { int to, idx; }; int main() { int n; cin >> n; vi a(n), b(n); vii to(n); vi deg(n); rep(i, n) { cin >> a[i] >> b[i]; a[i]--, b[i]--; to[a[i]].push_back({ b[i], i }); to[b[i]].push_back({ a[i], i }); deg[a[i]]++, deg[b[i]]++; } queue q; rep(i, n) { if (deg[i] == 1) q.push(i); } vi ans(n); while (!q.empty()) { int v = q.front(); q.pop(); for (edge nv : to[v]) { if (ans[nv.idx]) continue; if (v > nv.to) ans[nv.idx] = 1; else ans[nv.idx] = -1; deg[nv.to]--; if (deg[nv.to] == 1) q.push(nv.to); break; } } rep(i, n) { q.push(i); while (!q.empty()) { int v = q.front(); q.pop(); for (edge nv : to[v]) { if (ans[nv.idx] != 0) continue; if (v > nv.to) ans[nv.idx] = 1; else ans[nv.idx] = -1; q.push(nv.to); break; } } } rep(i, n) cout << (ans[i] == 1 ? "<-" : "->") << endl; return 0; } /* 5 4 5 1 5 2 3 1 2 1 5 */