#include <bits/stdc++.h>
using namespace std;
long long md = 1000000007;
long long bexp(long long a, long long b) {
  if (b == 0) return 1;
  if (b == 1) return a;
  long long r = bexp(a, b / 2);
  r = r * r;
  if (b % 2 == 0)
    return r;
  else
    return r * a;
}
long long n, e, m;
vector<long long> ed[2005];
long long par[10005];
long long fd(long long x) {
  if (par[x] < 0) return x;
  return par[x] = fd(par[x]);
}
void un(long long a, long long b) {
  if (abs(par[a]) >= abs(par[b])) {
    par[a] += par[b];
    par[b] = a;
  } else {
    par[b] += par[a];
    par[a] = b;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int test_case = 1;
  while (test_case--) {
    long long i, j, ans = 0, k = 0;
    memset(par, -1, sizeof(par));
    long long l = 0, r = 0, x = 0, y = 0;
    cin >> n;
    vector<pair<long long, long long>> v1;
    for (i = 1; i < n; i++) {
      cin >> l >> r;
      ed[l].push_back(r);
      ed[r].push_back(l);
      x = fd(l);
      y = fd(r);
      if (x != y) {
        un(x, y);
      } else {
        v1.push_back({l, r});
      }
    }
    vector<long long> v;
    long long cnt = 0;
    for (i = 1; i <= n; i++) {
      if (par[i] < 0) {
        v.push_back(i);
        cnt++;
      }
    }
    cout << cnt - 1 << "\n";
    i = 0;
    for (j = i + 1; j < cnt; j++) {
      cout << v1[j - 1].first << " " << v1[j - 1].second << " " << v[i] << " "
           << v[j] << "\n";
    }
  }
  return 0;
}
