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 
    #include<bits/stdc++.h>
    using namespace std;
     
    #define IOS ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    #define int  long long
    #define rep(i,a,b)    for(int i=a;i<b;i++)
    #define repn(i,a,b)   for(int i=a;i>=b;i--)
    #define F first
    #define S second
    #define pii pair<int,int>
    #define vi vector<int>
    #define vii vector<pii>
    #define pb push_back
    #define mp  make_pair
    #define all(v) (v).begin(), (v).end()
    #define mod 998244353  
    #define mod2 998244353 

    int parent[1005],si[1005];

    void make_set(int v) {
        parent[v] = v;
        si[v] = 1;
    }

    int find_set(int v) {
        if (v == parent[v])
            return v;
        return parent[v] = find_set(parent[v]);
    }

    void union_sets(int a, int b) {
        a = find_set(a);
        b = find_set(b);
        if (a != b) {
            if (si[a] < si[b])
                swap(a, b);
            parent[b] = a;
            si[a] += si[b];
        }   
    }

    void solve(){
        int n,d=0,a,b;
        set<int> s;
        vii v;
        vi u,w;
        map<int,int> m,ma;
        cin>>n;
        int arr[n+1]={0};
        rep(i,0,n-1){
            cin>>a>>b;
            arr[a]=1;arr[b]=1;
            v.pb(mp(a,b));
            if(parent[a]==0) make_set(a);
            if(parent[b]==0) make_set(b);
            union_sets(a,b);
        }
        rep(i,1,n+1){
            if(parent[i]==0) d++;
            s.insert(parent[i]);
            m[parent[i]]++;
        }
        cout<<s.size()+d-1<<"\n";
        rep(i,0,n-1){
            ma[parent[v[i].F]]++;
            if(ma[parent[v[i].F]]>=m[parent[v[i].F]]) u.pb(i);
        }
        rep(i,0,n-1) if(ma[parent[v[i].F]]<m[parent[v[i].F]]) w.pb(v[i].F);
        rep(i,1,n+1) if(arr[i]==0) w.pb(i);
        rep(i,0,u.size()) cout<<v[u[i]].F<<" "<<v[u[i]].S<<" "<<v[u[i]].F<<" "<<w[i]<<"\n";
    }
     
    signed main(){
        IOS;
        #ifndef ONLINE_JUDGE
        freopen("input.txt", "r" , stdin);
        freopen("output.txt", "w", stdout);
        #endif
        int t=1;
        //cin>>t;
        while(t--){
            //cout<<"*";
            solve();
            //if(solve()) cout<<"YES";
            //else cout<<"NO";
            cout<<"\n";
         //   cout<<" * "<<t<<"\n";
        }
    //    return 0;
    }