#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <string.h>
using namespace std;
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int Partition(int A[], int p, int r)//将A[r]作为参考值,来划分数组,左边小于,右边大于(本来为快速排序的一部分)
{
int x = A[r];
int i = p-1;
for(int j = p; j < r; j ++)
if(A[j] <= x)
{
i++;
swap(A[i],A[j]);
}
swap(A[i+1],A[r]);
return i+1;
}
int Randomized_Partition(int A[], int p, int r)
{
srand((unsigned)time(NULL));
int i = (rand() % (r-p+1))+ p;//获取[p,r]之间的随机数
swap(A[r], A[i]);
return Partition(A, p, r);
}
int Randomized_Select(int A[], int p, int r, int i)
{
if(p == r)
{
return A[p];
}
int q = Randomized_Partition(A, p, r);
int k = q - p + 1;
if(i == k)
return A[q];
else if(i < k)
return Randomized_Select(A, p, q-1, i);
else
return Randomized_Select(A, q + 1, r, i - k);
}
int main()
{
int T, i = 1, n, a[100];
freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
cin >> T;
n = T;
while(T--)
{
cin>>a[i];
i++;
}
cout<<Randomized_Select(a,1,8,5);
fclose(stdin);
//fclose(stdout);
return 0;
}