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.util.*;

import java.io.*;
import java.lang.*;
import java.math.*;

public class D_25 implements Runnable{
    static class UnionFind{
        int size[] ;
        int parent[];
        int noOfComponents;
    
        public int getSize(int n){
            return size[find(n)];
        }
    
        public boolean isConnected(int a,int b){
            return find(a)==find(b);
        }
    
        public UnionFind(int s){
            size = new  int[s];
            parent = new int[s];
            noOfComponents = s;
            for(int i = 0;i<s;i++){
                parent[i] = i;
            }
            Arrays.fill(size,1);
        }
    
        public int getNumberOfComponents(){
            return noOfComponents;
        }
    
        public void union(int a,int b){
            int root1 = find(a);
            int root2 = find(b);
            if(root1==root2) return;
            parent[root1] = parent[root2];
            
            noOfComponents--;
        }
    
        public int find(int a){
            int temp = a;
            while(temp!=parent[temp]){
                // size[temp]+=1;
                temp = parent[temp];
            }
            while(a!=temp){
                int k = parent[a];
                parent[a] = temp;
                a = k;
            }
            return temp;
        }
    
        void print(){
            for(int i = 0;i<parent.length;i++){
                System.out.println(i+" "+parent[i]);
            }
            return ;
        }
    
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();
            int m = scan.nextInt();
            UnionFind uf = new UnionFind(n);
            for(int i = 0;i<m;i++){
                int u = scan.nextInt()-1;
                int v = scan.nextInt()-1;
                uf.union(u,v);
            }
            for(int i = 0;i<n;i++){
                System.out.print(uf.getSize(i)-1+" ");
            }
            System.out.println(Arrays.toString(uf.parent));
        }
    
    }
        

    static class Pair{
        int a,b;
        Pair(int aa,int bb){
            a =aa;
            b =bb;
        }
    }

    public void solve(){
        int n= scan.nextInt();
        UnionFind uf = new UnionFind(n);
        List<Pair> l = new ArrayList<>();
        for(int i=1;i<n;i++){
            int a = scan.nextInt();
            int b = scan.nextInt();
            a--;b--;
            if(!uf.isConnected(a, b))
            uf.union(a,b);
            else l.add(new Pair(a,b));
        }
        System.out.println(l.size());
        StringBuilder sb = new StringBuilder();
        for(Pair pp : l){
            int k = uf.find(pp.a);
            sb.append((1+pp.a)+ " "+(1+pp.b)+ " ");
            for(int i = 0;i<n;i++){
                if(uf.parent[i]==i && i!=k){
                    uf.union(i,k);
                    sb.append((1+i)+ " "+(1+k));
                    break;
                }
            }
            sb.append("\n");
        } 
        System.out.print(sb.toString());

    }
    
    InputReader scan;
    PrintWriter out;
    
    @Override
    public void run(){
        scan = new InputReader(System.in);
        out = new PrintWriter(System.out);
        solve();
        out.flush();
        out.close();
    }
    
    public static void main(String[] args) {
        new Thread(null,new D_25(),"Main",1<<26).start();
    }
    
    
    static class InputReader {
        private InputStream stream;
        private byte[] buf = new byte[1024];
        private int curChar;
        private int numChars;
        private SpaceCharFilter filter;
        private BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        public InputReader(InputStream stream) {
            this.stream = stream;
        }
        
        public int read() {
            if (numChars==-1) 
                throw new InputMismatchException();
            
            if (curChar >= numChars) {
                curChar = 0;
                try {
                    numChars = stream.read(buf);
                }
                catch (IOException e) {
                    throw new InputMismatchException();
                }
                
                if(numChars <= 0)               
                    return -1;
            }
            return buf[curChar++];
        }
     
        public String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }
        public int nextInt() {
            int c = read();
            
            while(isSpaceChar(c)) 
                c = read();
            
            int sgn = 1;
            
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            
            int res = 0;
            do {
                if(c<'0'||c>'9') 
                    throw new InputMismatchException();
                res *= 10;
                res += c - '0';
                c = read();
            }
            while (!isSpaceChar(c)); 
            
            return res * sgn;
        }
        
        public long nextLong() {
            int c = read();
            while (isSpaceChar(c))
                c = read();
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            long res = 0;
            
            do {
                if (c < '0' || c > '9')
                    throw new InputMismatchException();
                res *= 10;
                res += c - '0';
                c = read();
            }
            while (!isSpaceChar(c));
                return res * sgn;
        }
        
        public double nextDouble() {
            int c = read();
            while (isSpaceChar(c))
                c = read();
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            double res = 0;
            while (!isSpaceChar(c) && c != '.') {
                if (c == 'e' || c == 'E')
                    return res * Math.pow(10, nextInt());
                if (c < '0' || c > '9')
                    throw new InputMismatchException();
                res *= 10;
                res += c - '0';
                c = read();
            }
            if (c == '.') {
                c = read();
                double m = 1;
                while (!isSpaceChar(c)) {
                    if (c == 'e' || c == 'E')
                        return res * Math.pow(10, nextInt());
                    if (c < '0' || c > '9')
                        throw new InputMismatchException();
                    m /= 10;
                    res += (c - '0') * m;
                    c = read();
                }
            }
            return res * sgn;
        }
        
        public String readString() {
            int c = read();
            while (isSpaceChar(c))
                c = read();
            StringBuilder res = new StringBuilder();
            do {
                res.appendCodePoint(c);
                c = read();
            } 
            while (!isSpaceChar(c));
            
            return res.toString();
        }
     
        public boolean isSpaceChar(int c) {
            if (filter != null)
                return filter.isSpaceChar(c);
            return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
        }
     
        public String next() {
            return readString();
        }
        
        public long[] nla(int n){ //nextLongArray()
            long ar[] = new long[n];
            for(int i=0;i<n;i++){
                ar[i] = this.nextLong();
            }
            return ar;
        }

        public int[] nia(int n){
            int ar[] = new int[n];
            for(int i=0;i<n;i++){
                ar[i] = this.nextInt();
            }
            return ar;
        }

        public interface SpaceCharFilter {
            public boolean isSpaceChar(int ch);
        }
    }

}