#include <bits/stdc++.h>
int w = 0;
int const oo = (int)10e6;
using namespace std;
char vowels[] = {'a', 'o', 'e', 'u', 'i'};
int A[2 * 100000];
long long n, m;
bool cycle = false;
long long x, y, z;
bitset<64> bt;
set<int> st;
vector<bool> vis;
vector<vector<int>> v;
map<int, int> mp;
map<int, int> mp2;
priority_queue<long long, vector<long long>, greater<long long>> pq;
bool viss[100][100] = {0};
int l1, l2;
int saved[100][100];
long long savedans[100000] = {1};
vector<pair<int, int>> v2;
vector<int> vc;
vector<int> va;
int gr[1000][1000];
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
long long lcm(long long n, long long m) { return (n * m) / gcd(n, m); }
bool prime(long long n) {
  if (n == 0 || n == 1) return 1;
  for (long long i = 2; i * i <= n; i++)
    if (n % i == 0) return 0;
  return 1;
}
bool isvowels(char a) {
  for (int i = 0; i < 5; i++)
    if (a == vowels[i]) return true;
  return false;
}
int binary_search(int x) {
  int l = 0, r = 500, mid;
  while (l <= r) {
    mid = (l + r) / 2;
    if (mid * (mid + 1) == x)
      break;
    else if (mid * (mid + 1) >= x)
      r = mid - 1;
    else
      l = mid + 1;
  }
  if (mid * (mid + 1) == x)
    return mid;
  else
    return -1;
}
bool bal(string z) {
  string x = z;
  reverse(x.begin(), x.end());
  if (z == x)
    return true;
  else
    return false;
}
void fast() {
  std::ios_base::sync_with_stdio(0);
  cin.tie(NULL);
}
void CDfs(int u, int p) {
  if (vis[u]) {
    cycle = true;
    return;
  }
  vis[u] = 1;
  for (int i = 0; i < v[u].size(); i++)
    if (v[u][i] != p) CDfs(v[u][i], u);
}
bool F(int i, long long sum) {
  if (i == n) return sum % m == 0;
  if (savedans[i] != -1) return savedans[i];
  if (F(i + 1, sum + vc[i]) || F(i + 1, sum - vc[i])) return 1;
  return 0;
}
int FEB(int n) {
  if (n <= 1) return 1;
  if (savedans[n] != -1) return savedans[n];
  return savedans[n] = FEB(n - 1) + FEB(n - 2);
}
int arr1[100005] = {-1}, arr2[100005] = {-1};
void Dfs(int u, int p, int c) {
  if (vis[u]) return;
  c++;
  arr1[u] = c;
  arr2[c - 1] = u;
  vis[u] = 1;
  for (int i = 0; i < v[u].size(); i++) {
    Dfs(v[u][i], u, c);
  }
  return;
}
queue<pair<int, int>> bq;
int BFS(int u, int p) {
  if (vis[u]) return 0;
  vis[u] = 1;
  cout << u << " ";
  if (u == p) return 0;
  bq.push({u, 0});
  vc[u] = 0;
  int cur, dep;
  while (!bq.empty()) {
    pair<int, int> pa = bq.front();
    bq.pop();
    cur = pa.first;
    dep = pa.second;
    for (int i = 0; i < v[u].size(); i++)
      if (vc[v[u][i]] == oo) bq.push({v[u][i], dep + 1}), vc[v[u][i]] = dep + 1;
    BFS(pa.first, pa.second);
  }
  return 0;
}
int find(int u) {
  if (A[u] == u)
    return u;
  else
    return A[u] = find(A[u]);
}
bool valied(int x, int y) {
  if (x >= n || y >= m || x < 0 || y < 0) return 0;
  return 1;
}
int maxxx(int x, int y) {
  if (!valied) return 0;
  if (saved[x][y] != -1) return saved[x][y];
  return saved[x][y] = gr[x][y] + max(maxxx(x + 1, y), maxxx(x, y + 1));
}
string ok = "YES", no = "NO";
map<pair<int, int>, int> mpp;
int main() {
  cin >> n;
  vc.resize(n);
  for (int(i) = 0; (i) < (long long)(n); (i)++) {
    cin >> vc[i];
  }
  sort(vc.begin(), vc.end());
  int p;
  if (n % 2 == 0)
    p = (n / 2) - 1;
  else
    p = (n / 2);
  cout << vc[p] << endl;
}
