/*+lmake
 * DEFINE += MDEBUG
 */
#include <bits/stdc++.h>
#ifdef MDEBUG
#define debug(args...)                                                                             \
    {                                                                                              \
        dbg, args;                                                                                 \
        cerr << endl;                                                                              \
    }
#define massert(x) assert(x)
#else
#define debug(args...) // Just strip off all debug tokens
#define massert(x)
#endif
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
struct debugger
{
    template <typename T>
    debugger &operator,(const T &v)
    {
        cerr << v << " ";
        return *this;
    }
} dbg;
void iopen()
{
    static bool isOpen = false;
    if (!isOpen) {
        isOpen = true;
#ifdef MDEBUG
        freopen("in.txt", "r", stdin);
#endif
    }
}
template <size_t _I_Buffer_Size = 1 << 23, size_t _O_Buffer_Size = 1 << 23>
struct IO_Tp
{
    char _I_Buffer[_I_Buffer_Size];
    char *_I_pos;

    char _O_Buffer[_O_Buffer_Size];
    char *_O_pos;

    IO_Tp()
        : _I_pos(_I_Buffer)
        , _O_pos(_O_Buffer)
    {
        iopen();
        fread(_I_Buffer, 1, _I_Buffer_Size, stdin);
    }

    ~IO_Tp() { fwrite(_O_Buffer, 1, _O_pos - _O_Buffer, stdout); }

    inline bool is_digit(const char ch) { return '0' <= ch && ch <= '9'; }

    template <typename Int>
    inline IO_Tp &operator>>(Int &res)
    {
        res = 0;
        int k = 1;
        while (!is_digit(*_I_pos)) {
            if (*_I_pos == '-')
                k = -1;
            _I_pos++;
        }
        do
            (res *= 10) += (*_I_pos++) & 15;
        while (is_digit(*_I_pos));
        res *= k;
        return *this;
    }

    inline char getop()
    {
        while (!is_digit(*_I_pos))
            _I_pos++;
        return (*_I_pos++) & 15;
    }

    template <typename Int>
    inline IO_Tp &operator<<(Int n)
    {
        if (n < 0) {
            *_O_pos++ = '-';
            n = -n;
        }
        static char _buf[20];
        char *_pos(_buf);
        do
            *_pos++ = '0' + n % 10;
        while (n /= 10);
        while (_pos != _buf)
            *_O_pos++ = *--_pos;
        return *this;
    }

    inline IO_Tp &operator<<(char ch)
    {
        *_O_pos++ = ch;
        return *this;
    }
};
// IO_Tp<> IO;
#define MAXN 200000
int n;
int a[MAXN + 10];
bool b[MAXN+10];
bool check(int x)
{
	for(int i=1; i<2*n; ++i) {
		b[i]=a[i]>=x;
	}
	bool res=b[n]^((n+1)%2);
	int left=0;
	for(int i=n-1; i>=1; --i) {
		if (b[i]==b[i+1]) {
			left=i;
			break;
		}
	}
	int right=2*n;
	for(int i=n+1; i<2*n; ++i) {
		if (b[i]==b[i-1]) {
			right=i;
			break;
		}
	}
	if (left==0 && right==2*n) return res;
	if (left==0) {
		return b[right];
	}
	if (right==2*n) {
		return b[left];
	}
	if (abs(n-left)>abs(right-n)) return b[right];
	else return b[left];
}
int main()
{
    scanf("%d", &n);
    for (int i = 1; i < 2*n; ++i) {
        scanf("%d", &a[i]);
    }
	int l=1,r=2*n-1;
	while(l<r) {
		int mid=(l+r+1)/2;
		if (check(mid))
			l=mid;
		else r=mid-1;
	}
	printf("%d\n",l);
    return 0;
}

Measured memory_bytes: 1280