#include #include #include using namespace std; const int MAXN = 1005; int n; int a[MAXN]; int opening[MAXN], closing[MAXN]; ifstream fin("sgnirts.in"); ofstream fout("sgnirts.out"); void solve(int l, int r, bool same) { if(l>=r) return; int maxNum = l, ind; for(int i = l;i<=r;i++) { maxNum = max(maxNum, a[i]); if(i==maxNum) { if(l!=i) { opening[l]++; closing[i]++; } ind = i; break; } } if(ind==r && same==true) { fout << "Impossible" << '\n'; exit(0); } reverse(a+l, a+ind+1); if(ind==r) { solve(l, r, true); return; } solve(l, ind, false); solve(ind+1, r, false); } int main() { ios::sync_with_stdio(false); cin.tie(NULL); fin >> n; for(int i = 1;i<=n;i++) { fin >> a[i]; } solve(1, n, false); for(int i = 1;i<=n;i++) { for(int j = 0;j