#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e+3 + 10;
int p[MAXN], r[MAXN];
vector<pair<int, int>> t;
void make_set(int v) {
  p[v] = v;
  r[v] = 0;
}
int dsu_get(int v) { return (v == p[v]) ? v : (p[v] = dsu_get(p[v])); }
void unite(int a, int b) {
  a = dsu_get(a);
  b = dsu_get(b);
  if (a != b) {
    if (r[a] < r[b]) {
      swap(a, b);
    }
    p[b] = a;
    if (r[a] == r[b]) {
      r[a]++;
    }
  }
}
set<int> s;
void solve() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    make_set(i);
  }
  for (int i = 0; i < n - 1; i++) {
    int u, v;
    cin >> u >> v;
    if (dsu_get(u) == dsu_get(v)) {
      t.push_back(make_pair(u, v));
    } else {
      unite(u, v);
    }
  }
  for (int i = 1; i <= n; i++) {
    s.insert(dsu_get(i));
  }
  int res = (int)s.size() - 1;
  cout << res << "\n";
  int from = *s.begin();
  s.erase(s.begin());
  int i = 0;
  while (!s.empty()) {
    int to = *s.begin();
    s.erase(s.begin());
    cout << t[i].first << " " << t[i].second << " " << from << " " << to
         << "\n";
    from = to;
    i++;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0), cout.tie(0);
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
