#include<bits/stdc++.h>
using namespace std;
const int N=100;
char str[N-1];
//求出字符串中的整数序列
int add(char *str,int count){
int add=0,a;
for(int i=0;i<count;i++){
if(str[i]>='0'&&str[i]<='9'){
a=str[i]-'0';
add=add*10+a;
}
}
return add;
}
//求最大因子
int yinzi(int num){
int a;
for(int i=2;i<num;i++){
if(num%i==0){
return num/i;
//不断更新?最大
}
}
return num;
}
int main(){
int n;
cin>>n;
while(n--){
int count=0;
getchar();
cin.getline(str,N-1);
/* getline(cin,str)的读取原理是将以‘/n’为结束符做为一完整读取的一行,'/n'会读。
所以当之前用cin读取一个字符的时候,你会输入一个字符然后点击回车,
getline(cin,str)读的时候会读入这个回车,并判断结束了。*/
int j=0;
while(str[j]!='\0'){
count++;
j++;
}
int a=add(str,count);
cout<<yinzi(a)<<endl;
}
return 0;
}
/*
输入:长度小于100的任意字符(一个字符串中有空格)
目标:抽取数字字符,拼接
输出:该整数最大因子
*/