N = input() K = input() lines = [] for i in xrange(K): lines.append(map(lambda x:x-1, map(int, raw_input().split()))) pos_dist = map(int, raw_input().split()) pos_dist = map(lambda x: x-1, pos_dist) pos_mid = list(pos_dist) for s in lines: pos_mid[s[0]], pos_mid[s[1]] = pos_mid[s[1]], pos_mid[s[0]] cnt = 0 lines_new = [] for n in range(N): i = pos_mid.index(n) while i > n: if pos_mid[i-1] > pos_mid[i]: pos_mid[i-1], pos_mid[i] = pos_mid[i], pos_mid[i-1] lines_new.append([i, i+1]) cnt += 1 i -= 1 print cnt for i in lines_new: print i[0], i[1]