#include <stdio.h>
#include <string.h>
int data[6] = { 0, };
int length;
int max;
int n;
void dfs(int ptr, int depth) {
if (depth == n) {
int temp = 0;
int check = 1;
for (int i = length-1; i >=0; i--) {
temp = temp + data[i] * check;
check = check * 10;
}
if (temp > max)
max = temp;
return;
}
if (ptr >= length)
{
int check[10] = { 0, };
for (int i = 0; i < length; i++) {
check[data[i]]++;
if (check[data[i]] >= 2) {
depth = n;
}
}
if ((n - depth) % 2 == 0)
{
int temp = 0;
int check = 1;
for (int i = length - 1; i >= 0; i--) {
temp = temp + data[i] * check;
check = check * 10;
}
if (temp > max)
max = temp;
return;
}
else {
int temp2 = data[length - 1];
data[length - 1] = data[length - 2];
data[length - 2] = temp2;
int temp = 0;
int check = 1;
for (int i = length - 1; i >= 0; i--) {
temp = temp + data[i] * check;
check = check * 10;
}
if (temp > max)
max = temp;
temp2 = data[length - 1];
data[length - 1] = data[length - 2];
data[length - 2] = temp2;
return;
}
}
for (int j = ptr+1; j <length; j++) {
if (data[ptr] <data[j]) {//더큰 인덱스가 있다.
int temp = data[j];
data[j] = data[ptr];
data[ptr] = temp;
dfs(ptr + 1, depth + 1);
temp = data[j];
data[j] = data[ptr];
data[ptr] = temp;
}
}
dfs(ptr + 1, depth);
}
int main(void)
{
int test_case;
scanf("%d\n", &test_case);
for (int z = 1; z<= test_case; z++) {
char num[7];
scanf("%s", num);
scanf("%d", &n);
length = strlen(num);
max = 0;
for (int i = 0; i < length; i++)
data[i] = num[i]-'0';
dfs(0, 0);
printf("#%d %d\n", z,max);
}
return 0;
}