1 #include<stdio.h>
2 #include<string.h>
3 int main()
4 {
5 int i,j,k,l,n,h,t,min,head,tail,num[1000];
6 char a[1000];
7 scanf("%d",&t);
8 for(j=0;j<t;j++)
9 {
10 scanf("%s",a);
11 n=strlen(a);
12 min=99999;
13 for(i=n-1;i>=0;i--)
14 {
15 if((a[i]!='0')&&(a[i]<min))
16 {
17 min=a[i];
18 h=i;
19 }
20 }//从右到左找到第一个非零最小数;
21 if(h==0)
22 {
23 printf("%s\n",a);
24 continue;
25 }//如果没有h之前的部分可以直接输出;
26 head=500;
27 tail=500;
28 //分别记录答案序列的头尾位置;
29 num[500]=a[0]-'0';
30 for(i=1;i<h;i++)
31 {
32 if(a[i]-'0'<=num[head])
33 {
34 head--;
35 num[head]=a[i]-'0';
36 }
37 else
38 {
39 tail++;
40 num[tail]=a[i]-'0';
41 }
42 }//先处理前h的部分
43 head--;
44 num[head]=a[h]-'0';//把第h个数字放在最前面
45 for(i=h+1;i<n;i++)
46 {
47 tail++;
48 num[tail]=a[i]-'0';
49 }//把h之后的部分接在后面;
50 for(i=head;i<=tail;i++)
51 {
52 printf("%d",num[i]);
53 }
54 printf("\n");
55 }
56 }