#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
inline int my_getchar_unlocked(){
static char buf[1048576];
static int s = 1048576;
static int e = 1048576;
if(s == e && e == 1048576){
e = fread_unlocked(buf, 1, 1048576, stdin);
s = 0;
}
if(s == e){
return EOF;
}
return buf[s++];
}
inline void rd(int &x){
int k;
int m=0;
x=0;
for(;;){
k = my_getchar_unlocked();
if(k=='-'){
m=1;
break;
}
if('0'<=k&&k<='9'){
x=k-'0';
break;
}
}
for(;;){
k = my_getchar_unlocked();
if(k<'0'||k>'9'){
break;
}
x=x*10+k-'0';
}
if(m){
x=-x;
}
}
inline void rd(char &c){
int i;
for(;;){
i = my_getchar_unlocked();
if(i!=' '&&i!='\n'&&i!='\r'&&i!='\t'&&i!=EOF){
break;
}
}
c = i;
}
inline int rd(char c[]){
int i;
int sz = 0;
for(;;){
i = my_getchar_unlocked();
if(i!=' '&&i!='\n'&&i!='\r'&&i!='\t'&&i!=EOF){
break;
}
}
c[sz++] = i;
for(;;){
i = my_getchar_unlocked();
if(i==' '||i=='\n'||i=='\r'||i=='\t'||i==EOF){
break;
}
c[sz++] = i;
}
c[sz]='\0';
return sz;
}
inline int rd_int(void){
int x;
rd(x);
return x;
}
struct MY_WRITER{
char buf[1048576];
int s;
int e;
MY_WRITER(){
s = 0;
e = 1048576;
}
~MY_WRITER(){
if(s){
fwrite_unlocked(buf, 1, s, stdout);
}
}
}
;
MY_WRITER MY_WRITER_VAR;
void my_putchar_unlocked(int a){
if(MY_WRITER_VAR.s == MY_WRITER_VAR.e){
fwrite_unlocked(MY_WRITER_VAR.buf, 1, MY_WRITER_VAR.s, stdout);
MY_WRITER_VAR.s = 0;
}
MY_WRITER_VAR.buf[MY_WRITER_VAR.s++] = a;
}
inline void wt_L(char a){
my_putchar_unlocked(a);
}
inline void wt_L(int x){
int s=0;
int m=0;
char f[10];
if(x<0){
m=1;
x=-x;
}
while(x){
f[s++]=x%10;
x/=10;
}
if(!s){
f[s++]=0;
}
if(m){
my_putchar_unlocked('-');
}
while(s--){
my_putchar_unlocked(f[s]+'0');
}
}
inline void wt_L(long long x){
int s=0;
int m=0;
char f[20];
if(x<0){
m=1;
x=-x;
}
while(x){
f[s++]=x%10;
x/=10;
}
if(!s){
f[s++]=0;
}
if(m){
my_putchar_unlocked('-');
}
while(s--){
my_putchar_unlocked(f[s]+'0');
}
}
inline void wt_L(__int128_t x){
int s=0;
int m=0;
char f[40];
if(x<0){
m=1;
x=-x;
}
while(x){
f[s++]=x%10;
x/=10;
}
if(!s){
f[s++]=0;
}
if(m){
my_putchar_unlocked('-');
}
while(s--){
my_putchar_unlocked(f[s]+'0');
}
}
inline void wt_L(const char c[]){
int i=0;
for(i=0;c[i]!='\0';i++){
my_putchar_unlocked(c[i]);
}
}
template<class S, class T> inline S chmin(S &a, T b){
if(a>b){
a=b;
}
return a;
}
template<class S, class T> inline S chmax(S &a, T b){
if(a<b){
a=b;
}
return a;
}
int TEST;
int N;
char S[40];
int ps;
int p[20];
int hist[10];
int h[10];
__int128_t greed(__int128_t x, __int128_t y){
int i;
for(i=(0);i<(10);i++){
h[i] = hist[i];
}
for(;;){
for(i=(0);i<(10);i++){
if(h[i]){
break;
}
}
if(i==10){
break;
}
for(i=(10)-1;i>=(0);i--){
if(h[i]){
break;
}
}
y = 10 * y + i;
h[i]--;
for(i=(0);i<(10);i++){
if(h[i]){
break;
}
}
x = 10 * x + i;
h[i]--;
}
return x - y;
}
int main(){
int i;
int j;
int k;
int KrdatlYV = rd_int();
for(TEST=(0);TEST<(KrdatlYV);TEST++){
__int128_t res = 4611686016279904256LL;
wt_L("Case #");
wt_L(TEST+1);
wt_L(": ");
N = rd(S);
for(i=(0);i<(10);i++){
hist[i] = 0;
}
for(i=(0);i<(N);i++){
hist[S[i]-'0']++;
}
if(N%2){
for(i=(1);i<(10);i++){
if(hist[i]){
hist[i]--;
chmin(res, greed(i,0));
hist[i]++;
}
}
}
else{
int mask;
ps = 0;
for(i=(0);i<(10);i++){
int iMWUTgY_;
for(iMWUTgY_=(0);iMWUTgY_<(hist[i]/2);iMWUTgY_++){
p[ps++] = i;
}
}
if(ps == N/2){
res = 0;
}
for(mask=(0);mask<(1<<ps);mask++){
k = -1;
for(i=(0);i<(ps);i++){
if(((mask) &(1<<(i)))){
chmax(k, p[i]);
}
}
if(k == 0){
continue;
}
for(i=(0);i<(ps);i++){
if(((mask) &(1<<(i)))){
hist[p[i]] -= 2;
}
}
for(i=(0);i<(10);i++){
if(hist[i]){
for(j=(0);j<(i);j++){
if(hist[j]){
if(mask == 0 && j==0){
continue;
}
hist[i]--;
hist[j]--;
chmin(res, greed(i,j));
hist[i]++;
hist[j]++;
}
}
}
}
for(i=(0);i<(ps);i++){
if(((mask) &(1<<(i)))){
hist[p[i]] += 2;
}
}
}
}
wt_L(res);
wt_L('\n');
}
return 0;
}
// cLay version 20210607-1
// --- original code ---
// int TEST;
// int N; char S[40];
// int ps, p[20];
// int hist[10], h[10];
//
// __int128_t greed(__int128_t x, __int128_t y){
// rep(i,10) h[i] = hist[i];
// for(;;){
// rep(i,10) if(h[i]) break;
// if(i==10) break;
//
// rrep(i,10) if(h[i]) break;
// y = 10 * y + i; h[i]--;
//
// rep(i,10) if(h[i]) break;
// x = 10 * x + i; h[i]--;
// }
// return x - y;
// }
//
// {
// int i, j, k;
// REP(TEST, rd_int()){
// __int128_t res = ll_inf;
// wtF("Case #{TEST+1}: ");
// rd(S@N);
// rep(i,10) hist[i] = 0;
// rep(i,N) hist[S[i]-'0']++;
//
// if(N%2){
// rep(i,1,10) if(hist[i]){
// hist[i]--;
// res <?= greed(i,0);
// hist[i]++;
// }
// } else {
// ps = 0;
// rep(i,10) rep(hist[i]/2) p[ps++] = i;
// if(ps == N/2) res = 0;
// rep(mask, 1<<ps){
// k = -1;
// rep(i,ps) if(BIT_ith(mask,i)) k >?= p[i];
// if(k == 0) continue;
// rep(i,ps) if(BIT_ith(mask,i)) hist[p[i]] -= 2;
// rep(i,10) if(hist[i]) rep(j,i) if(hist[j]){
// if(mask == 0 && j==0) continue;
// (hist[i], hist[j])--;
// res <?= greed(i,j);
// (hist[i], hist[j])++;
// }
// rep(i,ps) if(BIT_ith(mask,i)) hist[p[i]] += 2;
// }
// }
//
// wt(res);
// }
// }
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJpbmxpbmUiKQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbmxpbmUgaW50IG15X2dldGNoYXJfdW5sb2NrZWQoKXsKICBzdGF0aWMgY2hhciBidWZbMTA0ODU3Nl07CiAgc3RhdGljIGludCBzID0gMTA0ODU3NjsKICBzdGF0aWMgaW50IGUgPSAxMDQ4NTc2OwogIGlmKHMgPT0gZSAmJiBlID09IDEwNDg1NzYpewogICAgZSA9IGZyZWFkX3VubG9ja2VkKGJ1ZiwgMSwgMTA0ODU3Niwgc3RkaW4pOwogICAgcyA9IDA7CiAgfQogIGlmKHMgPT0gZSl7CiAgICByZXR1cm4gRU9GOwogIH0KICByZXR1cm4gYnVmW3MrK107Cn0KaW5saW5lIHZvaWQgcmQoaW50ICZ4KXsKICBpbnQgazsKICBpbnQgbT0wOwogIHg9MDsKICBmb3IoOzspewogICAgayA9IG15X2dldGNoYXJfdW5sb2NrZWQoKTsKICAgIGlmKGs9PSctJyl7CiAgICAgIG09MTsKICAgICAgYnJlYWs7CiAgICB9CiAgICBpZignMCc8PWsmJms8PSc5Jyl7CiAgICAgIHg9ay0nMCc7CiAgICAgIGJyZWFrOwogICAgfQogIH0KICBmb3IoOzspewogICAgayA9IG15X2dldGNoYXJfdW5sb2NrZWQoKTsKICAgIGlmKGs8JzAnfHxrPic5Jyl7CiAgICAgIGJyZWFrOwogICAgfQogICAgeD14KjEwK2stJzAnOwogIH0KICBpZihtKXsKICAgIHg9LXg7CiAgfQp9CmlubGluZSB2b2lkIHJkKGNoYXIgJmMpewogIGludCBpOwogIGZvcig7Oyl7CiAgICBpID0gbXlfZ2V0Y2hhcl91bmxvY2tlZCgpOwogICAgaWYoaSE9JyAnJiZpIT0nXG4nJiZpIT0nXHInJiZpIT0nXHQnJiZpIT1FT0YpewogICAgICBicmVhazsKICAgIH0KICB9CiAgYyA9IGk7Cn0KaW5saW5lIGludCByZChjaGFyIGNbXSl7CiAgaW50IGk7CiAgaW50IHN6ID0gMDsKICBmb3IoOzspewogICAgaSA9IG15X2dldGNoYXJfdW5sb2NrZWQoKTsKICAgIGlmKGkhPScgJyYmaSE9J1xuJyYmaSE9J1xyJyYmaSE9J1x0JyYmaSE9RU9GKXsKICAgICAgYnJlYWs7CiAgICB9CiAgfQogIGNbc3orK10gPSBpOwogIGZvcig7Oyl7CiAgICBpID0gbXlfZ2V0Y2hhcl91bmxvY2tlZCgpOwogICAgaWYoaT09JyAnfHxpPT0nXG4nfHxpPT0nXHInfHxpPT0nXHQnfHxpPT1FT0YpewogICAgICBicmVhazsKICAgIH0KICAgIGNbc3orK10gPSBpOwogIH0KICBjW3N6XT0nXDAnOwogIHJldHVybiBzejsKfQppbmxpbmUgaW50IHJkX2ludCh2b2lkKXsKICBpbnQgeDsKICByZCh4KTsKICByZXR1cm4geDsKfQpzdHJ1Y3QgTVlfV1JJVEVSewogIGNoYXIgYnVmWzEwNDg1NzZdOwogIGludCBzOwogIGludCBlOwogIE1ZX1dSSVRFUigpewogICAgcyA9IDA7CiAgICBlID0gMTA0ODU3NjsKICB9CiAgfk1ZX1dSSVRFUigpewogICAgaWYocyl7CiAgICAgIGZ3cml0ZV91bmxvY2tlZChidWYsIDEsIHMsIHN0ZG91dCk7CiAgICB9CiAgfQp9CjsKTVlfV1JJVEVSIE1ZX1dSSVRFUl9WQVI7CnZvaWQgbXlfcHV0Y2hhcl91bmxvY2tlZChpbnQgYSl7CiAgaWYoTVlfV1JJVEVSX1ZBUi5zID09IE1ZX1dSSVRFUl9WQVIuZSl7CiAgICBmd3JpdGVfdW5sb2NrZWQoTVlfV1JJVEVSX1ZBUi5idWYsIDEsIE1ZX1dSSVRFUl9WQVIucywgc3Rkb3V0KTsKICAgIE1ZX1dSSVRFUl9WQVIucyA9IDA7CiAgfQogIE1ZX1dSSVRFUl9WQVIuYnVmW01ZX1dSSVRFUl9WQVIucysrXSA9IGE7Cn0KaW5saW5lIHZvaWQgd3RfTChjaGFyIGEpewogIG15X3B1dGNoYXJfdW5sb2NrZWQoYSk7Cn0KaW5saW5lIHZvaWQgd3RfTChpbnQgeCl7CiAgaW50IHM9MDsKICBpbnQgbT0wOwogIGNoYXIgZlsxMF07CiAgaWYoeDwwKXsKICAgIG09MTsKICAgIHg9LXg7CiAgfQogIHdoaWxlKHgpewogICAgZltzKytdPXglMTA7CiAgICB4Lz0xMDsKICB9CiAgaWYoIXMpewogICAgZltzKytdPTA7CiAgfQogIGlmKG0pewogICAgbXlfcHV0Y2hhcl91bmxvY2tlZCgnLScpOwogIH0KICB3aGlsZShzLS0pewogICAgbXlfcHV0Y2hhcl91bmxvY2tlZChmW3NdKycwJyk7CiAgfQp9CmlubGluZSB2b2lkIHd0X0wobG9uZyBsb25nIHgpewogIGludCBzPTA7CiAgaW50IG09MDsKICBjaGFyIGZbMjBdOwogIGlmKHg8MCl7CiAgICBtPTE7CiAgICB4PS14OwogIH0KICB3aGlsZSh4KXsKICAgIGZbcysrXT14JTEwOwogICAgeC89MTA7CiAgfQogIGlmKCFzKXsKICAgIGZbcysrXT0wOwogIH0KICBpZihtKXsKICAgIG15X3B1dGNoYXJfdW5sb2NrZWQoJy0nKTsKICB9CiAgd2hpbGUocy0tKXsKICAgIG15X3B1dGNoYXJfdW5sb2NrZWQoZltzXSsnMCcpOwogIH0KfQppbmxpbmUgdm9pZCB3dF9MKF9faW50MTI4X3QgeCl7CiAgaW50IHM9MDsKICBpbnQgbT0wOwogIGNoYXIgZls0MF07CiAgaWYoeDwwKXsKICAgIG09MTsKICAgIHg9LXg7CiAgfQogIHdoaWxlKHgpewogICAgZltzKytdPXglMTA7CiAgICB4Lz0xMDsKICB9CiAgaWYoIXMpewogICAgZltzKytdPTA7CiAgfQogIGlmKG0pewogICAgbXlfcHV0Y2hhcl91bmxvY2tlZCgnLScpOwogIH0KICB3aGlsZShzLS0pewogICAgbXlfcHV0Y2hhcl91bmxvY2tlZChmW3NdKycwJyk7CiAgfQp9CmlubGluZSB2b2lkIHd0X0woY29uc3QgY2hhciBjW10pewogIGludCBpPTA7CiAgZm9yKGk9MDtjW2ldIT0nXDAnO2krKyl7CiAgICBteV9wdXRjaGFyX3VubG9ja2VkKGNbaV0pOwogIH0KfQp0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBUPiBpbmxpbmUgUyBjaG1pbihTICZhLCBUIGIpewogIGlmKGE+Yil7CiAgICBhPWI7CiAgfQogIHJldHVybiBhOwp9CnRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+IGlubGluZSBTIGNobWF4KFMgJmEsIFQgYil7CiAgaWYoYTxiKXsKICAgIGE9YjsKICB9CiAgcmV0dXJuIGE7Cn0KaW50IFRFU1Q7CmludCBOOwpjaGFyIFNbNDBdOwppbnQgcHM7CmludCBwWzIwXTsKaW50IGhpc3RbMTBdOwppbnQgaFsxMF07Cl9faW50MTI4X3QgZ3JlZWQoX19pbnQxMjhfdCB4LCBfX2ludDEyOF90IHkpewogIGludCBpOwogIGZvcihpPSgwKTtpPCgxMCk7aSsrKXsKICAgIGhbaV0gPSBoaXN0W2ldOwogIH0KICBmb3IoOzspewogICAgZm9yKGk9KDApO2k8KDEwKTtpKyspewogICAgICBpZihoW2ldKXsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogICAgaWYoaT09MTApewogICAgICBicmVhazsKICAgIH0KICAgIGZvcihpPSgxMCktMTtpPj0oMCk7aS0tKXsKICAgICAgaWYoaFtpXSl7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICAgIHkgPSAxMCAqIHkgKyBpOwogICAgaFtpXS0tOwogICAgZm9yKGk9KDApO2k8KDEwKTtpKyspewogICAgICBpZihoW2ldKXsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogICAgeCA9IDEwICogeCArIGk7CiAgICBoW2ldLS07CiAgfQogIHJldHVybiB4IC0geTsKfQppbnQgbWFpbigpewogIGludCBpOwogIGludCBqOwogIGludCBrOwogIGludCBLcmRhdGxZViA9IHJkX2ludCgpOwogIGZvcihURVNUPSgwKTtURVNUPChLcmRhdGxZVik7VEVTVCsrKXsKICAgIF9faW50MTI4X3QgcmVzID0gNDYxMTY4NjAxNjI3OTkwNDI1NkxMOwogICAgd3RfTCgiQ2FzZSAjIik7CiAgICB3dF9MKFRFU1QrMSk7CiAgICB3dF9MKCI6ICIpOwogICAgTiA9IHJkKFMpOwogICAgZm9yKGk9KDApO2k8KDEwKTtpKyspewogICAgICBoaXN0W2ldID0gMDsKICAgIH0KICAgIGZvcihpPSgwKTtpPChOKTtpKyspewogICAgICBoaXN0W1NbaV0tJzAnXSsrOwogICAgfQogICAgaWYoTiUyKXsKICAgICAgZm9yKGk9KDEpO2k8KDEwKTtpKyspewogICAgICAgIGlmKGhpc3RbaV0pewogICAgICAgICAgaGlzdFtpXS0tOwogICAgICAgICAgY2htaW4ocmVzLCBncmVlZChpLDApKTsKICAgICAgICAgIGhpc3RbaV0rKzsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGVsc2V7CiAgICAgIGludCBtYXNrOwogICAgICBwcyA9IDA7CiAgICAgIGZvcihpPSgwKTtpPCgxMCk7aSsrKXsKICAgICAgICBpbnQgaU1XVVRnWV87CiAgICAgICAgZm9yKGlNV1VUZ1lfPSgwKTtpTVdVVGdZXzwoaGlzdFtpXS8yKTtpTVdVVGdZXysrKXsKICAgICAgICAgIHBbcHMrK10gPSBpOwogICAgICAgIH0KICAgICAgfQogICAgICBpZihwcyA9PSBOLzIpewogICAgICAgIHJlcyA9IDA7CiAgICAgIH0KICAgICAgZm9yKG1hc2s9KDApO21hc2s8KDE8PHBzKTttYXNrKyspewogICAgICAgIGsgPSAtMTsKICAgICAgICBmb3IoaT0oMCk7aTwocHMpO2krKyl7CiAgICAgICAgICBpZigoKG1hc2spICYoMTw8KGkpKSkpewogICAgICAgICAgICBjaG1heChrLCBwW2ldKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoayA9PSAwKXsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBmb3IoaT0oMCk7aTwocHMpO2krKyl7CiAgICAgICAgICBpZigoKG1hc2spICYoMTw8KGkpKSkpewogICAgICAgICAgICBoaXN0W3BbaV1dIC09IDI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvcihpPSgwKTtpPCgxMCk7aSsrKXsKICAgICAgICAgIGlmKGhpc3RbaV0pewogICAgICAgICAgICBmb3Ioaj0oMCk7ajwoaSk7aisrKXsKICAgICAgICAgICAgICBpZihoaXN0W2pdKXsKICAgICAgICAgICAgICAgIGlmKG1hc2sgPT0gMCAmJiBqPT0wKXsKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoaXN0W2ldLS07CiAgICAgICAgICAgICAgICBoaXN0W2pdLS07CiAgICAgICAgICAgICAgICBjaG1pbihyZXMsIGdyZWVkKGksaikpOwogICAgICAgICAgICAgICAgaGlzdFtpXSsrOwogICAgICAgICAgICAgICAgaGlzdFtqXSsrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmb3IoaT0oMCk7aTwocHMpO2krKyl7CiAgICAgICAgICBpZigoKG1hc2spICYoMTw8KGkpKSkpewogICAgICAgICAgICBoaXN0W3BbaV1dICs9IDI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICB3dF9MKHJlcyk7CiAgICB3dF9MKCdcbicpOwogIH0KICByZXR1cm4gMDsKfQovLyBjTGF5IHZlcnNpb24gMjAyMTA2MDctMQoKLy8gLS0tIG9yaWdpbmFsIGNvZGUgLS0tCi8vIGludCBURVNUOwovLyBpbnQgTjsgY2hhciBTWzQwXTsKLy8gaW50IHBzLCBwWzIwXTsKLy8gaW50IGhpc3RbMTBdLCBoWzEwXTsKLy8gCi8vIF9faW50MTI4X3QgZ3JlZWQoX19pbnQxMjhfdCB4LCBfX2ludDEyOF90IHkpewovLyAgIHJlcChpLDEwKSBoW2ldID0gaGlzdFtpXTsKLy8gICBmb3IoOzspewovLyAgICAgcmVwKGksMTApIGlmKGhbaV0pIGJyZWFrOwovLyAgICAgaWYoaT09MTApIGJyZWFrOwovLyAKLy8gICAgIHJyZXAoaSwxMCkgaWYoaFtpXSkgYnJlYWs7Ci8vICAgICB5ID0gMTAgKiB5ICsgaTsgaFtpXS0tOwovLyAKLy8gICAgIHJlcChpLDEwKSBpZihoW2ldKSBicmVhazsKLy8gICAgIHggPSAxMCAqIHggKyBpOyBoW2ldLS07Ci8vICAgfQovLyAgIHJldHVybiB4IC0geTsKLy8gfQovLyAKLy8gewovLyAgIGludCBpLCBqLCBrOwovLyAgIFJFUChURVNULCByZF9pbnQoKSl7Ci8vICAgICBfX2ludDEyOF90IHJlcyA9IGxsX2luZjsKLy8gICAgIHd0RigiQ2FzZSAje1RFU1QrMX06ICIpOwovLyAgICAgcmQoU0BOKTsKLy8gICAgIHJlcChpLDEwKSBoaXN0W2ldID0gMDsKLy8gICAgIHJlcChpLE4pIGhpc3RbU1tpXS0nMCddKys7Ci8vIAovLyAgICAgaWYoTiUyKXsKLy8gICAgICAgcmVwKGksMSwxMCkgaWYoaGlzdFtpXSl7Ci8vICAgICAgICAgaGlzdFtpXS0tOwovLyAgICAgICAgIHJlcyA8Pz0gZ3JlZWQoaSwwKTsKLy8gICAgICAgICBoaXN0W2ldKys7Ci8vICAgICAgIH0KLy8gICAgIH0gZWxzZSB7Ci8vICAgICAgIHBzID0gMDsKLy8gICAgICAgcmVwKGksMTApIHJlcChoaXN0W2ldLzIpIHBbcHMrK10gPSBpOwovLyAgICAgICBpZihwcyA9PSBOLzIpIHJlcyA9IDA7Ci8vICAgICAgIHJlcChtYXNrLCAxPDxwcyl7Ci8vICAgICAgICAgayA9IC0xOwovLyAgICAgICAgIHJlcChpLHBzKSBpZihCSVRfaXRoKG1hc2ssaSkpIGsgPj89IHBbaV07Ci8vICAgICAgICAgaWYoayA9PSAwKSBjb250aW51ZTsKLy8gICAgICAgICByZXAoaSxwcykgaWYoQklUX2l0aChtYXNrLGkpKSBoaXN0W3BbaV1dIC09IDI7Ci8vICAgICAgICAgcmVwKGksMTApIGlmKGhpc3RbaV0pIHJlcChqLGkpIGlmKGhpc3Rbal0pewovLyAgICAgICAgICAgaWYobWFzayA9PSAwICYmIGo9PTApIGNvbnRpbnVlOwovLyAgICAgICAgICAgKGhpc3RbaV0sIGhpc3Rbal0pLS07Ci8vICAgICAgICAgICByZXMgPD89IGdyZWVkKGksaik7Ci8vICAgICAgICAgICAoaGlzdFtpXSwgaGlzdFtqXSkrKzsKLy8gICAgICAgICB9Ci8vICAgICAgICAgcmVwKGkscHMpIGlmKEJJVF9pdGgobWFzayxpKSkgaGlzdFtwW2ldXSArPSAyOwovLyAgICAgICB9Ci8vICAgICB9Ci8vIAovLyAgICAgd3QocmVzKTsKLy8gICB9Ci8vIH0K