#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <algorithm> #include <cmath> #include <map> using namespace std; string str[31][105]; string compare[105]; int rowCounter[31]; char tmp[105]; int totalCol, total; void ssort() { int i,j,k; for (i=0;i<totalCol;i++) { for (j=0;j<rowCounter[i]-1;j++) { string xxx=str[i][j]; int rec=-1; for (k=j+1;k<rowCounter[i];k++) if (str[i][k]<xxx) { xxx=str[i][k]; rec=k; } if (rec!=-1) { string ttt=str[i][j]; str[i][j]=str[i][rec]; str[i][rec]=ttt; } } } } string findstr(int x) { int i; int tmpTotal=total; string bbb; for (i=0;i<totalCol;i++) { int xx=tmpTotal/rowCounter[i]; bbb+=str[i][x/xx]+" "; x%=xx; tmpTotal=xx; } return bbb; } bool cmp(const string &a,const string &b) { return a<b; } int main() { int n,k; scanf("%d%d",&n,&k); int i; int col; map<string, bool> M[31]; for (i=0;i<n;i++) { col=0; scanf("%s%s%s%s",tmp,tmp,tmp,tmp); while (1) { string t; cin >> t; if (t=="cow.") break; else if (!M[col][t]) { M[col][t]=true; str[col][rowCounter[col]]=t; rowCounter[col]++; } compare[i]+=t+" "; col++; } } sort(compare,compare+n,cmp); totalCol=col; total=1; for (i=0;i<totalCol;i++) { ssort(); total*=rowCounter[i]; } string now=findstr(k-1); i=0; while (i<n && compare[i]<=now) { k++; i++; now=findstr(k-1); } now.resize(now.length()-1); cout << now << endl; }