import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BinarySearch { public static void main(String[] args) { FastScanner scanner = new FastScanner(System.in); int n = scanner.nextInt(); int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = scanner.nextInt(); } int m = scanner.nextInt(); int[] b = new int[m]; for (int i = 0; i < m; i++) { b[i] = scanner.nextInt(); } for (int i = 0; i < m; i++) { // replace with the call to binarySearch when implemented System.out.print(binarySearch(a, b[i]) + " "); } } public static int binarySearch(int[] a, int key) { return binarySearchRecursive(a, 0, a.length - 1, key); } public static int binarySearchRecursive(int[] a, int low, int high, int key) { if (high < low) return -1; int mid = (int) Math.floor(low + (high - low) / 2); if (key == a[mid]) { return mid; } else if (key < a[mid]) return binarySearchRecursive(a, low, mid - 1, key); else return binarySearchRecursive(a, mid + 1, high, key); } static class FastScanner { BufferedReader br; StringTokenizer st; FastScanner(InputStream stream) { try { br = new BufferedReader(new InputStreamReader(stream)); } catch (Exception e) { e.printStackTrace(); } } String next() { while (st == null || !st.hasMoreTokens()) { try { st = new StringTokenizer(br.readLine()); } catch (IOException e) { e.printStackTrace(); } } return st.nextToken(); } int nextInt() { return Integer.parseInt(next()); } } }