#include <bits/stdc++.h>
using namespace std;
void fast() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
}
vector<long long int> parent(1005), rnk(1005);
void init() {
  for (long long int i = 0; i < 1005; i++) {
    parent[i] = i;
    rnk[i] = 0;
  }
}
long long int find_dsu(long long int node) {
  if (node != parent[node]) parent[node] = find_dsu(parent[node]);
  return parent[node];
}
void union_dsu(long long int u, long long int v) {
  long long int a = find_dsu(u);
  long long int b = find_dsu(v);
  if (a == b) return;
  if (rnk[a] < rnk[b]) swap(a, b);
  parent[b] = a;
  if (rnk[a] == rnk[b]) rnk[a]++;
}
int main() {
  fast();
  init();
  long long int n;
  cin >> n;
  vector<pair<long long int, long long int> > extra, build;
  for (long long int i = 0; i < n - 1; i++) {
    long long int u, v;
    cin >> u >> v;
    u--;
    v--;
    if (find_dsu(u) != find_dsu(v))
      union_dsu(u, v);
    else
      extra.push_back(make_pair(u, v));
  }
  for (long long int i = 1; i < n; i++) {
    if (find_dsu(i) != find_dsu(0)) {
      union_dsu(i, 0);
      build.push_back(make_pair(0, i));
    }
  }
  cout << extra.size() << endl;
  for (long long int i = 0; i < extra.size(); i++)
    cout << extra[i].first + 1 << " " << extra[i].second + 1 << " "
         << build[i].first + 1 << " " << build[i].second + 1 << endl;
}
