#include <iostream>
#include<vector>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
int n,m;
int a[N],cnt[N];
vector<int> v[N];
int main(){
cin>>n;
for(int i=0;i<n;i++){
int x;
cin>>x;
cnt[x]++;
m=max(m,x);
}
for(int i=1;i<=m;i++)
for(int j=i;j<=m;j+=i){
if(cnt[j]){
for(int k=0;k<cnt[j];k++)v[i].push_back(j);
}
}
for(int i=m;i>=1;i--){
if(v[i].size()>=3){
sort(v[i].begin(),v[i].end());
for(int j=0;j<3;j++)cout<<v[i][j]<<" ";
break;
}
}
return 0;
}
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct P{
int l,d,t;
}p[11];
int n,T;
bool vis[11];
bool dfs(int u,int last){
if(u==n)return true;
for(int i=0;i<n;i++){
int t=p[i].t,d=p[i].d,l=p[i].l;
if(!vis[i]&&d+t>=last){
vis[i]=true;
if(dfs(u+1,max(last,t)+l))return true;
vis[i]=false;
}
}
return false;
}
int main(){
cin>>T;
while(T--){
memset(vis,false,sizeof(vis));
cin>>n;
for(int i=0;i<n;i++)cin>>p[i].t>>p[i].d>>p[i].l;
if(dfs(0,0))cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
int get(int a,int b){
int l=1,r=1e9+1;
while(l<r){
int mid=l+r>>1;
if(a/mid<=b)r=mid;
else l=mid+1;
}
return r;
}
int main(){
cin>>n;
int v_min=1,v_max=1e9;
while(n--){
int a,b;
cin>>a>>b;
v_min=max(v_min,get(a,b));
v_max=min(v_max,get(a,b-1)-1);
}
cout<<v_min<<" "<<v_max;
return 0;
}