
import java.io.PrintWriter;
import java.util.*;

/**
 * Hello AtCoder.
 *
 * @author kaito0228
 */
public class Main {
  public static void main(String[] args) {
    try (PrintWriter out = new PrintWriter(System.out);
         Scanner sc = new Scanner(System.in)) {
      Task task = new Task();
      task.solve(sc, out);
      out.flush();

    } catch (Exception e) {
      // DO NOT USE
      e.printStackTrace();
    }
  }

  private static class Task {
    private void solve(Scanner sc, PrintWriter out) {
      // TODO
      int n = nint(sc);
      int t = nint(sc);
      int a = nint(sc);

      List<Double>  list= new ArrayList<>();
      for (int i = 0; i < n; i++) {
        int h = nint(sc);
        list.add(t - h * 0.006);
      }

      double b = Double.MAX_VALUE;
      int ans = 0;

      for (int i = 0; i < list.size(); i++) {
        double abs = Math.abs(a - list.get(i));

        if (abs < b){
          b = abs;
          ans = i +1;
        }
      }

      out.println(ans);
    }

    // method
    /**
     * Returns an int. int値を受け取り、返します。
     *
     * @param sc Scanner
     * @return int
     */
    private static int nint(Scanner sc) {
      return Integer.parseInt(sc.next());
    }

    /**
     * Returns a long. long値を受け取り、返します。
     *
     * @param sc Scanner
     * @return long
     */
    private static long nlong(Scanner sc) {
      return Long.parseLong(sc.next());
    }

    /**
     * Returns a double. double値を受け取り、返します。
     *
     * @param sc Scanner
     * @return double
     */
    private static double ndouble(Scanner sc) {
      return Double.parseDouble(sc.next());
    }

    /**
     * Returns a String. 文字列を受け取り、返します。
     *
     * @param sc Scanner
     * @return String
     */
    private static String nstr(Scanner sc) {
      return sc.next();
    }

    /**
     * Returns a int array. int値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return int array
     */
    private static int[] intLine(Scanner sc, int length) {
      int[] iLine = new int[length];
      for (int i = 0; i < length; i++) {
        iLine[i] = nint(sc);
      }
      return iLine;
    }

    /**
     * Returns a long array. long値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return long array
     */
    private static long[] longLine(Scanner sc, int length) {
      long[] lLine = new long[length];
      for (int i = 0; i < length; i++) {
        lLine[i] = nlong(sc);
      }
      return lLine;
    }

    /**
     * Returns a String array. 文字列を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return String array
     */
    private static String[] strLine(Scanner sc, int length) {
      String[] strLine = new String[length];
      for (int i = 0; i < length; i++) {
        strLine[i] = nstr(sc);
      }
      return strLine;
    }

    /**
     * Returns the maximum value in the list. リスト内で最大値を返します。
     *
     * @param longList List
     * @return long maximum value
     */
    private static long maxFromList(List<Long> longList) {
      return longList.stream().max(Comparator.naturalOrder()).get();
    }

    /**
     * Returns the minimum value in the list. リスト内で最小値を返します。
     *
     * @param longList List
     * @return long minimum value
     */
    private static long minFromList(List<Long> longList) {
      return longList.stream().min(Comparator.naturalOrder()).get();
    }

    /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n int
     * @return sum of each digit
     */
    private static int sumDigits(int n) {
      int sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    }

    /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n long
     * @return sum of each digit
     */
    private static long sumDigits(long n) {
      long sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    }

    /**
     * Return a list of Integer. Integerのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Integer> getIntegerList(Scanner sc, int size) {
      List<Integer> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nint(sc));
      }
      return list;
    }

    /**
     * Return a list of Long. Longのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Long> getLongList(Scanner sc, int size) {
      List<Long> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nlong(sc));
      }
      return list;
    }

    /**
     * Returns the greatest common divisor of the two given values. 与えた2つの値の最大公約数を返します。
     *
     * @param m long
     * @param n long
     * @return greatest common divisor
     */
    private static long gcd(long m, long n) {
      if (m < n) return gcd(n, m);
      if (n == 0) return m;
      return gcd(n, m % n);
    }

    /**
     * Returns the least common multiple of the two given values. 与えた2つの値の最小公倍数を返します。
     *
     * @param m long
     * @param n long
     * @return least common multiple
     */
    private static long lcm(long m, long n) {
      return m * n / gcd(m, n);
    }

    /**
     * Returns the most frequent value in the list. リスト内で最頻出数値を返します。
     *
     * @param list List
     * @return most frequent value
     */
    private static Integer mode(List<Integer> list) {
      if (list.size() <= 0) {
        throw new IllegalArgumentException();
      }

      Map<Integer, Integer> modeMap = new HashMap<>();

      for (Integer x : list) {
        if (modeMap.containsKey(x)) {
          modeMap.put(x, modeMap.get(x) + 1);
        } else {
          modeMap.put(x, 1);
        }
      }

      int maxValue = 0;
      int maxKey = 0;

      for (Map.Entry<Integer, Integer> entry : modeMap.entrySet()) {
        if (maxValue < entry.getValue()) {
          maxValue = entry.getValue();
          maxKey = entry.getKey();
        }
      }

      return maxKey;
    }
  }
} import java.io.PrintWriter; PrintWriter java.io import java.util.*; util.* java public class Main {
  public static void main(String[] args) {
    try (PrintWriter out = new PrintWriter(System.out);
         Scanner sc = new Scanner(System.in)) {
      Task task = new Task();
      task.solve(sc, out);
      out.flush();

    } catch (Exception e) {
      // DO NOT USE
      e.printStackTrace();
    }
  }

  private static class Task {
    private void solve(Scanner sc, PrintWriter out) {
      // TODO
      int n = nint(sc);
      int t = nint(sc);
      int a = nint(sc);

      List<Double>  list= new ArrayList<>();
      for (int i = 0; i < n; i++) {
        int h = nint(sc);
        list.add(t - h * 0.006);
      }

      double b = Double.MAX_VALUE;
      int ans = 0;

      for (int i = 0; i < list.size(); i++) {
        double abs = Math.abs(a - list.get(i));

        if (abs < b){
          b = abs;
          ans = i +1;
        }
      }

      out.println(ans);
    }

    // method
    /**
     * Returns an int. int値を受け取り、返します。
     *
     * @param sc Scanner
     * @return int
     */
    private static int nint(Scanner sc) {
      return Integer.parseInt(sc.next());
    }

    /**
     * Returns a long. long値を受け取り、返します。
     *
     * @param sc Scanner
     * @return long
     */
    private static long nlong(Scanner sc) {
      return Long.parseLong(sc.next());
    }

    /**
     * Returns a double. double値を受け取り、返します。
     *
     * @param sc Scanner
     * @return double
     */
    private static double ndouble(Scanner sc) {
      return Double.parseDouble(sc.next());
    }

    /**
     * Returns a String. 文字列を受け取り、返します。
     *
     * @param sc Scanner
     * @return String
     */
    private static String nstr(Scanner sc) {
      return sc.next();
    }

    /**
     * Returns a int array. int値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return int array
     */
    private static int[] intLine(Scanner sc, int length) {
      int[] iLine = new int[length];
      for (int i = 0; i < length; i++) {
        iLine[i] = nint(sc);
      }
      return iLine;
    }

    /**
     * Returns a long array. long値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return long array
     */
    private static long[] longLine(Scanner sc, int length) {
      long[] lLine = new long[length];
      for (int i = 0; i < length; i++) {
        lLine[i] = nlong(sc);
      }
      return lLine;
    }

    /**
     * Returns a String array. 文字列を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return String array
     */
    private static String[] strLine(Scanner sc, int length) {
      String[] strLine = new String[length];
      for (int i = 0; i < length; i++) {
        strLine[i] = nstr(sc);
      }
      return strLine;
    }

    /**
     * Returns the maximum value in the list. リスト内で最大値を返します。
     *
     * @param longList List
     * @return long maximum value
     */
    private static long maxFromList(List<Long> longList) {
      return longList.stream().max(Comparator.naturalOrder()).get();
    }

    /**
     * Returns the minimum value in the list. リスト内で最小値を返します。
     *
     * @param longList List
     * @return long minimum value
     */
    private static long minFromList(List<Long> longList) {
      return longList.stream().min(Comparator.naturalOrder()).get();
    }

    /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n int
     * @return sum of each digit
     */
    private static int sumDigits(int n) {
      int sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    }

    /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n long
     * @return sum of each digit
     */
    private static long sumDigits(long n) {
      long sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    }

    /**
     * Return a list of Integer. Integerのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Integer> getIntegerList(Scanner sc, int size) {
      List<Integer> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nint(sc));
      }
      return list;
    }

    /**
     * Return a list of Long. Longのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Long> getLongList(Scanner sc, int size) {
      List<Long> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nlong(sc));
      }
      return list;
    }

    /**
     * Returns the greatest common divisor of the two given values. 与えた2つの値の最大公約数を返します。
     *
     * @param m long
     * @param n long
     * @return greatest common divisor
     */
    private static long gcd(long m, long n) {
      if (m < n) return gcd(n, m);
      if (n == 0) return m;
      return gcd(n, m % n);
    }

    /**
     * Returns the least common multiple of the two given values. 与えた2つの値の最小公倍数を返します。
     *
     * @param m long
     * @param n long
     * @return least common multiple
     */
    private static long lcm(long m, long n) {
      return m * n / gcd(m, n);
    }

    /**
     * Returns the most frequent value in the list. リスト内で最頻出数値を返します。
     *
     * @param list List
     * @return most frequent value
     */
    private static Integer mode(List<Integer> list) {
      if (list.size() <= 0) {
        throw new IllegalArgumentException();
      }

      Map<Integer, Integer> modeMap = new HashMap<>();

      for (Integer x : list) {
        if (modeMap.containsKey(x)) {
          modeMap.put(x, modeMap.get(x) + 1);
        } else {
          modeMap.put(x, 1);
        }
      }

      int maxValue = 0;
      int maxKey = 0;

      for (Map.Entry<Integer, Integer> entry : modeMap.entrySet()) {
        if (maxValue < entry.getValue()) {
          maxValue = entry.getValue();
          maxKey = entry.getKey();
        }
      }

      return maxKey;
    }
  }
} Main public static void main(String[] args) {
    try (PrintWriter out = new PrintWriter(System.out);
         Scanner sc = new Scanner(System.in)) {
      Task task = new Task();
      task.solve(sc, out);
      out.flush();

    } catch (Exception e) {
      // DO NOT USE
      e.printStackTrace();
    }
  } main {
    try (PrintWriter out = new PrintWriter(System.out);
         Scanner sc = new Scanner(System.in)) {
      Task task = new Task();
      task.solve(sc, out);
      out.flush();

    } catch (Exception e) {
      // DO NOT USE
      e.printStackTrace();
    }
  } try (PrintWriter out = new PrintWriter(System.out);
         Scanner sc = new Scanner(System.in)) {
      Task task = new Task();
      task.solve(sc, out);
      out.flush();

    } catch (Exception e) {
      // DO NOT USE
      e.printStackTrace();
    } catch (Exception e) {
      // DO NOT USE
      e.printStackTrace();
    } Exception e {
      // DO NOT USE
      e.printStackTrace();
    } e.printStackTrace() e.printStackTrace e {
      Task task = new Task();
      task.solve(sc, out);
      out.flush();

    } PrintWriter out = new PrintWriter(System.out) PrintWriter out = new PrintWriter(System.out) new PrintWriter(System.out) Scanner sc = new Scanner(System.in) Scanner sc = new Scanner(System.in) new Scanner(System.in) Task task = new Task(); task new Task() task.solve(sc, out) task.solve task sc out out.flush() out.flush out String[] args args private static class Task {
    private void solve(Scanner sc, PrintWriter out) {
      // TODO
      int n = nint(sc);
      int t = nint(sc);
      int a = nint(sc);

      List<Double>  list= new ArrayList<>();
      for (int i = 0; i < n; i++) {
        int h = nint(sc);
        list.add(t - h * 0.006);
      }

      double b = Double.MAX_VALUE;
      int ans = 0;

      for (int i = 0; i < list.size(); i++) {
        double abs = Math.abs(a - list.get(i));

        if (abs < b){
          b = abs;
          ans = i +1;
        }
      }

      out.println(ans);
    }

    // method
    /**
     * Returns an int. int値を受け取り、返します。
     *
     * @param sc Scanner
     * @return int
     */
    private static int nint(Scanner sc) {
      return Integer.parseInt(sc.next());
    }

    /**
     * Returns a long. long値を受け取り、返します。
     *
     * @param sc Scanner
     * @return long
     */
    private static long nlong(Scanner sc) {
      return Long.parseLong(sc.next());
    }

    /**
     * Returns a double. double値を受け取り、返します。
     *
     * @param sc Scanner
     * @return double
     */
    private static double ndouble(Scanner sc) {
      return Double.parseDouble(sc.next());
    }

    /**
     * Returns a String. 文字列を受け取り、返します。
     *
     * @param sc Scanner
     * @return String
     */
    private static String nstr(Scanner sc) {
      return sc.next();
    }

    /**
     * Returns a int array. int値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return int array
     */
    private static int[] intLine(Scanner sc, int length) {
      int[] iLine = new int[length];
      for (int i = 0; i < length; i++) {
        iLine[i] = nint(sc);
      }
      return iLine;
    }

    /**
     * Returns a long array. long値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return long array
     */
    private static long[] longLine(Scanner sc, int length) {
      long[] lLine = new long[length];
      for (int i = 0; i < length; i++) {
        lLine[i] = nlong(sc);
      }
      return lLine;
    }

    /**
     * Returns a String array. 文字列を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return String array
     */
    private static String[] strLine(Scanner sc, int length) {
      String[] strLine = new String[length];
      for (int i = 0; i < length; i++) {
        strLine[i] = nstr(sc);
      }
      return strLine;
    }

    /**
     * Returns the maximum value in the list. リスト内で最大値を返します。
     *
     * @param longList List
     * @return long maximum value
     */
    private static long maxFromList(List<Long> longList) {
      return longList.stream().max(Comparator.naturalOrder()).get();
    }

    /**
     * Returns the minimum value in the list. リスト内で最小値を返します。
     *
     * @param longList List
     * @return long minimum value
     */
    private static long minFromList(List<Long> longList) {
      return longList.stream().min(Comparator.naturalOrder()).get();
    }

    /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n int
     * @return sum of each digit
     */
    private static int sumDigits(int n) {
      int sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    }

    /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n long
     * @return sum of each digit
     */
    private static long sumDigits(long n) {
      long sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    }

    /**
     * Return a list of Integer. Integerのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Integer> getIntegerList(Scanner sc, int size) {
      List<Integer> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nint(sc));
      }
      return list;
    }

    /**
     * Return a list of Long. Longのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Long> getLongList(Scanner sc, int size) {
      List<Long> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nlong(sc));
      }
      return list;
    }

    /**
     * Returns the greatest common divisor of the two given values. 与えた2つの値の最大公約数を返します。
     *
     * @param m long
     * @param n long
     * @return greatest common divisor
     */
    private static long gcd(long m, long n) {
      if (m < n) return gcd(n, m);
      if (n == 0) return m;
      return gcd(n, m % n);
    }

    /**
     * Returns the least common multiple of the two given values. 与えた2つの値の最小公倍数を返します。
     *
     * @param m long
     * @param n long
     * @return least common multiple
     */
    private static long lcm(long m, long n) {
      return m * n / gcd(m, n);
    }

    /**
     * Returns the most frequent value in the list. リスト内で最頻出数値を返します。
     *
     * @param list List
     * @return most frequent value
     */
    private static Integer mode(List<Integer> list) {
      if (list.size() <= 0) {
        throw new IllegalArgumentException();
      }

      Map<Integer, Integer> modeMap = new HashMap<>();

      for (Integer x : list) {
        if (modeMap.containsKey(x)) {
          modeMap.put(x, modeMap.get(x) + 1);
        } else {
          modeMap.put(x, 1);
        }
      }

      int maxValue = 0;
      int maxKey = 0;

      for (Map.Entry<Integer, Integer> entry : modeMap.entrySet()) {
        if (maxValue < entry.getValue()) {
          maxValue = entry.getValue();
          maxKey = entry.getKey();
        }
      }

      return maxKey;
    }
  } Task private void solve(Scanner sc, PrintWriter out) {
      // TODO
      int n = nint(sc);
      int t = nint(sc);
      int a = nint(sc);

      List<Double>  list= new ArrayList<>();
      for (int i = 0; i < n; i++) {
        int h = nint(sc);
        list.add(t - h * 0.006);
      }

      double b = Double.MAX_VALUE;
      int ans = 0;

      for (int i = 0; i < list.size(); i++) {
        double abs = Math.abs(a - list.get(i));

        if (abs < b){
          b = abs;
          ans = i +1;
        }
      }

      out.println(ans);
    } solve {
      // TODO
      int n = nint(sc);
      int t = nint(sc);
      int a = nint(sc);

      List<Double>  list= new ArrayList<>();
      for (int i = 0; i < n; i++) {
        int h = nint(sc);
        list.add(t - h * 0.006);
      }

      double b = Double.MAX_VALUE;
      int ans = 0;

      for (int i = 0; i < list.size(); i++) {
        double abs = Math.abs(a - list.get(i));

        if (abs < b){
          b = abs;
          ans = i +1;
        }
      }

      out.println(ans);
    } int n = nint(sc); n nint(sc) nint sc int t = nint(sc); t nint(sc) nint sc int a = nint(sc); a nint(sc) nint sc List<Double>  list= new ArrayList<>(); list new ArrayList<>() for (int i = 0; i < n; i++) {
        int h = nint(sc);
        list.add(t - h * 0.006);
      } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
        int h = nint(sc);
        list.add(t - h * 0.006);
      } {
        int h = nint(sc);
        list.add(t - h * 0.006);
      } int h = nint(sc); h nint(sc) nint sc list.add(t - h * 0.006) list.add list t - h * 0.006 t h * 0.006 h 0.006 double b = Double.MAX_VALUE; b Double.MAX_VALUE Double Double.MAX_VALUE int ans = 0; ans 0 for (int i = 0; i < list.size(); i++) {
        double abs = Math.abs(a - list.get(i));

        if (abs < b){
          b = abs;
          ans = i +1;
        }
      } int i = 0; int i = 0; i 0 i < list.size() i list.size() list.size list i++ i++ i {
        double abs = Math.abs(a - list.get(i));

        if (abs < b){
          b = abs;
          ans = i +1;
        }
      } {
        double abs = Math.abs(a - list.get(i));

        if (abs < b){
          b = abs;
          ans = i +1;
        }
      } double abs = Math.abs(a - list.get(i)); abs Math.abs(a - list.get(i)) Math.abs Math a - list.get(i) a list.get(i) list.get list i if (abs < b){
          b = abs;
          ans = i +1;
        } abs < b abs b {
          b = abs;
          ans = i +1;
        } b = abs b abs ans = i +1 ans i +1 i 1 out.println(ans) out.println out ans Scanner sc sc PrintWriter out out /**
     * Returns an int. int値を受け取り、返します。
     *
     * @param sc Scanner
     * @return int
     */
    private static int nint(Scanner sc) {
      return Integer.parseInt(sc.next());
    } nint {
      return Integer.parseInt(sc.next());
    } return Integer.parseInt(sc.next()); Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc Scanner sc sc /**
     * Returns a long. long値を受け取り、返します。
     *
     * @param sc Scanner
     * @return long
     */
    private static long nlong(Scanner sc) {
      return Long.parseLong(sc.next());
    } nlong {
      return Long.parseLong(sc.next());
    } return Long.parseLong(sc.next()); Long.parseLong(sc.next()) Long.parseLong Long sc.next() sc.next sc Scanner sc sc /**
     * Returns a double. double値を受け取り、返します。
     *
     * @param sc Scanner
     * @return double
     */
    private static double ndouble(Scanner sc) {
      return Double.parseDouble(sc.next());
    } ndouble {
      return Double.parseDouble(sc.next());
    } return Double.parseDouble(sc.next()); Double.parseDouble(sc.next()) Double.parseDouble Double sc.next() sc.next sc Scanner sc sc /**
     * Returns a String. 文字列を受け取り、返します。
     *
     * @param sc Scanner
     * @return String
     */
    private static String nstr(Scanner sc) {
      return sc.next();
    } nstr {
      return sc.next();
    } return sc.next(); sc.next() sc.next sc Scanner sc sc /**
     * Returns a int array. int値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return int array
     */
    private static int[] intLine(Scanner sc, int length) {
      int[] iLine = new int[length];
      for (int i = 0; i < length; i++) {
        iLine[i] = nint(sc);
      }
      return iLine;
    } intLine {
      int[] iLine = new int[length];
      for (int i = 0; i < length; i++) {
        iLine[i] = nint(sc);
      }
      return iLine;
    } int[] iLine = new int[length]; iLine new int[length] length for (int i = 0; i < length; i++) {
        iLine[i] = nint(sc);
      } int i = 0; int i = 0; i 0 i < length i length i++ i++ i {
        iLine[i] = nint(sc);
      } {
        iLine[i] = nint(sc);
      } iLine[i] = nint(sc) iLine[i] iLine i nint(sc) nint sc return iLine; iLine Scanner sc sc int length length /**
     * Returns a long array. long値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return long array
     */
    private static long[] longLine(Scanner sc, int length) {
      long[] lLine = new long[length];
      for (int i = 0; i < length; i++) {
        lLine[i] = nlong(sc);
      }
      return lLine;
    } longLine {
      long[] lLine = new long[length];
      for (int i = 0; i < length; i++) {
        lLine[i] = nlong(sc);
      }
      return lLine;
    } long[] lLine = new long[length]; lLine new long[length] length for (int i = 0; i < length; i++) {
        lLine[i] = nlong(sc);
      } int i = 0; int i = 0; i 0 i < length i length i++ i++ i {
        lLine[i] = nlong(sc);
      } {
        lLine[i] = nlong(sc);
      } lLine[i] = nlong(sc) lLine[i] lLine i nlong(sc) nlong sc return lLine; lLine Scanner sc sc int length length /**
     * Returns a String array. 文字列を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return String array
     */
    private static String[] strLine(Scanner sc, int length) {
      String[] strLine = new String[length];
      for (int i = 0; i < length; i++) {
        strLine[i] = nstr(sc);
      }
      return strLine;
    } strLine {
      String[] strLine = new String[length];
      for (int i = 0; i < length; i++) {
        strLine[i] = nstr(sc);
      }
      return strLine;
    } String[] strLine = new String[length]; strLine new String[length] length for (int i = 0; i < length; i++) {
        strLine[i] = nstr(sc);
      } int i = 0; int i = 0; i 0 i < length i length i++ i++ i {
        strLine[i] = nstr(sc);
      } {
        strLine[i] = nstr(sc);
      } strLine[i] = nstr(sc) strLine[i] strLine i nstr(sc) nstr sc return strLine; strLine Scanner sc sc int length length /**
     * Returns the maximum value in the list. リスト内で最大値を返します。
     *
     * @param longList List
     * @return long maximum value
     */
    private static long maxFromList(List<Long> longList) {
      return longList.stream().max(Comparator.naturalOrder()).get();
    } maxFromList {
      return longList.stream().max(Comparator.naturalOrder()).get();
    } return longList.stream().max(Comparator.naturalOrder()).get(); longList.stream().max(Comparator.naturalOrder()).get() longList.stream().max(Comparator.naturalOrder()).get longList.stream().max(Comparator.naturalOrder()) longList.stream().max longList.stream() longList.stream longList Comparator.naturalOrder() Comparator.naturalOrder Comparator List<Long> longList longList /**
     * Returns the minimum value in the list. リスト内で最小値を返します。
     *
     * @param longList List
     * @return long minimum value
     */
    private static long minFromList(List<Long> longList) {
      return longList.stream().min(Comparator.naturalOrder()).get();
    } minFromList {
      return longList.stream().min(Comparator.naturalOrder()).get();
    } return longList.stream().min(Comparator.naturalOrder()).get(); longList.stream().min(Comparator.naturalOrder()).get() longList.stream().min(Comparator.naturalOrder()).get longList.stream().min(Comparator.naturalOrder()) longList.stream().min longList.stream() longList.stream longList Comparator.naturalOrder() Comparator.naturalOrder Comparator List<Long> longList longList /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n int
     * @return sum of each digit
     */
    private static int sumDigits(int n) {
      int sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    } sumDigits {
      int sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    } int sum = 0; sum 0 while (n != 0) {
        sum += n % 10;
        n /= 10;
      } n != 0 n 0 {
        sum += n % 10;
        n /= 10;
      } sum += n % 10 sum n % 10 n 10 n /= 10 n 10 return sum; sum int n n /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n long
     * @return sum of each digit
     */
    private static long sumDigits(long n) {
      long sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    } sumDigits {
      long sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    } long sum = 0; sum 0 while (n != 0) {
        sum += n % 10;
        n /= 10;
      } n != 0 n 0 {
        sum += n % 10;
        n /= 10;
      } sum += n % 10 sum n % 10 n 10 n /= 10 n 10 return sum; sum long n n /**
     * Return a list of Integer. Integerのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Integer> getIntegerList(Scanner sc, int size) {
      List<Integer> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nint(sc));
      }
      return list;
    } getIntegerList {
      List<Integer> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nint(sc));
      }
      return list;
    } List<Integer> list = new ArrayList<>(); list new ArrayList<>() for (int i = 0; i < size; i++) {
        list.add(nint(sc));
      } int i = 0; int i = 0; i 0 i < size i size i++ i++ i {
        list.add(nint(sc));
      } {
        list.add(nint(sc));
      } list.add(nint(sc)) list.add list nint(sc) nint sc return list; list Scanner sc sc int size size /**
     * Return a list of Long. Longのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Long> getLongList(Scanner sc, int size) {
      List<Long> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nlong(sc));
      }
      return list;
    } getLongList {
      List<Long> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nlong(sc));
      }
      return list;
    } List<Long> list = new ArrayList<>(); list new ArrayList<>() for (int i = 0; i < size; i++) {
        list.add(nlong(sc));
      } int i = 0; int i = 0; i 0 i < size i size i++ i++ i {
        list.add(nlong(sc));
      } {
        list.add(nlong(sc));
      } list.add(nlong(sc)) list.add list nlong(sc) nlong sc return list; list Scanner sc sc int size size /**
     * Returns the greatest common divisor of the two given values. 与えた2つの値の最大公約数を返します。
     *
     * @param m long
     * @param n long
     * @return greatest common divisor
     */
    private static long gcd(long m, long n) {
      if (m < n) return gcd(n, m);
      if (n == 0) return m;
      return gcd(n, m % n);
    } gcd {
      if (m < n) return gcd(n, m);
      if (n == 0) return m;
      return gcd(n, m % n);
    } if (m < n) return gcd(n, m); m < n m n return gcd(n, m); gcd(n, m) gcd n m if (n == 0) return m; n == 0 n 0 return m; m return gcd(n, m % n); gcd(n, m % n) gcd n m % n m n long m m long n n /**
     * Returns the least common multiple of the two given values. 与えた2つの値の最小公倍数を返します。
     *
     * @param m long
     * @param n long
     * @return least common multiple
     */
    private static long lcm(long m, long n) {
      return m * n / gcd(m, n);
    } lcm {
      return m * n / gcd(m, n);
    } return m * n / gcd(m, n); m * n / gcd(m, n) m * n m n gcd(m, n) gcd m n long m m long n n /**
     * Returns the most frequent value in the list. リスト内で最頻出数値を返します。
     *
     * @param list List
     * @return most frequent value
     */
    private static Integer mode(List<Integer> list) {
      if (list.size() <= 0) {
        throw new IllegalArgumentException();
      }

      Map<Integer, Integer> modeMap = new HashMap<>();

      for (Integer x : list) {
        if (modeMap.containsKey(x)) {
          modeMap.put(x, modeMap.get(x) + 1);
        } else {
          modeMap.put(x, 1);
        }
      }

      int maxValue = 0;
      int maxKey = 0;

      for (Map.Entry<Integer, Integer> entry : modeMap.entrySet()) {
        if (maxValue < entry.getValue()) {
          maxValue = entry.getValue();
          maxKey = entry.getKey();
        }
      }

      return maxKey;
    } mode {
      if (list.size() <= 0) {
        throw new IllegalArgumentException();
      }

      Map<Integer, Integer> modeMap = new HashMap<>();

      for (Integer x : list) {
        if (modeMap.containsKey(x)) {
          modeMap.put(x, modeMap.get(x) + 1);
        } else {
          modeMap.put(x, 1);
        }
      }

      int maxValue = 0;
      int maxKey = 0;

      for (Map.Entry<Integer, Integer> entry : modeMap.entrySet()) {
        if (maxValue < entry.getValue()) {
          maxValue = entry.getValue();
          maxKey = entry.getKey();
        }
      }

      return maxKey;
    } if (list.size() <= 0) {
        throw new IllegalArgumentException();
      } list.size() <= 0 list.size() list.size list 0 {
        throw new IllegalArgumentException();
      } throw new IllegalArgumentException(); new IllegalArgumentException() Map<Integer, Integer> modeMap = new HashMap<>(); modeMap new HashMap<>() for (Integer x : list) {
        if (modeMap.containsKey(x)) {
          modeMap.put(x, modeMap.get(x) + 1);
        } else {
          modeMap.put(x, 1);
        }
      } Integer x list {
        if (modeMap.containsKey(x)) {
          modeMap.put(x, modeMap.get(x) + 1);
        } else {
          modeMap.put(x, 1);
        }
      } {
        if (modeMap.containsKey(x)) {
          modeMap.put(x, modeMap.get(x) + 1);
        } else {
          modeMap.put(x, 1);
        }
      } if (modeMap.containsKey(x)) {
          modeMap.put(x, modeMap.get(x) + 1);
        } else {
          modeMap.put(x, 1);
        } modeMap.containsKey(x) modeMap.containsKey modeMap x {
          modeMap.put(x, modeMap.get(x) + 1);
        } modeMap.put(x, modeMap.get(x) + 1) modeMap.put modeMap x modeMap.get(x) + 1 modeMap.get(x) modeMap.get modeMap x 1 {
          modeMap.put(x, 1);
        } modeMap.put(x, 1) modeMap.put modeMap x 1 int maxValue = 0; maxValue 0 int maxKey = 0; maxKey 0 for (Map.Entry<Integer, Integer> entry : modeMap.entrySet()) {
        if (maxValue < entry.getValue()) {
          maxValue = entry.getValue();
          maxKey = entry.getKey();
        }
      } Map.Entry<Integer, Integer> entry modeMap.entrySet() modeMap.entrySet modeMap {
        if (maxValue < entry.getValue()) {
          maxValue = entry.getValue();
          maxKey = entry.getKey();
        }
      } {
        if (maxValue < entry.getValue()) {
          maxValue = entry.getValue();
          maxKey = entry.getKey();
        }
      } if (maxValue < entry.getValue()) {
          maxValue = entry.getValue();
          maxKey = entry.getKey();
        } maxValue < entry.getValue() maxValue entry.getValue() entry.getValue entry {
          maxValue = entry.getValue();
          maxKey = entry.getKey();
        } maxValue = entry.getValue() maxValue entry.getValue() entry.getValue entry maxKey = entry.getKey() maxKey entry.getKey() entry.getKey entry return maxKey; maxKey List<Integer> list list public class Main {
  public static void main(String[] args) {
    try (PrintWriter out = new PrintWriter(System.out);
         Scanner sc = new Scanner(System.in)) {
      Task task = new Task();
      task.solve(sc, out);
      out.flush();

    } catch (Exception e) {
      // DO NOT USE
      e.printStackTrace();
    }
  }

  private static class Task {
    private void solve(Scanner sc, PrintWriter out) {
      // TODO
      int n = nint(sc);
      int t = nint(sc);
      int a = nint(sc);

      List<Double>  list= new ArrayList<>();
      for (int i = 0; i < n; i++) {
        int h = nint(sc);
        list.add(t - h * 0.006);
      }

      double b = Double.MAX_VALUE;
      int ans = 0;

      for (int i = 0; i < list.size(); i++) {
        double abs = Math.abs(a - list.get(i));

        if (abs < b){
          b = abs;
          ans = i +1;
        }
      }

      out.println(ans);
    }

    // method
    /**
     * Returns an int. int値を受け取り、返します。
     *
     * @param sc Scanner
     * @return int
     */
    private static int nint(Scanner sc) {
      return Integer.parseInt(sc.next());
    }

    /**
     * Returns a long. long値を受け取り、返します。
     *
     * @param sc Scanner
     * @return long
     */
    private static long nlong(Scanner sc) {
      return Long.parseLong(sc.next());
    }

    /**
     * Returns a double. double値を受け取り、返します。
     *
     * @param sc Scanner
     * @return double
     */
    private static double ndouble(Scanner sc) {
      return Double.parseDouble(sc.next());
    }

    /**
     * Returns a String. 文字列を受け取り、返します。
     *
     * @param sc Scanner
     * @return String
     */
    private static String nstr(Scanner sc) {
      return sc.next();
    }

    /**
     * Returns a int array. int値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return int array
     */
    private static int[] intLine(Scanner sc, int length) {
      int[] iLine = new int[length];
      for (int i = 0; i < length; i++) {
        iLine[i] = nint(sc);
      }
      return iLine;
    }

    /**
     * Returns a long array. long値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return long array
     */
    private static long[] longLine(Scanner sc, int length) {
      long[] lLine = new long[length];
      for (int i = 0; i < length; i++) {
        lLine[i] = nlong(sc);
      }
      return lLine;
    }

    /**
     * Returns a String array. 文字列を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return String array
     */
    private static String[] strLine(Scanner sc, int length) {
      String[] strLine = new String[length];
      for (int i = 0; i < length; i++) {
        strLine[i] = nstr(sc);
      }
      return strLine;
    }

    /**
     * Returns the maximum value in the list. リスト内で最大値を返します。
     *
     * @param longList List
     * @return long maximum value
     */
    private static long maxFromList(List<Long> longList) {
      return longList.stream().max(Comparator.naturalOrder()).get();
    }

    /**
     * Returns the minimum value in the list. リスト内で最小値を返します。
     *
     * @param longList List
     * @return long minimum value
     */
    private static long minFromList(List<Long> longList) {
      return longList.stream().min(Comparator.naturalOrder()).get();
    }

    /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n int
     * @return sum of each digit
     */
    private static int sumDigits(int n) {
      int sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    }

    /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n long
     * @return sum of each digit
     */
    private static long sumDigits(long n) {
      long sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    }

    /**
     * Return a list of Integer. Integerのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Integer> getIntegerList(Scanner sc, int size) {
      List<Integer> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nint(sc));
      }
      return list;
    }

    /**
     * Return a list of Long. Longのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Long> getLongList(Scanner sc, int size) {
      List<Long> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nlong(sc));
      }
      return list;
    }

    /**
     * Returns the greatest common divisor of the two given values. 与えた2つの値の最大公約数を返します。
     *
     * @param m long
     * @param n long
     * @return greatest common divisor
     */
    private static long gcd(long m, long n) {
      if (m < n) return gcd(n, m);
      if (n == 0) return m;
      return gcd(n, m % n);
    }

    /**
     * Returns the least common multiple of the two given values. 与えた2つの値の最小公倍数を返します。
     *
     * @param m long
     * @param n long
     * @return least common multiple
     */
    private static long lcm(long m, long n) {
      return m * n / gcd(m, n);
    }

    /**
     * Returns the most frequent value in the list. リスト内で最頻出数値を返します。
     *
     * @param list List
     * @return most frequent value
     */
    private static Integer mode(List<Integer> list) {
      if (list.size() <= 0) {
        throw new IllegalArgumentException();
      }

      Map<Integer, Integer> modeMap = new HashMap<>();

      for (Integer x : list) {
        if (modeMap.containsKey(x)) {
          modeMap.put(x, modeMap.get(x) + 1);
        } else {
          modeMap.put(x, 1);
        }
      }

      int maxValue = 0;
      int maxKey = 0;

      for (Map.Entry<Integer, Integer> entry : modeMap.entrySet()) {
        if (maxValue < entry.getValue()) {
          maxValue = entry.getValue();
          maxKey = entry.getKey();
        }
      }

      return maxKey;
    }
  }
} public class Main {
  public static void main(String[] args) {
    try (PrintWriter out = new PrintWriter(System.out);
         Scanner sc = new Scanner(System.in)) {
      Task task = new Task();
      task.solve(sc, out);
      out.flush();

    } catch (Exception e) {
      // DO NOT USE
      e.printStackTrace();
    }
  }

  private static class Task {
    private void solve(Scanner sc, PrintWriter out) {
      // TODO
      int n = nint(sc);
      int t = nint(sc);
      int a = nint(sc);

      List<Double>  list= new ArrayList<>();
      for (int i = 0; i < n; i++) {
        int h = nint(sc);
        list.add(t - h * 0.006);
      }

      double b = Double.MAX_VALUE;
      int ans = 0;

      for (int i = 0; i < list.size(); i++) {
        double abs = Math.abs(a - list.get(i));

        if (abs < b){
          b = abs;
          ans = i +1;
        }
      }

      out.println(ans);
    }

    // method
    /**
     * Returns an int. int値を受け取り、返します。
     *
     * @param sc Scanner
     * @return int
     */
    private static int nint(Scanner sc) {
      return Integer.parseInt(sc.next());
    }

    /**
     * Returns a long. long値を受け取り、返します。
     *
     * @param sc Scanner
     * @return long
     */
    private static long nlong(Scanner sc) {
      return Long.parseLong(sc.next());
    }

    /**
     * Returns a double. double値を受け取り、返します。
     *
     * @param sc Scanner
     * @return double
     */
    private static double ndouble(Scanner sc) {
      return Double.parseDouble(sc.next());
    }

    /**
     * Returns a String. 文字列を受け取り、返します。
     *
     * @param sc Scanner
     * @return String
     */
    private static String nstr(Scanner sc) {
      return sc.next();
    }

    /**
     * Returns a int array. int値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return int array
     */
    private static int[] intLine(Scanner sc, int length) {
      int[] iLine = new int[length];
      for (int i = 0; i < length; i++) {
        iLine[i] = nint(sc);
      }
      return iLine;
    }

    /**
     * Returns a long array. long値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return long array
     */
    private static long[] longLine(Scanner sc, int length) {
      long[] lLine = new long[length];
      for (int i = 0; i < length; i++) {
        lLine[i] = nlong(sc);
      }
      return lLine;
    }

    /**
     * Returns a String array. 文字列を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return String array
     */
    private static String[] strLine(Scanner sc, int length) {
      String[] strLine = new String[length];
      for (int i = 0; i < length; i++) {
        strLine[i] = nstr(sc);
      }
      return strLine;
    }

    /**
     * Returns the maximum value in the list. リスト内で最大値を返します。
     *
     * @param longList List
     * @return long maximum value
     */
    private static long maxFromList(List<Long> longList) {
      return longList.stream().max(Comparator.naturalOrder()).get();
    }

    /**
     * Returns the minimum value in the list. リスト内で最小値を返します。
     *
     * @param longList List
     * @return long minimum value
     */
    private static long minFromList(List<Long> longList) {
      return longList.stream().min(Comparator.naturalOrder()).get();
    }

    /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n int
     * @return sum of each digit
     */
    private static int sumDigits(int n) {
      int sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    }

    /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n long
     * @return sum of each digit
     */
    private static long sumDigits(long n) {
      long sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    }

    /**
     * Return a list of Integer. Integerのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Integer> getIntegerList(Scanner sc, int size) {
      List<Integer> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nint(sc));
      }
      return list;
    }

    /**
     * Return a list of Long. Longのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Long> getLongList(Scanner sc, int size) {
      List<Long> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nlong(sc));
      }
      return list;
    }

    /**
     * Returns the greatest common divisor of the two given values. 与えた2つの値の最大公約数を返します。
     *
     * @param m long
     * @param n long
     * @return greatest common divisor
     */
    private static long gcd(long m, long n) {
      if (m < n) return gcd(n, m);
      if (n == 0) return m;
      return gcd(n, m % n);
    }

    /**
     * Returns the least common multiple of the two given values. 与えた2つの値の最小公倍数を返します。
     *
     * @param m long
     * @param n long
     * @return least common multiple
     */
    private static long lcm(long m, long n) {
      return m * n / gcd(m, n);
    }

    /**
     * Returns the most frequent value in the list. リスト内で最頻出数値を返します。
     *
     * @param list List
     * @return most frequent value
     */
    private static Integer mode(List<Integer> list) {
      if (list.size() <= 0) {
        throw new IllegalArgumentException();
      }

      Map<Integer, Integer> modeMap = new HashMap<>();

      for (Integer x : list) {
        if (modeMap.containsKey(x)) {
          modeMap.put(x, modeMap.get(x) + 1);
        } else {
          modeMap.put(x, 1);
        }
      }

      int maxValue = 0;
      int maxKey = 0;

      for (Map.Entry<Integer, Integer> entry : modeMap.entrySet()) {
        if (maxValue < entry.getValue()) {
          maxValue = entry.getValue();
          maxKey = entry.getKey();
        }
      }

      return maxKey;
    }
  }
} Main

import java.io.PrintWriter;
import java.util.*;

/**
 * Hello AtCoder.
 *
 * @author kaito0228
 */
public class Main {
  public static void main(String[] args) {
    try (PrintWriter out = new PrintWriter(System.out);
         Scanner sc = new Scanner(System.in)) {
      Task task = new Task();
      task.solve(sc, out);
      out.flush();

    } catch (Exception e) {
      // DO NOT USE
      e.printStackTrace();
    }
  }

  private static class Task {
    private void solve(Scanner sc, PrintWriter out) {
      // TODO
      int n = nint(sc);
      int t = nint(sc);
      int a = nint(sc);

      List<Double>  list= new ArrayList<>();
      for (int i = 0; i < n; i++) {
        int h = nint(sc);
        list.add(t - h * 0.006);
      }

      double b = Double.MAX_VALUE;
      int ans = 0;

      for (int i = 0; i < list.size(); i++) {
        double abs = Math.abs(a - list.get(i));

        if (abs < b){
          b = abs;
          ans = i +1;
        }
      }

      out.println(ans);
    }

    // method
    /**
     * Returns an int. int値を受け取り、返します。
     *
     * @param sc Scanner
     * @return int
     */
    private static int nint(Scanner sc) {
      return Integer.parseInt(sc.next());
    }

    /**
     * Returns a long. long値を受け取り、返します。
     *
     * @param sc Scanner
     * @return long
     */
    private static long nlong(Scanner sc) {
      return Long.parseLong(sc.next());
    }

    /**
     * Returns a double. double値を受け取り、返します。
     *
     * @param sc Scanner
     * @return double
     */
    private static double ndouble(Scanner sc) {
      return Double.parseDouble(sc.next());
    }

    /**
     * Returns a String. 文字列を受け取り、返します。
     *
     * @param sc Scanner
     * @return String
     */
    private static String nstr(Scanner sc) {
      return sc.next();
    }

    /**
     * Returns a int array. int値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return int array
     */
    private static int[] intLine(Scanner sc, int length) {
      int[] iLine = new int[length];
      for (int i = 0; i < length; i++) {
        iLine[i] = nint(sc);
      }
      return iLine;
    }

    /**
     * Returns a long array. long値を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return long array
     */
    private static long[] longLine(Scanner sc, int length) {
      long[] lLine = new long[length];
      for (int i = 0; i < length; i++) {
        lLine[i] = nlong(sc);
      }
      return lLine;
    }

    /**
     * Returns a String array. 文字列を受け取り、配列にして返します。
     *
     * @param sc Scanner
     * @param length Array length
     * @return String array
     */
    private static String[] strLine(Scanner sc, int length) {
      String[] strLine = new String[length];
      for (int i = 0; i < length; i++) {
        strLine[i] = nstr(sc);
      }
      return strLine;
    }

    /**
     * Returns the maximum value in the list. リスト内で最大値を返します。
     *
     * @param longList List
     * @return long maximum value
     */
    private static long maxFromList(List<Long> longList) {
      return longList.stream().max(Comparator.naturalOrder()).get();
    }

    /**
     * Returns the minimum value in the list. リスト内で最小値を返します。
     *
     * @param longList List
     * @return long minimum value
     */
    private static long minFromList(List<Long> longList) {
      return longList.stream().min(Comparator.naturalOrder()).get();
    }

    /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n int
     * @return sum of each digit
     */
    private static int sumDigits(int n) {
      int sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    }

    /**
     * Returns the sum of each digit. 各桁の和を返します。
     *
     * @param n long
     * @return sum of each digit
     */
    private static long sumDigits(long n) {
      long sum = 0;
      while (n != 0) {
        sum += n % 10;
        n /= 10;
      }
      return sum;
    }

    /**
     * Return a list of Integer. Integerのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Integer> getIntegerList(Scanner sc, int size) {
      List<Integer> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nint(sc));
      }
      return list;
    }

    /**
     * Return a list of Long. Longのリストを返します。
     *
     * @param sc Scanner
     * @param size list size
     * @return list
     */
    private static List<Long> getLongList(Scanner sc, int size) {
      List<Long> list = new ArrayList<>();
      for (int i = 0; i < size; i++) {
        list.add(nlong(sc));
      }
      return list;
    }

    /**
     * Returns the greatest common divisor of the two given values. 与えた2つの値の最大公約数を返します。
     *
     * @param m long
     * @param n long
     * @return greatest common divisor
     */
    private static long gcd(long m, long n) {
      if (m < n) return gcd(n, m);
      if (n == 0) return m;
      return gcd(n, m % n);
    }

    /**
     * Returns the least common multiple of the two given values. 与えた2つの値の最小公倍数を返します。
     *
     * @param m long
     * @param n long
     * @return least common multiple
     */
    private static long lcm(long m, long n) {
      return m * n / gcd(m, n);
    }

    /**
     * Returns the most frequent value in the list. リスト内で最頻出数値を返します。
     *
     * @param list List
     * @return most frequent value
     */
    private static Integer mode(List<Integer> list) {
      if (list.size() <= 0) {
        throw new IllegalArgumentException();
      }

      Map<Integer, Integer> modeMap = new HashMap<>();

      for (Integer x : list) {
        if (modeMap.containsKey(x)) {
          modeMap.put(x, modeMap.get(x) + 1);
        } else {
          modeMap.put(x, 1);
        }
      }

      int maxValue = 0;
      int maxKey = 0;

      for (Map.Entry<Integer, Integer> entry : modeMap.entrySet()) {
        if (maxValue < entry.getValue()) {
          maxValue = entry.getValue();
          maxKey = entry.getKey();
        }
      }

      return maxKey;
    }
  }
}
