#include<bits/stdc++.h>
using namespace std;
int t,k,n,m,dp[1005][1005];
char a[1005],b[1005];
string s;
int vf,st[1005];
int main()
{
freopen("seif.in","r",stdin);
freopen("seif.out","w",stdout);
scanf("%d",&t);
while(t--)
{
scanf("%d",&k);
scanf("%s",a+1);
scanf("%s",b+1);
n=strlen(a+1);
m=strlen(b+1);
reverse(a+1,a+n+1);
reverse(b+1,b+n+1);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i]==b[j]) dp[i][j]=1+dp[i-1][j-1];
else dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
int i=n;
int j=m;
s.clear();
int elemente=0;
while(elemente<dp[n][m])
{
if(a[i]==b[j])
{
elemente++;
s.push_back(a[i]);
i--;
j--;
}
else
{
if(dp[i-1][j]<dp[i][j-1] || (dp[i-1][j]==dp[i][j-1] && a[i]>b[j]))
{
j--;
}
else
i--;
}
}
// reverse(s.begin(),s.end());
vf=0;
int elim=s.size()-k;
int sz=s.size();
// cerr<<s<<'\n';
for(int i=0;i<sz;i++)
{
while(vf && elim && s[i]>s[st[vf]])
{
vf--;
elim--;
}
st[++vf]=i;
}
for(int i=1;i<=vf;i++)
printf("%c",s[st[i]]);
printf("\n");
}
return 0;
}