#include <bits/stdc++.h>
using namespace std;
 
#define int long long
//#define int unsigned int
//#define pb push_back
//#define mp make_pair
#define mod 1000000007
#define double long double
#define all(x) x.begin(), x.end()
#define debug(x) cout << #x << " = " << x << "\n"
const int inf=1e18;
const int maxu=200005;
//int d;
//vector <int> adj[maxu];  
//vector <int> vis(maxu);
//vector <vector <int>> v(maxu);

/*int fun(int a,int b){
    if(b==0)return 1;
    else if(a==1)return 1;
    int temp=fun(a,b/2)%mod;
    temp=(temp*temp)%mod;
     if(b%2==1)temp=(temp*a)%mod;
    return temp%mod;
}
 
int inv(int a,int b){
    return (a*fun(b,mod-2))%mod;
}

void dfs(int s){
    if(vis[s])return;
    vis[s]=1;
    for(auto u:adj[s]){
        dfs(u);
    }
}*/

 
signed main()
{   /*  
   #ifndef ONLINE_JUDGE 
   freopen("inputhsr.txt", "r", stdin);  
   freopen("outputhsr.txt", "w", stdout); 
   #endif 
   */
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int i,j,k=0,n,t=1,m,l=0;
    
    
    
    //cin>>t;
    while(t--){
        cin>>n;
        
        int a[n+1];
        
        for(i=1;i<=n;i++)cin>>a[i];
        
        vector <vector<int>> v;
        
        for(i=1;i<=n;i++){
            for(j=i+1;j<=n;j++){
                int val=abs(a[j]-a[i]);
                if(a[i]<a[j]){
                    vector <int> v1={val,j,i};
                    v.push_back(v1);
                }
                else{
                    vector <int> v1={val,i,j};
                    v.push_back(v1);
                    
                }
                
                
            }
        }
        
        sort(all(v));
        reverse(all(v));
        
        int ans=false;
        
        for(auto u:v){
            cout<<"? "<<u[1]<<" "<<u[2]<<endl;
            string s;
            cin>>s;
            if(s=="Yes"){
                cout<<"! "<<u[1]<<" "<<u[2]<<endl;
                ans=true;break;
            }
        }
        
        if(!ans){
            cout<<"! "<<0<<" "<<0<<endl;
        }
        
        /*
       for(i=0;i<=n;i++)vis[i]=0;
       for(i=0;i<=n;i++){
            adj[i].clear();
       }
       */
       
        /*string s;
        cin>>s;
        n=s.length();*/

        //memset(a,0,sizeof(a));
        //cout<<fixed<<setprecision(10)<<ans<<"\n";
       
    }
    return 0;
}

