#include using namespace std; using vi = vector; using ll = long long; using ull = unsigned long long; using pii = pair; using pll = pair; #define x first #define y second #define pb push_back #define mp make_pair #define all(x) (x).begin(), (x).end() #define szz(x) (int) (x).size() #define FOR(i,a,b) for (int i = (a), _for = (b); i < _for; i++) #define REP(i,n) FOR(i,0,(n)) const ll MOD = 1000000007; const double PI = acos(-1); const double EPS = 1e-10; int main() { freopen("sorting.in", "r", stdin); freopen("sorting.out", "w", stdout); int n; cin >> n; vi v(n, 0); REP(i,n) cin >> v[i]; vector swapped; vector prices(n + 1, vi(n + 1, 0)); REP(i,n) { int type; cin >> type; if (type == 1) { REP(z,n) REP(w,n) cin >> prices[z][w]; } } REP(i,n-1) { int s = i; FOR(j,s,n) { if (v[j] < v[s]) { s = j; } } swapped.pb({i, s}); swap(v[i], v[s]); } //REP(i,n) cout << v[i] << " "; //cout << endl; cout << swapped.size() << endl; for (auto& x : swapped) { cout << (x.x+1) << " " << (x.y + 1) << endl; } }