#include <bits/stdc++.h>
using namespace std;
using vi = vector <int>;
set <int> s;
vi foo(vi const &a) {
vi ret;
s.clear();
for (auto const x: a) {
auto it = s.lower_bound(x);
if (it != begin(s)) {
it = prev(it);
ret.push_back(*it);
} else {
ret.push_back(-1);
}
s.insert(x);
}
return ret;
}
int main() {
vi a = {1, 2, 5, 4, 2, 6, 7, 3};
vi b = foo(a);
for (auto x: b) printf("%d ", x); puts("");
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyB2aSA9IHZlY3RvciA8aW50PjsKCnNldCA8aW50PiBzOwoKdmkgZm9vKHZpIGNvbnN0ICZhKSB7CiAgICB2aSByZXQ7CiAgICBzLmNsZWFyKCk7CiAgICBmb3IgKGF1dG8gY29uc3QgeDogYSkgewogICAgICAgIGF1dG8gaXQgPSBzLmxvd2VyX2JvdW5kKHgpOwogICAgICAgIGlmIChpdCAhPSBiZWdpbihzKSkgewogICAgICAgICAgICBpdCA9IHByZXYoaXQpOwogICAgICAgICAgICByZXQucHVzaF9iYWNrKCppdCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0LnB1c2hfYmFjaygtMSk7CiAgICAgICAgfQogICAgICAgIHMuaW5zZXJ0KHgpOwogICAgfQogICAgcmV0dXJuIHJldDsKfQoKaW50IG1haW4oKSB7CiAgICB2aSBhID0gezEsIDIsIDUsIDQsIDIsIDYsIDcsIDN9OwogICAgdmkgYiA9IGZvbyhhKTsKICAgIGZvciAoYXV0byB4OiBiKSBwcmludGYoIiVkICIsIHgpOyBwdXRzKCIiKTsKICAgIHJldHVybiAwOwp9Cg==