#include "simurgh.h"
#include<bits/stdc++.h>
using namespace std;
#define fall(i,a,b) for(int i=a;i<=b;i++)
#define rfall(i,a,b) for(int i=a;i>=b;i--)
#define pb push_back
#define all(x) x.begin(),x.end()
#define sz(x) (int)x.size()
const int MAXN=10;
typedef pair<int,int> pii;
int n,pai[MAXN];
vector<pii> g[MAXN];
vector<int> curset,ans;
bool z[MAXN];
int find(int x){
return x==pai[x]?x:find(pai[x]);
}
void join(int a,int b){
a=find(a),b=find(b);
pai[a]=b;
}
void bt(int x){
if(x==n){
if(count_common_roads(curset)==n-1) ans=curset;
return;
}
for(auto [u,j]:g[x]){
if(find(u)!=find(x)){
int k=find(u);
join(u,x);
curset.pb(j);
bt(x+1);
curset.pop_back();
pai[k]=k;
}
}
}
std::vector<int> find_roads(int N, std::vector<int> u, std::vector<int> v){
n=N;
fall(i,0,sz(u)-1){
g[u[i]].pb({v[i],i}),g[v[i]].pb({u[i],i});
}
fall(i,0,n-1) pai[i]=i;
bt(1);
return ans;
}