#include<bits/stdc++.h>
using namespace std;
const int MAXN=100010;
struct Node{
int address;
int data;
int next;
}node[MAXN];
bool cmp(Node a,Node b){
if(a.data!=b.data) return a.data<b.data;
}
int main()
{
//freopen("in.txt","r",stdin);
int n,start;
cin>>n>>start;
for(int i=0;i<n;i++){
int add;cin>>add;node[add].address=add;
cin>>node[add].data>>node[add].next;
}
vector<Node> ppp;
for(int i=start;i!=-1;i=node[i].next){
ppp.push_back(node[i]);
}
if(ppp.size()==0){
cout<<0<<' '<<-1<<endl;return 0;
}
sort(ppp.begin(),ppp.end(),cmp);
for(int i=0;i<ppp.size();i++){
if(i!=ppp.size()-1){
ppp[i].next=ppp[i+1].address;
}else{
ppp[i].next=-1;
}
}
printf("%d %05d\n",ppp.size(),ppp[0].address);
for(int i=0;i<ppp.size();i++){
if(i!=ppp.size()-1)
printf("%05d %d %05d\n",ppp[i].address,ppp[i].data,ppp[i].next);
else{
printf("%05d %d -1\n",ppp[i].address,ppp[i].data);
}
}
return 0;
}