#include <bits/stdc++.h>
using namespace std;
long long int Get(vector<long long int>& parent, long long int a) {
  return parent[a] = (parent[a] == a) ? a : Get(parent, parent[a]);
}
void Union(vector<long long int>& parent, vector<long long int>& size,
           long long int a, long long int b) {
  a = Get(parent, a);
  b = Get(parent, b);
  if (a == b) {
    return;
  }
  if (size[a] > size[b]) swap(a, b);
  parent[a] = b;
  size[b] += size[a];
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cerr.tie(NULL);
  ;
  long long int n;
  cin >> n;
  vector<long long int> parent(n + 1);
  vector<long long int> size(n + 1, 1);
  for (long long int i = 1; i <= n; i++) {
    parent[i] = i;
    size[i] = 1;
  }
  stack<pair<long long int, long long int>> road;
  for (long long int i = 0; i < n - 1; i++) {
    long long int a, b;
    cin >> a >> b;
    if (Get(parent, a) != Get(parent, b)) {
      Union(parent, size, a, b);
    } else {
      road.push({a, b});
    }
  }
  vector<int> components;
  for (long long int i = 1; i <= n; i++) {
    if (parent[i] == i) components.push_back(i);
  }
  cout << components.size() - 1 << endl;
  for (int i = 0; i < components.size() - 1; i++) {
    long long int temp = components[i];
    long long int x, y;
    x = (road.top()).first;
    y = (road.top()).second;
    cout << x << " " << y << " " << components[i] << " " << components[i + 1]
         << endl;
    road.pop();
  }
  cerr << "Time taken : " << (float)clock() / CLOCKS_PER_SEC << " secs" << endl;
  return 0;
}
