import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.Map; public class PickyParticles { private static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); public static String readLine() { try { return reader.readLine(); } catch (IOException e) { return null; } } public static void main(String[] args) { int n = Integer.parseInt(readLine()); Map> pGraph = new LinkedHashMap<>(); Map> eGraph = new LinkedHashMap<>(); Map pPairs = new LinkedHashMap<>(); Map ePairs = new LinkedHashMap<>(); boolean[] merged = new boolean[n]; for (int i = 0; i < n; i++) { String[] pref = readLine().split("\\s"); pGraph.put(i, new LinkedList<>()); for (String s : pref) { pGraph.get(i).add(Integer.parseInt(s)); } } for (int i = 0; i < n; i++) { String[] pref = readLine().split("\\s"); eGraph.put(i, new LinkedList<>()); for (String s : pref) { eGraph.get(i).add(Integer.parseInt(s)); } } while(pPairs.size() < n) { int p = -1; for (p = 0; p < merged.length; p++) { if(!merged[p]) break; } if(p < 0 || p >= n) break; int e = pGraph.get(p).removeFirst(); if(!ePairs.containsKey(e)) { pPairs.put(p, e); ePairs.put(e, p); merged[p] = true; } else { int pOld = ePairs.get(e); int pNew = p; int pref = findPref(eGraph.get(e), pOld, pNew); if(pref == pNew) { pPairs.remove(ePairs.get(e)); merged[ePairs.get(e)] = false; ePairs.put(e, p); pPairs.put(p, e); merged[p] = true; } } } for (int i = 0; i < n; i++) { System.out.println(i + " <-> " + pPairs.get(i)); } } private static int findPref(LinkedList integers, int pOld, int pNew) { for (Integer integer : integers) { if(integer == pOld) { return pOld; } else if(integer == pNew) { return pNew; } } return -1; } }