#pragma GCC optimize "trapv"
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
#define fio ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define ll long long
#define ull unsigned long long
#define ui unsigned int
#define vi vector<int>
#define vll vector<ll>
#define pb push_back
#define ld long double
// #define mp make_pair
#define pii pair<int,int>
// #define mod 998244353
#define rep(i,n) for(int i=0;i<n;i++)
#define repp(i,a,n) for(int i=a;i<n;i++)
#define all(v) v.begin(),v.end()
#define input(arr,n) for(ll i1=0;i1<n;i1++ )cin>>arr[i1]
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set tree<ll, null_type, less_equal<ll>, rb_tree_tag,tree_order_statistics_node_update>//s.order_of_key(val) *s.find_by_order(ind)
#define random(l,r,T) uniform_int_distribution<T>(l,r)(rng)
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
//----------------------------------- DEBUG -----------------------------------
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifdef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
*this << "[";
for (auto it = d.b; it != d.e; ++it)
*this << ", " + 2 * (it == d.b) << *it;
ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
// debug & operator << (debug & dd, P p) { dd << "(" << p.x << ", " << p.y << ")"; return dd; }
//----------------------------------- END DEBUG --------------------------------
template<typename T_vector>
void output_vector(const T_vector &v, bool add_one = false, int start = -1, int end = -1) {
if (start < 0) start = 0;
if (end < 0) end = int(v.size());
for (int i = start; i < end; i++)
cout << v[i] + (add_one ? 1 : 0) << (i < end - 1 ? ' ' : ' ');
}
struct custom_hash {
static uint64_t splitmix64(uint64_t x) {
// http://x...content-available-to-author-only...i.it/splitmix64.c
x += 0x9e3779b97f4a7c15;
x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
return x ^ (x >> 31);
}
size_t operator()(uint64_t x) const {
static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count();
return splitmix64(x + FIXED_RANDOM);
}
};
template<typename T> istream& operator >>(istream &in,vector<T> &v){
for(auto &x:v) in>>x; return in;
}
template<typename T> ostream& operator <<(ostream &out,vector<T> &v){
for(auto &x:v) out<<x<<' '; return out;
}
template<typename T1,typename T2> istream& operator >>(istream &in,pair<T1,T2> &p){
in>>p.first>>p.second; return in;
}
template<typename T1,typename T2> ostream& operator <<(ostream &out,pair<T1,T2> &p){
out<<p.first<<' '<<p.second; return out;
}
template<class T, class H>using umap=unordered_map<T,H,custom_hash>;
template<class T>using uset=unordered_set<T,custom_hash>;
const ll MaxN = 2e5 + 5;
vector<pair<ll,ll>> st(4 * MaxN, {LLONG_MAX, -1});
pair<ll,ll> merge(pair<ll,ll> p1, pair<ll,ll> p2) {
return (p1 < p2) ? p1 : p2;
}
void build(ll node, ll start, ll end, vll &a)
{
if(start == end)
{
st[node] = {a[end], end};
}
else
{
ll mid = (start + end) / 2;
build(2 * node + 1, start, mid, a);
build(2 * node + 2, mid + 1, end, a);
st[node] = merge(st[2 * node + 1], st[2 * node + 2]);
}
}
pair<ll,ll> query(ll node, ll start, ll end, ll l, ll r)
{
if(r < start || l > end)
return {LLONG_MAX, -1};
if(start >= l && end <= r)
return st[node];
ll mid = (start + end) / 2;
return merge(query(2 * node + 1, start, mid, l, r), query(2 * node + 2, mid + 1, end, l, r));
}
void update(ll node, ll start, ll end, ll pos, ll val)
{
if(pos < start || pos > end)
return;
else if(start == pos && end == pos)
{
st[node] = {val, pos};
return;
}
ll mid = (start + end) / 2;
update(2 * node + 1, start, mid, pos, val);
update(2 * node + 2, mid + 1, end, pos, val);
st[node] = merge(st[2 * node + 1], st[2 * node + 2]);
}
int32_t main()
{
#ifndef ONLINE_JUDGE
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
freopen("error.txt", "w", stderr);
#endif
fio;
clock_t clk = clock();
int t = 1;
// cin >> t;
rep(tc, t)
{
// cout << "Case #" << tc + 1 << ": ";
ll n;
cin >> n;
vll a(n);
cin >> a;
build(0, 0, n - 1, a);
for(int i = 0; i < n - 1; i++) {
auto minVal = query(0, 0, n - 1, i, n - 1);
cout << minVal << endl;
ll x = a[i];
ll y = minVal.second;
swap(a[i], a[y]);
cout << a << endl;
update(0, 0, n - 1, y, x);
}
cout << a << endl;
}
cerr << '\n'<<"Time (in s): " << double(clock() - clk) * 1.0 / CLOCKS_PER_SEC << '\n';
}
CiNwcmFnbWEgR0NDIG9wdGltaXplICJ0cmFwdiIKI2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGZpbyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKE5VTEwpO2NvdXQudGllKE5VTEwpCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgdWxsIHVuc2lnbmVkIGxvbmcgbG9uZwojZGVmaW5lIHVpIHVuc2lnbmVkIGludAojZGVmaW5lIHZpIHZlY3RvcjxpbnQ+CiNkZWZpbmUgdmxsIHZlY3RvcjxsbD4KI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBsZCBsb25nIGRvdWJsZQovLyAjZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBpaSBwYWlyPGludCxpbnQ+Ci8vICNkZWZpbmUgbW9kIDk5ODI0NDM1MwojZGVmaW5lIHJlcChpLG4pIGZvcihpbnQgaT0wO2k8bjtpKyspCiNkZWZpbmUgcmVwcChpLGEsbikgZm9yKGludCBpPWE7aTxuO2krKykKI2RlZmluZSBhbGwodikgdi5iZWdpbigpLHYuZW5kKCkKI2RlZmluZSBpbnB1dChhcnIsbikgZm9yKGxsIGkxPTA7aTE8bjtpMSsrICljaW4+PmFycltpMV0KI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPiAKI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+IAp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsgCiNkZWZpbmUgb3JkZXJlZF9zZXQgdHJlZTxsbCwgbnVsbF90eXBlLCBsZXNzX2VxdWFsPGxsPiwgcmJfdHJlZV90YWcsdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPi8vcy5vcmRlcl9vZl9rZXkodmFsKSAqcy5maW5kX2J5X29yZGVyKGluZCkKI2RlZmluZSByYW5kb20obCxyLFQpICAgIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxUPihsLHIpKHJuZykKbXQxOTkzNyBybmcoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBERUJVRyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojZGVmaW5lIHNpbSB0ZW1wbGF0ZSA8IGNsYXNzIGMKI2RlZmluZSByaXMgcmV0dXJuICogdGhpcwojZGVmaW5lIGRvciA+IGRlYnVnICYgb3BlcmF0b3IgPDwKI2RlZmluZSBlbmkoeCkgc2ltID4gdHlwZW5hbWUgXAplbmFibGVfaWY8c2l6ZW9mIGR1ZDxjPigwKSB4IDEsIGRlYnVnJj46OnR5cGUgb3BlcmF0b3I8PChjIGkpIHsKc2ltID4gc3RydWN0IHJnZSB7IGMgYiwgZTsgfTsKc2ltID4gcmdlPGM+IHJhbmdlKGMgaSwgYyBqKSB7IHJldHVybiByZ2U8Yz57aSwgan07IH0Kc2ltID4gYXV0byBkdWQoYyogeCkgLT4gZGVjbHR5cGUoY2VyciA8PCAqeCwgMCk7CnNpbSA+IGNoYXIgZHVkKC4uLik7CnN0cnVjdCBkZWJ1ZyB7CiNpZmRlZiBMT0NBTAp+ZGVidWcoKSB7IGNlcnIgPDwgZW5kbDsgfQplbmkoIT0pIGNlcnIgPDwgYm9vbGFscGhhIDw8IGk7IHJpczsgfQplbmkoPT0pIHJpcyA8PCByYW5nZShiZWdpbihpKSwgZW5kKGkpKTsgfQpzaW0sIGNsYXNzIGIgZG9yKHBhaXIgPCBiLCBjID4gZCkgewogIHJpcyA8PCAiKCIgPDwgZC5maXJzdCA8PCAiLCAiIDw8IGQuc2Vjb25kIDw8ICIpIjsKfQpzaW0gZG9yKHJnZTxjPiBkKSB7CiAgKnRoaXMgPDwgIlsiOwogIGZvciAoYXV0byBpdCA9IGQuYjsgaXQgIT0gZC5lOyArK2l0KQogICAgKnRoaXMgPDwgIiwgIiArIDIgKiAoaXQgPT0gZC5iKSA8PCAqaXQ7CiAgcmlzIDw8ICJdIjsKfQojZWxzZQpzaW0gZG9yKGNvbnN0IGMmKSB7IHJpczsgfQojZW5kaWYKfTsKI2RlZmluZSBpbWllKC4uLikgIiBbIiA8PCAjX19WQV9BUkdTX18gIjogIiA8PCAoX19WQV9BUkdTX18pIDw8ICJdICIKLy8gZGVidWcgJiBvcGVyYXRvciA8PCAoZGVidWcgJiBkZCwgUCBwKSB7IGRkIDw8ICIoIiA8PCBwLnggPDwgIiwgIiA8PCBwLnkgPDwgIikiOyByZXR1cm4gZGQ7IH0KIAovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVORCBERUJVRyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp0ZW1wbGF0ZTx0eXBlbmFtZSBUX3ZlY3Rvcj4Kdm9pZCBvdXRwdXRfdmVjdG9yKGNvbnN0IFRfdmVjdG9yICZ2LCBib29sIGFkZF9vbmUgPSBmYWxzZSwgaW50IHN0YXJ0ID0gLTEsIGludCBlbmQgPSAtMSkgewogICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwOwogICAgaWYgKGVuZCA8IDApIGVuZCA9IGludCh2LnNpemUoKSk7CiAKICAgIGZvciAoaW50IGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKQogICAgICAgIGNvdXQgPDwgdltpXSArIChhZGRfb25lID8gMSA6IDApIDw8IChpIDwgZW5kIC0gMSA/ICcgJyA6ICcgJyk7Cn0Kc3RydWN0IGN1c3RvbV9oYXNoIHsKICAgIHN0YXRpYyB1aW50NjRfdCBzcGxpdG1peDY0KHVpbnQ2NF90IHgpIHsKICAgICAgICAvLyBodHRwOi8veC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uaS5pdC9zcGxpdG1peDY0LmMKICAgICAgICB4ICs9IDB4OWUzNzc5Yjk3ZjRhN2MxNTsKICAgICAgICB4ID0gKHggXiAoeCA+PiAzMCkpICogMHhiZjU4NDc2ZDFjZTRlNWI5OwogICAgICAgIHggPSAoeCBeICh4ID4+IDI3KSkgKiAweDk0ZDA0OWJiMTMzMTExZWI7CiAgICAgICAgcmV0dXJuIHggXiAoeCA+PiAzMSk7CiAgICB9CgogICAgc2l6ZV90IG9wZXJhdG9yKCkodWludDY0X3QgeCkgY29uc3QgewogICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBGSVhFRF9SQU5ET00gPSBjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCk7CiAgICAgICAgcmV0dXJuIHNwbGl0bWl4NjQoeCArIEZJWEVEX1JBTkRPTSk7CiAgICB9Cn07CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlzdHJlYW0mIG9wZXJhdG9yID4+KGlzdHJlYW0gJmluLHZlY3RvcjxUPiAmdil7CiAgICBmb3IoYXV0byAmeDp2KSBpbj4+eDsgcmV0dXJuIGluOwp9CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IG9zdHJlYW0mIG9wZXJhdG9yIDw8KG9zdHJlYW0gJm91dCx2ZWN0b3I8VD4gJnYpewogICAgZm9yKGF1dG8gJng6dikgb3V0PDx4PDwnICc7IHJldHVybiBvdXQ7Cn0KdGVtcGxhdGU8dHlwZW5hbWUgVDEsdHlwZW5hbWUgVDI+IGlzdHJlYW0mIG9wZXJhdG9yID4+KGlzdHJlYW0gJmluLHBhaXI8VDEsVDI+ICZwKXsKICAgIGluPj5wLmZpcnN0Pj5wLnNlY29uZDsgcmV0dXJuIGluOwp9CnRlbXBsYXRlPHR5cGVuYW1lIFQxLHR5cGVuYW1lIFQyPiBvc3RyZWFtJiBvcGVyYXRvciA8PChvc3RyZWFtICZvdXQscGFpcjxUMSxUMj4gJnApewogICAgb3V0PDxwLmZpcnN0PDwnICc8PHAuc2Vjb25kOyByZXR1cm4gb3V0Owp9CnRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEg+dXNpbmcgdW1hcD11bm9yZGVyZWRfbWFwPFQsSCxjdXN0b21faGFzaD47CnRlbXBsYXRlPGNsYXNzIFQ+dXNpbmcgdXNldD11bm9yZGVyZWRfc2V0PFQsY3VzdG9tX2hhc2g+Owpjb25zdCBsbCBNYXhOID0gMmU1ICsgNTsKdmVjdG9yPHBhaXI8bGwsbGw+PiBzdCg0ICogTWF4Tiwge0xMT05HX01BWCwgLTF9KTsKcGFpcjxsbCxsbD4gbWVyZ2UocGFpcjxsbCxsbD4gcDEsIHBhaXI8bGwsbGw+IHAyKSB7CiAgICByZXR1cm4gKHAxIDwgcDIpID8gcDEgOiBwMjsKfQp2b2lkIGJ1aWxkKGxsIG5vZGUsIGxsIHN0YXJ0LCBsbCBlbmQsIHZsbCAmYSkKewogICAgaWYoc3RhcnQgPT0gZW5kKQogICAgewogICAgICAgIHN0W25vZGVdID0ge2FbZW5kXSwgZW5kfTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBsbCBtaWQgPSAoc3RhcnQgKyBlbmQpIC8gMjsKICAgICAgICBidWlsZCgyICogbm9kZSArIDEsIHN0YXJ0LCBtaWQsIGEpOwogICAgICAgIGJ1aWxkKDIgKiBub2RlICsgMiwgbWlkICsgMSwgZW5kLCBhKTsKICAgICAgICBzdFtub2RlXSA9IG1lcmdlKHN0WzIgKiBub2RlICsgMV0sIHN0WzIgKiBub2RlICsgMl0pOwogICAgfQp9CnBhaXI8bGwsbGw+IHF1ZXJ5KGxsIG5vZGUsIGxsIHN0YXJ0LCBsbCBlbmQsIGxsIGwsIGxsIHIpCnsKICAgIGlmKHIgPCBzdGFydCB8fCBsID4gZW5kKQogICAgcmV0dXJuIHtMTE9OR19NQVgsIC0xfTsKICAgIGlmKHN0YXJ0ID49IGwgJiYgZW5kIDw9IHIpCiAgICByZXR1cm4gc3Rbbm9kZV07CiAgICBsbCBtaWQgPSAoc3RhcnQgKyBlbmQpIC8gMjsKICAgIHJldHVybiBtZXJnZShxdWVyeSgyICogbm9kZSArIDEsIHN0YXJ0LCBtaWQsIGwsIHIpLCBxdWVyeSgyICogbm9kZSArIDIsIG1pZCArIDEsIGVuZCwgbCwgcikpOwp9CnZvaWQgdXBkYXRlKGxsIG5vZGUsIGxsIHN0YXJ0LCBsbCBlbmQsIGxsIHBvcywgbGwgdmFsKQp7CiAgICBpZihwb3MgPCBzdGFydCB8fCBwb3MgPiBlbmQpCiAgICByZXR1cm47CiAgICBlbHNlIGlmKHN0YXJ0ID09IHBvcyAmJiBlbmQgPT0gcG9zKQogICAgewogICAgICAgIHN0W25vZGVdID0ge3ZhbCwgcG9zfTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBsbCBtaWQgPSAoc3RhcnQgKyBlbmQpIC8gMjsKICAgIHVwZGF0ZSgyICogbm9kZSArIDEsIHN0YXJ0LCBtaWQsIHBvcywgdmFsKTsKICAgIHVwZGF0ZSgyICogbm9kZSArIDIsIG1pZCArIDEsIGVuZCwgcG9zLCB2YWwpOwogICAgc3Rbbm9kZV0gPSBtZXJnZShzdFsyICogbm9kZSArIDFdLCBzdFsyICogbm9kZSArIDJdKTsKfQppbnQzMl90IG1haW4oKQp7CiAgICAjaWZuZGVmIE9OTElORV9KVURHRQogICAgLy8gZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICAvLyBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwogICAgZnJlb3BlbigiZXJyb3IudHh0IiwgInciLCBzdGRlcnIpOwogICAgI2VuZGlmCiAgICBmaW87CiAgICBjbG9ja190IGNsayA9IGNsb2NrKCk7CiAgICBpbnQgdCA9IDE7CiAgICAvLyBjaW4gPj4gdDsKICAgIHJlcCh0YywgdCkKICAgIHsKICAgICAgICAvLyBjb3V0IDw8ICJDYXNlICMiIDw8IHRjICsgMSA8PCAiOiAiOwogICAgICAgIGxsIG47CiAgICAgICAgY2luID4+IG47CiAgICAgICAgdmxsIGEobik7CiAgICAgICAgY2luID4+IGE7CiAgICAgICAgYnVpbGQoMCwgMCwgbiAtIDEsIGEpOwogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKSB7CiAgICAgICAgICAgIGF1dG8gbWluVmFsID0gcXVlcnkoMCwgMCwgbiAtIDEsIGksIG4gLSAxKTsKICAgICAgICAgICAgY291dCA8PCBtaW5WYWwgPDwgZW5kbDsKICAgICAgICAgICAgbGwgeCA9IGFbaV07CiAgICAgICAgICAgIGxsIHkgPSBtaW5WYWwuc2Vjb25kOwogICAgICAgICAgICBzd2FwKGFbaV0sIGFbeV0pOwogICAgICAgICAgICBjb3V0IDw8IGEgPDwgZW5kbDsKICAgICAgICAgICAgdXBkYXRlKDAsIDAsIG4gLSAxLCB5LCB4KTsKICAgICAgICB9CiAgICAgICAgY291dCA8PCBhIDw8IGVuZGw7CiAgICB9IAogICAgY2VyciA8PCAnXG4nPDwiVGltZSAoaW4gcyk6ICIgPDwgZG91YmxlKGNsb2NrKCkgLSBjbGspICogMS4wIC8gQ0xPQ0tTX1BFUl9TRUMgPDwgJ1xuJzsgICAgCn0gCg==