#include<iostream>
using namespace std;
const int N = 1e6 + 10;
const long long int Max_val = 1e10 + 10;
int tr[4 * N];
int ls[4 * N], rs[4 * N];
int cnt = 0;
int n,x,root;
void push_up(int p)
{
tr[p] = tr[ls[p]] + tr[rs[p]];
}
void insert(int &p,long long int l,long long int r,long long int k,long long int val)
{
if (!p)p = ++cnt;
if (l == r)
{
tr[p] += val;
return;
}
long long int mid = (l + r) >> 1;
if (k <= mid)insert(ls[p], l, mid, k, val);
else insert(rs[p], mid + 1, r, k, val);
push_up(p);
}
long long int kth(int p,long long int l, long long int r,long long int k)
{
if (l == r)return l;
long long int mid = (l + r) >> 1;
if (k <= tr[ls[p]])return kth(ls[p], l, mid, k);
return kth(rs[p], mid + 1, r, k-tr[ls[p]]);
}
int main()
{
cin >> n;
long long int step = 1;
for (int i = 1; i <= n;i++)
{
cin >> x;
insert(root, 0, Max_val,x,1);
if (i % 2 != 0)
{
cout << kth(root, 0, Max_val,step)<<endl;
step++;
}
}
}