#include<bits/stdc++.h>
#define ll long long int
using namespace std;
vector<ll>v;
ll mxn=1e7+7;
bool mp[10000007];
void seive(){
for(ll i=2;i<=mxn;i++){
if(mp[i]==0){
v.push_back(i);
for(ll j=i+i;j<=mxn;j+=i){
mp[j]=1;
}
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int tc=1,tc1=1;
cin>>tc;
seive();
up:
while(tc--){
ll n,m,k,ans=2;
cin>>n>>m>>k;
for(ll i=max(2LL,n-m);i<=n+m;i++){
if(i==n){
continue;
}
if(mp[i]==0){
ans=i;
}
}
if(ans==2){
for(ll i=max(2LL,n-m);i<=n+m;i++){
if(i==n){
continue;
}
for(ll j=2;j*j<=i;j++){
if(i%j==0){
ans=max(ans,j);
break;
}
}
}
}
k--;
ll op,baki=1;
for(ll cnt=1;cnt<=k;cnt++){
ll lo=0,hi=v.size()-1,here=ans,in=-1;
while(lo<=hi){
ll mid=(lo+hi)>>1LL;
if(ans>v[mid]){
lo=mid+1;
}
else if(ans<v[mid]){
hi=mid-1;
}
else {
in=mid;
break;
}
}
for(ll j=in+1;j<v.size();j++){
if(v[j]-ans<=m){
here=v[j];
}
else {
break;
}
}
if(here==ans){
baki=k-cnt;
break;
}
else {
ans=here;
}
}
if(ans==2){
for(ll i=2;i<=m+2;i++){
if(mp[i]==0){
op=i;
break;
}
}
}
else {
for(ll i=ans-1;i>=2;i--){
if(mp[i]==0){
op=i;
break;
}
}
}
if(baki%2!=0){
cout<<ans<<'\n';
}
else {
cout<<op<<'\n';
}
}
}