#include <bits/stdc++.h>
using namespace std;
long long expm(long long x, long long y, long long p) {
  if (y == 0) return 1;
  if (x == 0) return 0;
  if (y & 1)
    return ((expm(x, y / 2, p) * expm(x, y / 2, p) % p) * x) % p;
  else
    return expm(x, y / 2, p) * expm(x, y / 2, p) % p;
}
long long exp(long long x, long long y) {
  if (y == 0) return 1;
  if (x == 0) return 0;
  if (y & 1)
    return ((exp(x, y / 2) * exp(x, y / 2)) * x);
  else
    return exp(x, y / 2) * exp(x, y / 2);
}
long long gcd(long long a, long long b) {
  if (!b) return a;
  return gcd(b, a % b);
}
bool even(long long mid, long long a[], long long n, long long k) {
  long long c = 0;
  for (long long i = 0; i < n; i++) {
    if (c % 2) {
      c++;
    } else {
      if (a[i] <= mid) {
        c++;
      }
    }
  }
  return c >= k;
}
bool odd(long long mid, long long a[], long long n, long long k) {
  long long c = 0;
  for (long long i = 0; i < n; i++) {
    if (c % 2 == 0) {
      c++;
    } else {
      if (a[i] <= mid) {
        c++;
      }
    }
  }
  return c >= k;
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long t = 1;
  while (t--) {
    long long n, k;
    cin >> n >> k;
    long long mx = -1;
    long long a[n];
    for (long long i = 0; i < n; i++) {
      cin >> a[i];
      mx = max(mx, a[i]);
    }
    long long l = 1, r = mx, mid, ans = mx;
    while (l <= r) {
      mid = l + (r - l) / 2;
      if (odd(mid, a, n, k) || even(mid, a, n, k)) {
        ans = mid;
        r = mid - 1;
      } else {
        l = mid + 1;
      }
    }
    cout << ans << '\n';
  }
}
