
#include<bits/stdc++.h>
using namespace std;
struct node{
string cur;
int val;
string next;
bool operator < (const node &x)
{
return val < x.val;
}
};
vector<node> ans;
unordered_map<string,node> mp;
int main()
{
int n,val;
char h[10],nex[10];
scanf("%d%s",&n,&h);
string head(h);
for(int i=0;i<n;i++){
scanf("%s%d%s",h,&val,nex);
mp[h]={h,val,nex};
}
for(string i=head;i!="-1";i=mp[i].next) ans.push_back(mp[i]);
if(ans.size()<1) puts("0 -1");
else{
sort(ans.begin(),ans.end());
printf("%d %s\n",ans.size(),ans[0].cur.c_str());
for(int i=0;i<ans.size();i++)
{
if(i==ans.size()-1) printf("%s %d -1\n",ans[i].cur.c_str(),ans[i].val);
else printf("%s %d %s\n",ans[i].cur.c_str(),ans[i].val,ans[i+1].cur.c_str());
}
}
return 0;
}