#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
using namespace std;
struct node
{
int value, position;
bool left, right;
bool operator < ( const node& a) const
{
return value < a.value ;
}
} ;
int main( )
{
int n;
cin >> n;
vector < node > a( n) ;
set < node > s;
for ( auto & i: a)
{
cin >> i.value ;
i.left = i.right = 0 ;
}
a[ 0 ] .position = 1 ;
s.insert ( a[ 0 ] ) ;
for ( int i= 1 ; i< n; i++ )
{
auto it= s.upper_bound ( a[ i] ) ;
auto it2= it; -- it2;
if ( it== s.begin ( ) )
{
a[ i] .position = 2 * it- > position;
s.insert ( a[ i] ) ;
it- > left= 1 ;
}
else if ( it== s.end ( ) )
{
a[ i] .position = 2 * ( -- it) - > position+ 1 ;
s.insert ( a[ i] ) ;
it- > right= 1 ;
}
else
{
if ( it2- > right== 0 )
{
a[ i] .position = 2 * it2- > position+ 1 ;
s.insert ( a[ i] ) ;
it2- > right= 1 ;
}
else
{
a[ i] .position = 2 * it- > position;
s.insert ( a[ i] ) ;
it- > left= 1 ;
}
}
}
for ( auto i: a) cout << i.position << ' ' ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IG5vZGUKewoJaW50IHZhbHVlLCBwb3NpdGlvbjsKCWJvb2wgbGVmdCwgcmlnaHQ7Cglib29sIG9wZXJhdG9yIDwgKGNvbnN0IG5vZGUmIGEpIGNvbnN0Cgl7CgkJcmV0dXJuIHZhbHVlIDwgYS52YWx1ZTsKCX0KfTsKCmludCBtYWluKCkKewoJaW50IG47CgljaW4gPj4gbjsKCgl2ZWN0b3IgPCBub2RlID4gYShuKTsKCXNldCA8IG5vZGUgPiBzOwoKCWZvciAoYXV0byAmaTogYSkKCXsKCQljaW4gPj4gaS52YWx1ZTsKCQlpLmxlZnQ9aS5yaWdodD0wOwoJfQoKCWFbMF0ucG9zaXRpb249MTsKCXMuaW5zZXJ0KGFbMF0pOwoKCWZvciAoaW50IGk9MTsgaTxuOyBpKyspCgl7CgkJYXV0byBpdD1zLnVwcGVyX2JvdW5kKGFbaV0pOwoJCWF1dG8gaXQyPWl0OyAtLWl0MjsKCQlpZiAoaXQ9PXMuYmVnaW4oKSkKCQl7CgkJCWFbaV0ucG9zaXRpb249MippdC0+cG9zaXRpb247CgkJCXMuaW5zZXJ0KGFbaV0pOwoJCQlpdC0+bGVmdD0xOwoJCX0KCQllbHNlIGlmIChpdD09cy5lbmQoKSkKCQl7CgkJCWFbaV0ucG9zaXRpb249MiooLS1pdCktPnBvc2l0aW9uKzE7CgkJCXMuaW5zZXJ0KGFbaV0pOwoJCQlpdC0+cmlnaHQ9MTsKCQl9CgkJZWxzZQoJCXsKCQkJaWYgKGl0Mi0+cmlnaHQ9PTApCgkJCXsKCQkJCWFbaV0ucG9zaXRpb249MippdDItPnBvc2l0aW9uKzE7CgkJCQlzLmluc2VydChhW2ldKTsKCQkJCWl0Mi0+cmlnaHQ9MTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWFbaV0ucG9zaXRpb249MippdC0+cG9zaXRpb247CgkJCQlzLmluc2VydChhW2ldKTsKCQkJCWl0LT5sZWZ0PTE7CgkJCX0KCQl9Cgl9CgoJZm9yIChhdXRvIGk6IGEpIGNvdXQgPDwgaS5wb3NpdGlvbiA8PCAnICc7Cn0=