//dp问题, 10^19, long long存储结果
#include <iostream>
#include <string.h>
using namespace std;
long long fun(int i, int j, int m);
long long d[25][25][25];//记忆数组
char n[25];//用字符数组存储n,方便处理
int m;
int main()
{
int T;
cin >> T;
while(T--)
{
memset(d, -1, sizeof(d));
memset(n, 0, sizeof(n));
cin >> (n + 1) >> m;
int len = strlen(n+1);
cout << fun(1, len, m) << endl;
}
}
long long fun(int i, int j, int m)//自顶向下+备忘
{
int k;
long long t;
if(m == 1)//m=1时,剩余数字不用再划分,返回剩余的数字的值
{
t = 0;
for(int l = i; l <= j; l++)
{
t = n[l]-'0' + t*10;
}
return t;
}
if(d[i][j][m] > -1)
return d[i][j][m];
for(k = i; k <= j-m+1; k++)
{
t = 0;
for(int l = i; l <= k; l++)
{
t = n[l]-'0' + t*10;
}
d[i][j][m] = d[i][j][m] >= t * fun(k+1, j, m-1) ? d[i][j][m] : t * fun(k+1, j, m-1);
}
return d[i][j][m];
}