/*
* Problem :: 2548 / 대표 자연수
*
* Kind :: Math
*
* Insight
* - 대표 자연수 = 주어진 모든 자연수들에 대하여 그 차이를 계산하여
* 그 차이들 전체의 합을 최소로 하는 자연수
* + 이거... 중앙값인데?
* # 7571 / 점 모으기
* https://gglifer-cs.tistory.com/13
*
* Point
* - 복습겸 다시생각해보자
* + x1, x2, x3, ..., xn 이라는 수열이 있다고 하자
* 여기서 xk <= a <= x(k+1) 인 a 가 있다고 하자
* # |x1-a| + |x2-a| + ... + |xn-a| 의 최소를 구하여야 한다
* a 에 1 을 더하면 a 의 왼쪽에 있는 수들과 거리가 1 증가하고
* 오른쪽에 있는 수들과 거리가 1 감소한다
* a 에 1 을 빼면 a 의 왼쪽에 있는 수들과 거리가 1 감소하고
* 오른쪽에 있는 수들과 거리가 1 증가한다
* -> a 의 왼쪽에 있는 수들의 개수를 x, 오른쪽에 있는 수들의 개수를 y 라고 하면
* x > y 인 경우, x = y 이게끔 a 의 수를 증가시키면 전체 차이의 합이 감소한다
* a 가 1 증가하면 -x + y 가 되기 때문이다
* x < y 인 경우, x = y 이게끔 a 의 수를 감소시키면 전체 차이의 합이 감소한다
* a 가 1 감소하면 x + -y 가 되기 때문
* 따라서, x = y 일 때가 전체 차이의 합의 최소이다
* (짝수의 경우는 x+1 = y 혹은 x = y+1 때가 전체 차이의 합의 최소이다)
* => a 가 중앙값일 때 위를 만족하므로 중앙값을 구하자
*
* - 중앙값은 구하기
* + 수열을 오름차순으로 정렬한다 (사실 내림차순도 상관없음)
* 수열의 길이가 N 일 때
* # 홀수의 경우
* A[N/2] or A[(N-1)/2]
* # 짝수의 경우
* 작은 중앙값 : A[(N-1)/2]
* 큰 중앙값 : A[N/2]
* -> 따라서, 대표 자연수는 A[(N-1)/2] 로 구할 수 있다
*/
//
// BOJ
// ver.C++
//
// Created by GGlifer
//
// Open Source
#include <iostream>
#include <algorithm>
using namespace std;
#define endl '\n'
// Set up : Global Variables
/* None */
// Set up : Functions Declaration
/* None */
int main()
{
// Set up : I/O
ios::sync_with_stdio(false);
cin.tie(nullptr);
// Set up : Input
int N; cin >> N;
int A[N];
for (int i=0; i<N; i++)
cin >> A[i];
// Process
sort(A, A+N);
// Control : Output
cout << A[(N-1)/2] << endl;
}
// Helper Functions
/* None */