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>
#pragma comment(linker, "/stack:227420978")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
const long long Mod = 1000000007LL, INF = 1e9, LINF = 1e18;
const long double PI = 3.141592653589793116, EPS = 1e-9,
                  GOLD = ((1 + sqrt(5)) / 2);
long long keymod[] = {1000000007LL, 1000000009LL, 1000000021LL, 1000000033LL};
long long keyCount = sizeof(keymod) / sizeof(long long);
template <class T>
int getbit(T s, int i) {
  return (s >> i) & 1;
}
template <class T>
T onbit(T s, int i) {
  return s | (T(1) << i);
}
template <class T>
T offbit(T s, int i) {
  return s & (~(T(1) << i));
}
template <class T>
int cntbit(T s) {
  return __builtin_popcount(s);
}
auto TimeStart = chrono::steady_clock::now();
auto TimeEnd = chrono::steady_clock::now();
void ControlIO(int argc, char* argv[]);
void TimerStart();
void TimerStop();
void Exit();
long long n, a, b;
vector<set<long long>> adj(1007);
vector<bool> vis(1007, false);
vector<pair<long long, long long>> R, A;
long long Root = -1;
long long edgecnt = 0, vertexcnt = 0;
map<pair<long long, long long>, long long> Map;
void ccfind(long long z) {
  vis[z] = true;
  vertexcnt++;
  edgecnt += adj[z].size();
  for (auto it = adj[z].begin(); it != adj[z].end(); it++) {
    long long t = *it;
    if (!vis[t]) ccfind(t);
  }
}
void DFS(long long z, long long last) {
  vis[z] = true;
  for (auto it = adj[z].begin(); it != adj[z].end(); it++) {
    long long t = *it;
    if (t == last) continue;
    if (vis[t]) {
      if (Map[make_pair(z, t)] || Map[make_pair(t, z)]) continue;
      Map[make_pair(z, t)]++;
      Map[make_pair(t, z)]++;
      R.push_back(make_pair(z, t));
      continue;
    }
    DFS(t, z);
  }
}
void Input() {
  cin >> n;
  for (long long i = 1; i < n; i++) {
    cin >> a >> b;
    adj[a].insert(b);
    adj[b].insert(a);
  }
}
void Solve() {
  for (long long i = 1; i <= n; i++) {
    vertexcnt = 0;
    edgecnt = 0;
    if (vis[i]) continue;
    ccfind(i);
    if ((vertexcnt - 1) * 2 == edgecnt) {
      Root = i;
      break;
    }
  }
  for (long long i = 0; i < 1007; i++) vis[i] = false;
  ccfind(Root);
  for (long long i = 1; i <= n; i++) {
    if (vis[i]) continue;
    DFS(i, -1);
    A.push_back(make_pair(Root, i));
  }
  cout << R.size() << '\n';
  for (long long i = 0; i < R.size(); i++) {
    pair<long long, long long> x = R[i], y = A[i];
    cout << x.first << " " << x.second << " ";
    cout << y.first << " " << y.second << '\n';
  }
}
int main(int argc, char* argv[]) {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  ControlIO(argc, argv);
  Input();
  TimerStart();
  Solve();
  TimerStop();
  return 0;
}
void ControlIO(int argc, char* argv[]) {}
void TimerStart() {}
void TimerStop() {}
void Exit() {
  TimerStop();
  exit(0);
}
