#include <bits/stdc++.h>
using namespace std;
enum { N = 500007 };
typedef int Ni[N];
int n, a, tp, T[N][2];
Ni hd, nt, to, R, fa, C, st, A4, A2, A1, A3;
void dn(int u) {
  if (R[u]) {
    int l = T[u][0], r = T[u][1];
    if (l) swap(T[l][0], T[l][1]), R[l] ^= 1;
    if (r) swap(T[r][0], T[r][1]), R[r] ^= 1;
    R[u] = 0;
  }
}
bool pv(int u) { return T[fa[u]][0] == u || T[fa[u]][1] == u; }
void rot(int u) {
  int a = fa[u], b = fa[a], k = u == T[a][1], &p = T[u][!k];
  if (pv(a)) T[b][a == T[b][1]] = u;
  if (p) fa[p] = a;
  fa[a] = u, fa[u] = b, T[a][k] = p, p = a;
}
void spl(int u) {
  int p = u;
  st[tp = 1] = p;
  while (pv(p)) st[++tp] = p = fa[p];
  while (tp) dn(st[tp--]);
  while (pv(u)) {
    int a = fa[u], b = fa[a];
    if (pv(a)) rot(((u == T[a][1]) ^ (a == T[b][1])) ? u : a);
    rot(u);
  }
}
void acc(int u) {
  for (int v = 0; u; u = fa[v = u]) spl(u), T[u][1] = v;
}
void mkrt(int u) { acc(u), spl(u), R[u] ^= 1, swap(T[u][0], T[u][1]); }
int pre(int u) {
  u = T[u][0];
  while (dn(u), T[u][1]) u = T[u][1];
  return spl(u), u;
}
int fi(int u) { return u == C[u] ? u : C[u] = fi(C[u]); }
void fly(int u, int f = 0) {
  for (int e = hd[u]; e; e = nt[e]) {
    int v = to[e];
    if (v == f) continue;
    fly(v, u);
    mkrt(v), acc(u), spl(v);
    int p = v, s = 0;
    while (p) {
      dn(p);
      if (v != fi(p))
        s = p, p = T[p][0];
      else
        p = T[p][1];
    }
    acc(s), spl(s);
    int w = pre(s);
    spl(s), T[s][0] = fa[T[s][0]] = 0;
    spl(v), fa[v] = u, C[v] = u;
    A1[++a] = u, A2[a] = v, A3[a] = s, A4[a] = w;
  }
}
int main() {
  scanf("%d", &n);
  int e = 0;
  for (int i = 2; i <= n; ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    nt[++e] = hd[x], hd[x] = e, to[e] = y;
    nt[++e] = hd[y], hd[y] = e, to[e] = x;
  }
  for (int i = 2; i <= n; ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    mkrt(x), fa[x] = y;
  }
  for (int i = 1; i <= n; ++i) C[i] = i;
  fly(1);
  printf("%d\n", a);
  for (int i = 1; i <= a; ++i)
    printf("%d %d %d %d\n", A1[i], A2[i], A3[i], A4[i]);
  return 0;
}
