import java.io.*;
import java.util.*;
public class Main
{
	
	private void solve()throws IOException
	{
		int n=nextInt();
		int deg[]=new int[n+1];
		int label[]=new int[n];
		int edge[]=new int[n+1];
		Arrays.fill(label,-1);
		for(int i=1;i<n;i++)
		{
			int u=nextInt();
			int v=nextInt();
			deg[u]++;
			deg[v]++;
			edge[u]=i;
			edge[v]=i;
		}
		if(n==2)
		{
			out.println(0);
			return;
		}
		int count=0;
		for(int i=1;i<=n;i++)
		{
			if(deg[i]==1)
			{
				label[edge[i]]=count;
				count++;
			}
			if(count==3)
				break;
		}
		for(int i=1;i<n;i++)
		{
			if(label[i]==-1)
				label[i]=count++;
		}
		for(int i=1;i<n;i++)
			out.println(label[i]);
	}

	 
	///////////////////////////////////////////////////////////

	public void run()throws IOException
	{
		br=new BufferedReader(new InputStreamReader(System.in));
		st=null;
		out=new PrintWriter(System.out);

		solve();

		br.close();
		out.close();
	}
	public static void main(String args[])throws IOException{
		new Main().run();
	}
	BufferedReader br;
	StringTokenizer st;
	PrintWriter out;
	String nextToken()throws IOException{
		while(st==null || !st.hasMoreTokens())
		st=new StringTokenizer(br.readLine());
		return st.nextToken();
	}
	String nextLine()throws IOException{
		return br.readLine();
	}
	int nextInt()throws IOException{
		return Integer.parseInt(nextToken());
	}
	long nextLong()throws IOException{
		return Long.parseLong(nextToken());
	}
	double nextDouble()throws IOException{
		return Double.parseDouble(nextToken());
	}
}