#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct foralph
{
char* origin;
char* upper;
};
int comparenum(const void* a,const void* b)
{
int* m=(int*)a;
int* n=(int*)b;
return *m-*n;
}
int comparealph(const void* a,const void* b)
{
foralph* m=(foralph*)a;
foralph* n=(foralph*)b;
return strcmp(m->upper,n->upper);
}
int main()
{
int i;
while(1)
{
char* str=new char[100];
foralph alph[100];
int num[100]={0},asize=0,nsize=0,index=-1,end;
char endchar;
int isnum[100]={0};
do
{
index++;
scanf("%s",str);
if (str[0]=='.') return 0;
end=strlen(str)-1;
endchar=str[end];
str[end]='/0';
if(str[0]<='9'&&str[0]>='0'||str[0]=='-')
{
for(i=0;str[i]!='/0';i++)
if(str[i]!='-')
num[nsize]= num[nsize]*10+str[i]-'0';
if(str[0]=='-')
num[nsize]*=-1;
nsize++;
isnum[index]=1;
}
else
{
alph[asize].origin=new char[100];
alph[asize].upper=new char[100];
for(i=0;str[i]!='/0';i++)
{
alph[asize].origin[i]=str[i];
if(str[i]>='A'&&str[i]<='Z')
alph[asize].upper[i]=str[i]-'A'+'a';
else
alph[asize].upper[i]=str[i];
}
alph[asize].origin[i]='/0';
alph[asize].upper[i]='/0';
asize++;
}
}
while(endchar!='.');
qsort(num,nsize,sizeof(int),comparenum);
qsort(alph,asize,sizeof(foralph),comparealph);
int p,q;
p=q=0;
for(i=0;i<index;i++)
if(isnum[i])
printf("%d, ",num[p++]);
else
printf("%s, ",alph[q++].origin);
if(isnum[index])
printf("%d./n",num[p]);
else
printf("%s./n",alph[q].origin);
}
return 0;
}