#include using namespace std; #include using namespace atcoder; // using mint = modint998244353; using ll = long long; #define fix(x) fixed << setprecision(x) #define rep(i, n) for(int i = 0; i < n; ++i) #define all(x) (x).begin(),(x).end() templatebool chmin(T&a, const T&b){if(a>b){a=b;return 1;}return 0;} templatebool chmax(T&a, const T&b){if(a> n; segtree seg(n); vector> a(n); rep(i,n) cin >> a[i].first, a[i].second = i+1; sort(all(a)); vector> ans(n,{INF,INF}); rep(i,n){ int x = seg.prod(0,a[i].second); chmin(ans[x].first, a[i].second); chmin(ans[x].second, a[i].first); seg.set(a[i].second-1, x+1); } for(auto [p,q]:ans){ if(p==INF) break; cout << p << " " << q << '\n'; } return 0; }