#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define dd ch=getchar()
inline ll read()
{
ll x=0;char dd;bool f=false;
while(!isdigit(ch))f|=ch=='-',dd;
while(isdigit(ch))x=(x<<1)+(x<<3)+ch-48,dd;
return f?-x:x;
}
#undef dd
void write(ll x)
{
if(x<0)x=-x,putchar('-');
if(x>9)write(x/10);
putchar(x%10+48);
}
#define writeln(x) (write(x),putchar('\n'))
#define writesp(x) (write(x),putchar(' '))
int Q,n,m,p,sum[30],ans[30];
double tt;
bool bl;
void zu(int x,int y,int p,int ppp)
{
//if (x==0) cout<<x<<" "<<y<<" "<<p<<" "<<ppp<<endl;
memset(sum,0,sizeof(sum));
int xx=x;
while (x!=0)
{
if (x<0) return;
sum[0]++;
if (sum[0]==1&&y!=-1) sum[sum[0]]=(ppp==0)?min(y,x):y;
else if (sum[0]<=p) sum[sum[0]]=9; else
if (sum[0]-p==1) sum[sum[0]]=min(8,x); else sum[sum[0]]=min(9,x);
x-=sum[sum[0]];
//if (xx==2) cout<<sum[0]<<" "<<sum[sum[0]]<<endl;
}
if (xx==0) sum[0]++,sum[sum[0]]=0;
if (sum[0]<p) return;
//if (xx==14) for (int i=sum[0];i>=1;i--) cout<<sum[i];
//cout<<endl;
if (sum[0]<ans[0]&&sum[0]!=0)
{
for (int i=0;i<=20;i++) ans[i]=sum[i];
} else
{
bl=1;
for (int i=20;i>=1;i--)
if (sum[i]>ans[i])
{
bl=0;break;
} else if (sum[i]<ans[i])
{
break;
}
if (bl) for (int i=0;i<=20;i++) ans[i]=sum[i];
}
}
int main(){
//freopen("wh.in","r",stdin);
//freopen("wh.out","w",stdout);
Q=read();
while (Q--)
{
n=read();m=read();memset(ans,0x3f,sizeof(ans));
if (m==0) zu(n,-1,-1,0);
else
{
tt=(double)(n-(m*m+m)/2)/(m+1);
if (abs((int)tt-tt)<=1e-5&&tt>=0)
zu((int)tt,9-m,0,0);p=0;
for (int i=1;i<=18;i++)
{
p=p+9;
for (int j=1;j<=m;j++)
{
tt=(double)((n+(m-j+1)*p)-(m*m+m)/2)/(m+1);
if (abs((int)tt-tt)<=1e-5&&tt>=0&&tt<=n){
zu((int)tt,9-j+1,i,1);}
}
}
}
if (ans[0]!=0x3f3f3f3f&&n>=m) {for (int i=ans[0];i>=1;i--) cout<<ans[i];cout<<"\n";}
else cout<<-1<<endl;
}
//fclose(stdin);
//fclose(stdout);
return 0;
}
/*
7
1 0
1 1
42 7
13 7
99 1
99 0
99 2
*/