#include #include #include #include using namespace std; struct BigNum { int len,a[10000010]; inline void Clr(){len=0; memset(a,0,sizeof(a));} inline void Turn(int x) { len=1; for (int i=len;i>=1;i--) a[i]=x%10,x/=10; } inline void Print() { for (int i=len;i>=1;i--) printf("%d",a[i]); putchar('\n'); } }One; inline int Max(int x,int y) {return x>y?x:y;} inline BigNum operator + (BigNum A,BigNum B) { int len=Max(A.len,B.len); BigNum C;C.Clr(); C.len=len; for (int i=1;i<=len;i++) { C.a[i]+=A.a[i]+B.a[i]; C.a[i+1]+=C.a[i]/10; C.a[i]%=10; } if (C.a[C.len+1]!=0 && C.len>1) C.len++; return C; } inline BigNum operator * (BigNum A,BigNum B) { BigNum C;C.Clr(); C.len=A.len+B.len+1; for (int i=1;i<=A.len;i++) for (int j=1;j<=B.len;j++) { C.a[i+j-1]+=A.a[i]*B.a[j]; if (C.a[i+j-1]!=0) C.a[i+j]+=C.a[i+j-1]/10; C.a[i+j-1]%=10; } while (C.a[C.len]==0 && C.len>1) C.len--; return C; } inline BigNum operator * (BigNum A,int p) { BigNum C; C.Clr();C.Turn(p); return A*C; } inline BigNum operator / (BigNum A,int p) { for (int i=A.len;i>=1;i--) { if (A.a[i]!=0) A.a[i-1]+=(A.a[i]%p)*10; A.a[i]/=p; } A.a[0]=0; while (A.a[A.len]==0 && A.len>1) A.len--; return A; } inline BigNum operator ^ (BigNum A,int p) { BigNum cur=A,tmp=One; while (true) { if (p&1) tmp=tmp*cur; p>>=1; if (p==0) break; cur=cur*cur; } return tmp; } BigNum str2; int a[20],Kase,Num; int main() { // freopen("c.in","r",stdin); scanf("%d",&Kase); for (int kase=1;kase<=Kase;kase++) { str2.Clr(); bool flag=false; memset(a,0,sizeof(a)); char ch=getchar(); while (ch<'0' || ch>'9') ch=getchar(); while (ch>='0' && ch<='9') a[ch-'0']++,ch=getchar(); int cnt=0; for (int i=1;i<=9;i++) cnt+=a[i]; if (cnt<=1) { puts("Uncertain"); continue; } for (int i=1;i<=9;i++) if (a[i]) { Num=i; a[i]--; break; } for (int i=0;i<=9;i++) while (a[i]) { str2.a[++str2.len]=i; a[i]--; } str2.a[1]+=Num; for (int i=1;i<=str2.len;i++) { str2.a[i+1]+=str2.a[i]/10; str2.a[i]%=10; } if (str2.a[str2.len+1]) str2.len++; (str2).Print(); } return 0; }