#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
struct node
{
char name[20];
struct node *next;
};
struct STU
{
char name[20];
};
struct tool
{
char name[20];
};
struct paixu
{
char name[20];
};
int main()
{
struct node *head,*p,*q,*t;
int i,n;
char s,j;
int a,b,c;
char k[100],z[100];
head=NULL;
struct STU stu[100];
struct tool tea[100];
struct paixu str[100][100];
for (i=0;i<100&&s!='\n';i++){
p=(struct node *)malloc(sizeof(struct node));
scanf("%s",&p->name);
p->next=NULL;
if(head==NULL)
head=p;
else
q->next=p;
q=p;
strcpy(stu[i].name,p->name);
s=getchar();
}
for(int a=0;a<i;a++){
strcpy(tea[0].name,stu[0].name);
for(int j = 0;j<i;j++){
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[i].name,tea[0].name);
}
for(int j=0;j<i;j++){
strcpy(str[a][j].name,stu[j].name);
}
}
for(int j=0;j<i;j++){
int min=j;
for(int h=j+1;h<i;h++)
{
if(strcmp(str[min][0].name,str[h][0].name)>0)
{
min=h;//找出本次循环最小的一个
}
}
if(min!=j)//放到开头
{
for(int s=0;s<i;s++){
strcpy(z,str[min][s].name);
strcpy(str[min][s].name,str[j][s].name);
strcpy(str[j][s].name,z);
}
}
}
for(int a=0;a<=i;a++){
for(int j=0;j<=i;j++){
printf("%s ",str[a][j].name);
}
printf("\n");
}
}