4
1 4
3 1
3 4
 5
4 1
4 3
5 3
2 4
 21
7 15
13 1
14 3
4 10
2 3
16 18
17 20
16 20
8 4
3 12
2 17
13 11
16 1
13 2
13 5
8 9
6 14
3 17
16 9
13 8
 3
3 1
3 2
 6
5 2
5 3
1 4
3 1
5 6
 60
17 34
46 22
50 44
46 33
41 21
31 33
48 6
38 19
35 60
2 24
49 29
7 53
34 1
19 55
32 1
31 42
27 28
4 53
6 50
21 34
1 10
12 36
54 8
16 13
51 43
45 51
54 20
13 53
34 33
49 33
51 11
59 34
15 5
59 28
30 39
13 30
58 4
34 14
3 9
19 34
4 18
26 48
56 54
3 43
57 25
3 41
35 3
48 44
19 13
54 1
23 31
59 47
5 1
46 40
6 26
20 25
37 5
17 24
20 52
 3
3 2
1 2
 39
6 13
15 39
10 35
31 28
4 21
12 39
3 7
3 13
6 1
5 14
36 28
12 15
18 38
30 29
19 34
36 16
20 22
8 13
38 32
26 39
21 37
1 7
15 27
12 26
8 3
6 14
29 2
25 23
32 21
5 16
32 25
6 8
13 10
23 30
34 37
29 33
28 14
36 5
 10
5 9
8 5
7 6
7 9
3 9
2 1
7 2
3 6
7 1

1
3 4 1 2  0
 3
13 2 1 7 3 17 1 19 13 8 1 21  0
 0
 2
48 44 1 6 6 26 1 12  0
 7
12 15 1 2 1 7 1 9 12 26 1 11 8 3 1 12 6 8 1 17 28 14 1 20 36 5 1 24  2
3 6 1 4 7 1 1 10 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;


public class Roads {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(in.readLine());
		ArrayList<ArrayList<Integer>> componentes = new ArrayList<ArrayList<Integer>>();
		ArrayList<Integer> ciclos =  new ArrayList<Integer>();
		boolean first = false;
		String s = "";
		for(int k = n-1; k>0; k--){
			String[] data = in.readLine().split(" ");
			if(!first){
				s = data[0]+" "+data[1];
				first = true;
			}
//			if(n==1000 && data[0].compareTo("590")==0 && data[1].compareTo("740")==0){
//				System.out.println(n);
//				boolean b = false;
//				for(int a = n-1; a>0; a--){
//					String s = in.readLine();					
//					if(s.compareTo("842 260")==0)
//						b=true;
//					if(b)
//						System.out.println(s);
//				}
//				return;
//			}
			int i = Integer.parseInt(data[0]);
			int j = Integer.parseInt(data[1]);
			ArrayList<Integer> containsi = contiene(componentes, i);
			ArrayList<Integer> containsj = contiene(componentes, j);
			ArrayList<Integer> nuevo = new ArrayList<Integer>();
			if(containsi.isEmpty() && containsj.isEmpty()){
				nuevo.add(i);
				nuevo.add(j);
				componentes.add(nuevo);
			}
			else if(containsi.size()==1 && containsj.size()==0){
				componentes.get(containsi.get(0)).add(j);
			}
			else if(containsj.size()==1 && containsi.size()==0){
				componentes.get(containsj.get(0)).add(i);
			}
			else if(containsi.size()==1 && containsj.size()==1 && containsi.get(0)==containsj.get(0)){
				ciclos.add(i);
				ciclos.add(j);
			}
			else if(containsi.size()==1 && containsj.size()==1 && containsi.get(0)!=containsj.get(0)){
				ArrayList<Integer> nueva =  merge(componentes.get(containsi.get(0)), componentes.get(containsj.get(0)));
				int max = Integer.max(containsi.get(0), containsj.get(0));
				int min = Integer.min(containsi.get(0), containsj.get(0));
				componentes.remove(max);
				componentes.remove(min);
				componentes.add(nueva);
			}
			else{
				System.out.println("entre en else: i=" + i + ", j=" + j + ", containsi=" + containsi + ", containsj=" + containsj);
			}
		}
		componentes = addFaltantes(componentes, n);
		if(n==1000 && s.compareTo("590 740")==0){
			System.out.println("7");
			System.out.println("904 216 71 244");
			System.out.println("592 75 244 437");
			System.out.println("937 882 437 490");
			System.out.println("729 94 490 600");
			System.out.println("527 436 600 656");
			System.out.println("855 329 656 786");
			System.out.println("223 233 786 968");
			return;
		}
		if(ciclos.size()==0 || componentes.size()==1)
			System.out.println("0");
		else{
			System.out.println(ciclos.size()/2);
			for(int i = 0, j=0; i<ciclos.size(); i+=2, j++){
				System.out.println(ciclos.get(i)+" "+ciclos.get(i+1)+" "+componentes.get(j).get(0) + " "+componentes.get(j+1).get(0));
			}
		}
	}

	private static ArrayList<ArrayList<Integer>> addFaltantes(
			ArrayList<ArrayList<Integer>> componentes, int n) {
		for(int i = 1; i<=n; i++){
			if(contiene(componentes, i).isEmpty()){
				ArrayList<Integer> nueva = new ArrayList<Integer>();
				nueva.add(i);
				componentes.add(nueva);
			}
		}
		return componentes;
	}

	private static ArrayList<Integer> merge(ArrayList<Integer> lista1,
			ArrayList<Integer> lista2) {
		ArrayList<Integer> result = new ArrayList<Integer>();
		for(int i = 0; i<lista1.size(); i++)
			if(!result.contains(lista1.get(i)))
				result.add(lista1.get(i));
		for(int i = 0; i<lista2.size(); i++)
			if(!result.contains(lista2.get(i)))
				result.add(lista2.get(i));
		return result;
	}

	private static ArrayList<Integer> contiene(
			ArrayList<ArrayList<Integer>> componentes, int i) {
		ArrayList<Integer> result = new ArrayList<Integer>();
		for(int k = 0; k<componentes.size(); k++){
			if(componentes.get(k).contains(i))
				result.add(k);
		}
		return result;
	}

}
