#include #include #include #include //#include #include #include #include #include #include //#include #include #include #include //#include #include #include //#include #include #include #include #include const int dx[] = {1, 0, -1, 0}; const int dy[] = {0, 1, 0, -1}; using namespace std; typedef long long ll; typedef vector vi; typedef vector vll; typedef pair pii; int toK[111]; int A[111], rA[111]; int main() { int N; cin >> N; int K; cin >> K; for (int i = 0; i < N; i++) toK[i] = i; for (int i = 0; i < K; i++) { int x, y; cin >> x >> y; x--; y--; swap(toK[x], toK[y]); } for (int i = 0; i < N; i++) { cin >> A[i]; A[i]--; rA[A[i]] = i; } vector ans; for (int i = 0; i < N; i++) { // j: 左から i 番目に来る数字 int j; for (j = 0; j < N; j++) { if (rA[i] == j) break; } // pos: j がある位置 int pos; for (pos = 0; pos < N; pos++) { if (toK[pos] == j) break; } while (pos > i) { ans.emplace_back(pos, pos+1); swap(toK[pos-1], toK[pos]); pos--; } } cout << ans.size() << endl; for (pii p : ans) { cout << p.first << " " << p.second << endl; } return 0; }