Const
Nmaks = 3000000000000;
Type
pair = record
bil : int64;
indeks : longint;
end;
Var
data : array[0..100010] of pair;
jumdata,i : longint;
function cek(object1,object2 : pair) : boolean;
Begin
if object1.bil = object2.bil then
cek := object1.indeks < object2.indeks
else cek := object1.bil < object2.bil;
end;
procedure swap(var object1,object2 : pair);
Var
temp : pair;
Begin
temp := object1;
object1 := object2;
object2 := temp;
end;
procedure qsbil(left,right : longint);
Var
ki,ka : longint;
mid : pair;
Begin
ki := left; ka := right;
mid := data[(left+right) div 2];
while ki <= ka do
begin
while cek(data[ki],mid) do inc(ki);
while cek(mid,data[ka]) do dec(ka);
if ki <= ka then
Begin
swap(data[ki],data[ka]);
inc(ki); dec(ka);
end;
end;
if left < ka then qsbil(left,ka);
if ki < right then qsbil(ki,right);
end;
procedure qsidx(left,right : longint);
Var
ki,ka,mid : longint;
Begin
ki := left; ka := right;
mid := data[(left+right) div 2].indeks;
while ki <= ka do
Begin
while data[ki].indeks < mid do inc(ki);
while data[ka].indeks > mid do dec(ka);
if ki <= ka then
Begin
swap(data[ki],data[ka]);
inc(ki); dec(ka);
end;
end;
if left < ka then qsidx(left,ka);
if ki < right then qsidx(ki,right);
end;
Begin
readln(jumdata);
for i := 1 to jumdata do
Begin
readln(data[i].bil);
data[i].indeks := i;
end;
qsbil(1,jumdata);
for i := 1 to jumdata do
if data[i].bil = data[i-1].bil then data[i].bil := Nmaks;
qsidx(1,jumdata);
for i := 1 to jumdata do
if data[i].bil <> Nmaks then writeln(data[i].bil);
end.
Q29uc3QKCU5tYWtzID0gMzAwMDAwMDAwMDAwMDsKVHlwZQoJcGFpciA9IHJlY29yZAoJCWJpbCA6IGludDY0OwoJCWluZGVrcyA6IGxvbmdpbnQ7CmVuZDsKClZhcgoJZGF0YSA6IGFycmF5WzAuLjEwMDAxMF0gb2YgcGFpcjsKCWp1bWRhdGEsaSA6IGxvbmdpbnQ7CgkKZnVuY3Rpb24gY2VrKG9iamVjdDEsb2JqZWN0MiA6IHBhaXIpIDogYm9vbGVhbjsKQmVnaW4KCWlmIG9iamVjdDEuYmlsID0gb2JqZWN0Mi5iaWwgdGhlbgoJCWNlayA6PSBvYmplY3QxLmluZGVrcyA8IG9iamVjdDIuaW5kZWtzCgllbHNlIGNlayA6PSBvYmplY3QxLmJpbCA8IG9iamVjdDIuYmlsOwplbmQ7Cgpwcm9jZWR1cmUgc3dhcCh2YXIgb2JqZWN0MSxvYmplY3QyIDogcGFpcik7ClZhcgoJdGVtcCA6IHBhaXI7CkJlZ2luCgl0ZW1wIDo9IG9iamVjdDE7CglvYmplY3QxIDo9IG9iamVjdDI7CglvYmplY3QyIDo9IHRlbXA7CmVuZDsKCnByb2NlZHVyZSBxc2JpbChsZWZ0LHJpZ2h0IDogbG9uZ2ludCk7ClZhcgoJa2ksa2EgOiBsb25naW50OwoJbWlkIDogcGFpcjsKQmVnaW4KCWtpIDo9IGxlZnQ7IGthIDo9IHJpZ2h0OwoJbWlkIDo9IGRhdGFbKGxlZnQrcmlnaHQpIGRpdiAyXTsKCXdoaWxlIGtpIDw9IGthIGRvCgliZWdpbgoJCXdoaWxlIGNlayhkYXRhW2tpXSxtaWQpIGRvIGluYyhraSk7CgkJd2hpbGUgY2VrKG1pZCxkYXRhW2thXSkgZG8gZGVjKGthKTsKCQkKCQlpZiBraSA8PSBrYSB0aGVuCgkJCUJlZ2luCgkJCQlzd2FwKGRhdGFba2ldLGRhdGFba2FdKTsKCQkJCWluYyhraSk7IGRlYyhrYSk7CgkJCWVuZDsKCWVuZDsKCQoJaWYgbGVmdCA8IGthIHRoZW4gcXNiaWwobGVmdCxrYSk7CglpZiBraSA8IHJpZ2h0IHRoZW4gcXNiaWwoa2kscmlnaHQpOwplbmQ7Cgpwcm9jZWR1cmUgcXNpZHgobGVmdCxyaWdodCA6IGxvbmdpbnQpOwpWYXIKCWtpLGthLG1pZCA6IGxvbmdpbnQ7CkJlZ2luCglraSA6PSBsZWZ0OyBrYSA6PSByaWdodDsKCW1pZCA6PSBkYXRhWyhsZWZ0K3JpZ2h0KSBkaXYgMl0uaW5kZWtzOwoJd2hpbGUga2kgPD0ga2EgZG8KCUJlZ2luCgkJd2hpbGUgZGF0YVtraV0uaW5kZWtzIDwgbWlkIGRvIGluYyhraSk7CgkJd2hpbGUgZGF0YVtrYV0uaW5kZWtzID4gbWlkIGRvIGRlYyhrYSk7CgkJCgkJaWYga2kgPD0ga2EgdGhlbgoJCQlCZWdpbgoJCQkJc3dhcChkYXRhW2tpXSxkYXRhW2thXSk7CgkJCQlpbmMoa2kpOyBkZWMoa2EpOwoJCQllbmQ7CgllbmQ7CgkKCWlmIGxlZnQgPCBrYSB0aGVuIHFzaWR4KGxlZnQsa2EpOwoJaWYga2kgPCByaWdodCB0aGVuIHFzaWR4KGtpLHJpZ2h0KTsKZW5kOwoKQmVnaW4KCXJlYWRsbihqdW1kYXRhKTsKCWZvciBpIDo9IDEgdG8ganVtZGF0YSBkbwoJQmVnaW4KCQlyZWFkbG4oZGF0YVtpXS5iaWwpOwoJCWRhdGFbaV0uaW5kZWtzIDo9IGk7CgllbmQ7CgkKCXFzYmlsKDEsanVtZGF0YSk7CQoJCglmb3IgaSA6PSAxIHRvIGp1bWRhdGEgZG8KCQlpZiBkYXRhW2ldLmJpbCA9IGRhdGFbaS0xXS5iaWwgdGhlbglkYXRhW2ldLmJpbCA6PSBObWFrczsKCQkKCXFzaWR4KDEsanVtZGF0YSk7CgkKCWZvciBpIDo9IDEgdG8ganVtZGF0YSBkbwoJCWlmIGRhdGFbaV0uYmlsIDw+IE5tYWtzIHRoZW4gd3JpdGVsbihkYXRhW2ldLmJpbCk7CmVuZC4K