// https://resources.beecrowd.com/repository/UOJ_2354_es.html 
#include <iostream> 
#include <vector> 

int main( ) { 
   int n, w; 
   std::cin >> n >> w;     // supondremos que nos dicen quién es el lobo
   w -= 1; 
 
   int candidatos[n][2]; 
   for (int i = 0; i < n; ++i) { 
      std::cin >> candidatos[i][0] >> candidatos[i][1]; 
      candidatos[i][0] -= 1; 
      candidatos[i][1] -= 1; 
   } 
 
   int lobo_recibidos = 0; 
   for (int i = 0; i < n; ++i) { 
      lobo_recibidos += (candidatos[i][0] == w); 
      lobo_recibidos += (candidatos[i][1] == w); 
   } 
 
   int vertices = 2 * n + 2; 
   int fuente = 2 * n; 
   int sumidero = 2 * n + 1; 
   std::cout << vertices << " " << fuente << " " << sumidero << "\n"; 
 
   // de la fuente al primer piso 
   for (int i = 0; i < n; ++i) { 
      if (i != w && candidatos[i][0] != w && candidatos[i][1] != w) { 
         std::cout << fuente << " " << i << " " << 1 << "\n"; 
      } 
   } 
 
   // del primer piso al segundo piso 
   for (int i = 0; i < n; ++i) { 
      std::cout << i << " " << candidatos[i][0] + n << " " << 1 << "\n"; 
      std::cout << i << " " << candidatos[i][1] + n << " " << 1 << "\n"; 
   } 
 
   // del segundo piso al sumidero 
   for (int i = 0; i < n; ++i) { 
      if (i != w) { 
         int votos_tolerados = lobo_recibidos - 1; 
         if (candidatos[w][0] == i || candidatos[w][1] == i) { 
            votos_tolerados -= 1; 
         } 
         std::cout << i + n << " " << sumidero << " " << votos_tolerados << "\n"; 
      } 
   } 
} 
