#include <iostream>
#include <vector>
using namespace std;
const int N = 500067;

vector<pair<int, int>> adj[N]; 
int color[N];
bool czy[N];
bool czy_krawedz[N];
vector<int> na;
vector<int> sa;

void dfs(int n, int b, int p_edge){
    czy[n] = true;
    color[n] = b;
    
    for(auto& p : adj[n]) {
        int o = p.first;
        int id = p.second;
        
        if(id == p_edge) continue;
        
        if(czy[o]) {
            if(!czy_krawedz[id]) {
                czy_krawedz[id] = true;
                na.push_back(id);
            }
        } else {
            czy_krawedz[id] = true;
            dfs(o, b, id);
        }
    }
}

int main() {
	ios_base::sync_with_stdio          (0);
	cin.tie(0);
	int a, k,               n;
	cin            >>           n;
	
	for(int i = 1;                      i < n; i++){
		cin >> a                    >> k;
		adj[a].push_back({k, i});
		adj[k].push_back({a, i});
	}
	
	int licznik = 0;
	for(int i = 1; i <= n; i++){
		if(!czy[i]){
			licznik++;
			sa.push_back(i);
			dfs(i, licznik, 0);
		}
	}
	
	licznik--;
	cout<<licznik<<         endl;
	
	for(int i = 0; i <    licznik; i++){
	    cout << na[i] << " " << sa[0] << " " <<       sa[i + 1] <<endl;
	}

	return 0;
}