import java.io.*;
import java.util.*;
import java.math.*;
     
public class Main{
	public static void main(String[] args) throws Exception {
	IO io = new IO();
	PrintWriter out = new PrintWriter(System.out);
	Solver sr = new Solver();
	sr.solve(io,out);
	out.flush();
	out.close();
    	}

	static class Solver
	{
	    static class Pair
	    {
	        int a, b;
	        Pair(int x, int y)
	        {
	            a=x;
	            b=y;
	        }
	    }
	    void solve(IO io, PrintWriter out)
	    {
	        int n = io.nextInt();
	        int[] deg = new int[n+1];
	        ArrayList<Pair> ar = new ArrayList<>();
	        for(int i=0 ; i<n-1 ; i++)
	        {
	            int u = io.nextInt();
	            int v = io.nextInt();
	            ar.add(new Pair(u,v));
	            deg[u]++; deg[v]++;
	        }
	        int one=0;
	        for(int i=1 ; i<=n ; i++)
    	        if(deg[i]==1)
    	            one++;
    	    int second=one;
    	    one  = 0;
    	    for(int i=0 ; i<n-1 ; i++)
    	    {
    	        if(deg[ar.get(i).a]==1 || deg[ar.get(i).b]==1)
    	            out.println(one++);
    	        else
    	            out.println(second++);
    	    }
	    }
    	
	}
	//Special thanks to Petr (on codeforces) who inspired me to implement IO class!
	static class IO
	{
    	BufferedReader reader;
        StringTokenizer tokenizer;
    	public IO() {
                reader = new BufferedReader(new InputStreamReader(System.in));
                tokenizer = null;
            }
     
        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }
        public String nextLine() {
            String s="";
            try {
                    s=reader.readLine();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            return s;
        }
        public int nextInt() {
            return Integer.parseInt(next());
        }
    
        public long nextLong() {
            return Long.parseLong(next());
        }
    	double nextDouble()
    	{
    		return Double.parseDouble(next());
    	}
	}
}