Go: /*
	http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1600&lang=jp
	Entrance Examination
*/

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

// 標準入力を取得するScannerのインスタンスを作成
var scanner = bufio.NewScanner(os.Stdin)

// 標準入力で各行を読み込みintとして返す

func readLine() int {
	if scanner.Scan() {
		number, _ := strconv.Atoi(scanner.Text())
		return number
	}
	return 0
}

func main() {
	// 改行から空白区切りに変更
	scanner.Split(bufio.ScanWords)

	// 0 0 0の行に到達するまでループする
	for {
		// 合格者、不合格者の境目=ギャップ
		m := readLine()   // 受験者の人数
		min := readLine() // 合格者の最小人数
		max := readLine() // 合格者の最大人数

		// 0 0 0の行に到達したのでループを抜け終了する
		if m == 0 && min == 0 && max == 0 {
			break
		}

		// 得点を格納するsliceを初期化
		ps := make([]int, 0, m)

		// sliceに得点を格納する
		for i := 0; i < m; i++ {
			ps = append(ps, readLine())
		}

		tmp := 0    // ギャップを一時的に保存
		gap := 0    // ギャップの最大値を保存
		answer := 0 // ギャップが最大になった時のindex(合格人数)を保存

		// 合格者の最小人数〜最大人数のギャップを計算する
		for i := min; i <= max; i++ {
			tmp = ps[i-1] - ps[i]

			// ギャップの最大値が更新された場合、最大値と合格人数を更新する
			// ギャップが同じ値だった場合も合格人数を更新する
			// (合格人数が多い方が優先されるので後から現れた値が優先される)
			if tmp >= gap {
				gap = tmp
				answer = i
			}
		}
		fmt.Println(answer)
	}
}

C++: //#define _GRIBCXX_DEBUG
#include <bits/stdc++.h>
using namespace std;

// ?????¬???????????¬??????
#pragma region MACRO
#define P(x) cout << (x) << endl
#define p(x) cout << (x)
#define PED cout << "\n"
#define rep(i,n) for(int i=0; i<(int)n; ++i)
#define REP(i,x,n) for(int i=x; i<(int)n; ++i)
#define repi(i,n) for(int i=0; i<=(int)n; ++i)
#define REPI(i,x,n) for(int i=x; i<=(int)n; ++i)
#define ILP while(true)
#define FOR(i,c) for(__typeof((c).begin())!=(c).begin(); i!=(c).end(); ++i)
#define ALL(c) (c).begin(), (c).end()
#define mp make_pair
#pragma endregion

// ???
#pragma region TYPE_DEF
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<string, string> pss;
typedef pair<string, int> psi;
typedef pair<int, string> pis;
typedef vector<int> vi;
typedef vector<double> vd;
typedef vector<long double> vld;
typedef vector<long> vl;
typedef vector<long long> vll;
typedef vector<string> vs;
#pragma endregion

// Effective std
#pragma region ESTD
template<typename C, typename T> int count(C& c, T t) { return count(ALL(c), t); }
template<typename C, typename F> int count_if(C& c, F f) { return count_if(ALL(c), f); }
template<typename C, typename T> void erase(C& c, T t) { remove(ALL(c), t), c.end(); }
template<typename C> void remove(vector<C>& c, unsigned int index) { c.erase(c.begin()+index); }
template<typename C, typename T, typename U> void replace(C& c, T t, U u) { replace(ALL(c), t, u); }
template<typename C, typename F, typename U> void replace_if(C& c, F f, U u) { (ALL(c), f, u); }
template<typename C> void reverse(C& c) { reverse(ALL(c)); }
template<typename C> void sort(C& c) { sort(ALL(c)); }
template<typename C, typename Pred> void sort(C& c, Pred p) { sort(ALL(c), p); }
#pragma endregion

// ?????°
#pragma region CONST_VAL
constexpr int PI = (2*acos(0.0));
constexpr int EPS = (1e-9);
constexpr int MOD = (int)(1e9+7);
constexpr int INF = 100000000;
#pragma endregion


int main()
{
    int m, nmin, nmax;
    while(cin>>m>>nmin>>nmax, m) {
        vi v(m);
        rep(i,m) cin>>v[i];
        sort(v);
        int tmp = 0;
        int ans = 0;
        REPI(i,nmin,nmax) {
            if(v[m-i]-v[m-i-1]>=tmp) {
                tmp = v[m-i]-v[m-i-1];
                ans = i;
            }
        }
        P(ans);
    }
    return 0;
}

C++: #include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <functional>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cassert>
 
using namespace std;
 
#define REP(i,s,e) for(int i=(s); i<(int)(e); i++)
#define rep(i,n) REP(i, 0, n)
#define pb push_back
#define mp make_pair
#define all(r) (r).begin(),(r).end()
#define rall(r) (r).rbegin(),(r).rend()
#define fi first
#define se second
#define DBG(X) cout<<" "<<#X<<" : "<<X<<endl
 
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int, int> pii;

const int INF = 1e9;
const double EPS = 1e-8;
const int mod = 1e9 + 7;
const ll LINF = 1e18;

struct Input
{
	int n;char c;char str[1024];string s;ll l;
	int nextInt(){scanf("%d", &n);return n;}
	ll nextLong(){scanf("%lld", &l);return l;}
	char nextChar(){scanf("%c", &c);return c;}
	string next(){scanf("%s", str);return string(str);}
	string nextLine(){getline(cin, s);return s;}
};
Input in;

int main(){
	while(1){
		int m = in.nextInt(), n1 = in.nextInt(), n2 = in.nextInt();
		if(m == 0) break;
		vi v(m);
		rep(i, m) v[i] = in.nextInt();
		sort(rall(v));
		int ans = n1;
		for(int i = n1; i <= n2; i++){
			if(v[i-1]-v[i] >= v[ans-1] -v[ans]) ans = i;
		}
		cout<<ans<<endl;
	}
}

C++: #include <bits/stdc++.h>
using namespace std;
 
int main() {
  int n,l,r;
  while(cin>>n>>l>>r&&n) {
    int a[n];
    for(int i=0;i<n;i++)cin>>a[i];
    sort(a,a+n,greater<int>());
    int x,M=0;
    for(int i=l-1;i<r;i++) {
      if(M<=a[i]-a[i+1]) {
        M=a[i]-a[i+1];
        x=i+1;
      }
    }
    cout << x << endl;
  }
  return 0;
}

C++: #include <iostream>
#include <vector>
using namespace std;

int main(int argc, char *argv[])
{
  int m, min, max;

  while(cin >> m >> min >> max, m) {
    vector<int> v;
    for (int i = 0; i < m; i++) {
      int P;
      cin >> P;
      v.push_back(P);
    }

    int maxgap = 0, answer = 0;
    for (int i = min; i < max+1; i++) {
      int gap = v[i-1] - v[i];
      //cout << gap << endl;
      if(maxgap<=gap) {
	maxgap = gap;
	answer = i;
      }
    }

    cout << answer << endl;

  }
  
  return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define rep(i,n)   FOR(i,0,n)
#define pb emplace_back
typedef long long ll;
typedef pair<int,int> pint;

int a[201];
int main(){
    int m,mx,mn;
    while(cin>>m>>mn>>mx,m){
        rep(i,m) cin>>a[i];
        sort(a,a+m,greater<int>());
        int cnt=0,x=0;
        FOR(i,mn-1,mx){
            if(x<=a[i]-a[i+1]) cnt=i,x=a[i]-a[i+1];
        }
        cout<<cnt+1<<endl;
    }
    return 0;
}

C++: #include <bits/stdc++.h>
#define ll long long
#define INF 1000000000
using namespace std;
int main(){
    int N,nmax,nmin;
    while(1){
        cin >> N;
        cin >> nmin >> nmax;
        if(N+nmax+nmin==0) return 0;
        nmin--; nmax--;
        int P[N];
        for(int i=0;i<N;i++) cin >> P[i];

        int ans = 0,gap=P[nmin]-P[nmin+1];
        for(int i=nmin;i<=nmax;i++){
            //cout << P[i]-P[i+1] << endl;
            if(gap <= P[i]-P[i+1]){
                ans = i+1;
                gap = P[i]-P[i+1];
            }
        }
        cout << ans << endl;

    }
}

C++: #include <iostream>
using namespace std;

int main(){

  int m, n_min, n_max, gap = 1000000, z;
  int ary[1000001];

  
  while(1){
    cin >> m >> n_min >> n_max;
    if(m == 0 && n_min == 0 && n_max == 0) break;

    for(int i = 1 ; i <= m ; i++){
      cin >> ary[i];
    }

    for(int i = n_min ; i <= n_max ; i++){
      if(gap >= ary[i+1] - ary[i]){
	gap = ary[i+1] - ary[i];
	z = i;
      }
    }
    cout << z << endl;
    gap = 1000000;
    z = 0;
  }

  return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
#define rep(i, n) repi(i, 0, n)
#define repi(i, a, b) for (int i = (int)(a); i < (int)(b); i++)

int main() {
    int m,n_min,n_max;
    while (true) {
        cin >> m >> n_min >> n_max;
        if (m == 0 && n_min == 0 && n_max == 0) {
            break;
        }
        vector<int> P(m);
        rep(i, m) {
            cin >> P[i];
        }
        int diff = 0;
        int ans = 0;
        repi(i, n_min, n_max+1) {
            if ( (P[i-1] - P[i]) >=  diff) {
                diff = P[i-1] - P[i];
                ans = i;
            }
        }
        cout << ans << endl;
    }
}