n = gets.to_i ps = gets.split.map(&:to_i) q = [] pos = ps.map.with_index { [_1, _2] }.sort_by { _1[0] }.map { _1[1] } nxt = (1..n).to_a.tap { _1[-1] = nil } n.times do |i| now = pos[i] next if nxt[now].nil? nx = nxt[now] q.push ps[now], ps[nx] nxt[now] = nxt[nx] = nil nxt[now - 1] = nx + 1 if now > 0 end puts q.join ?\s