package chelper; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import io.InputReader; import io.OutputWriter; public class I { int n; int[] a, b; Map l1, l2; void swap(int i, int j) { int p1 = l1.get(a[i]); int p2 = l2.get(a[i]); if (p1 != i) { int c = p1; p1 = p2; p2 = c; } int p3 = l1.get(b[j]); int p4 = l2.get(b[j]); if (p3 != n + j) { int c = p3; p3 = p4; p4 = c; } l1.put(a[i], n + j); l2.put(a[i], p2); l1.put(b[j], i); l2.put(b[j], p4); int c = a[i]; a[i] = b[j]; b[j] = c; } public void solve(int testNumber, InputReader in, OutputWriter out) { n = in.nextInt(); a = in.nextIntArray(n); b = in.nextIntArray(n); l1 = new HashMap<>(); l2 = new HashMap<>(); for (int i = 0; i < n; i++) { if (!l1.containsKey(a[i])) { l1.put(a[i], i); } else { l2.put(a[i], i); } } for (int i = 0; i < n; i++) { if (!l1.containsKey(b[i])) { l1.put(b[i], i + n); } else { l2.put(b[i], i + n); } } List actions = new ArrayList<>(); for (int i = 0; i < n; i++) { int t = a[i]; int p1 = l1.get(t); int p2 = l2.get(t); if (p2 < p1) { int c = p1; p1 = p2; p2 = c; } if (p2 < n) { swap(p2, i); actions.add((p2 + 1) + " " + (i + 1)); } else { p2 -= n; swap(p2, p2); actions.add((p2 + 1) + " " + (p2 + 1)); swap(p2, i); actions.add((p2 + 1) + " " + (i + 1)); } } out.println(actions.size()); for (String action : actions) { out.println(action); } } }