You are given two arrays of integers a and b. For each element of the second array bj you should find the number of elements in array a that are less than or equal to the value bj.

Input

The first line contains two integers n, m (1 ≤ n, m ≤ 2·105) — the sizes of arrays a and b.

The second line contains n integers — the elements of array a ( - 109 ≤ ai ≤ 109).

The third line contains m integers — the elements of array b ( - 109 ≤ bj ≤ 109).

Output

Print m integers, separated by spaces: the j-th of which is equal to the number of such elements in array a that are less than or equal to the value bj.

Examples

Input

5 4
1 3 5 7 9
6 4 2 8


Output

3 2 1 4


Input

5 5
1 2 1 2 5
3 1 4 1 5


Output

4 2 4 2 5
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;

public class QueriesAaboutLessOrEqualElements {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws IOException {
		skp();
		int n = nextInt();
		int m = nextInt();
		int[] a = new int[n];
		skp();
		for (int i = 0; i < n; i++) {
			a[i] = nextInt();
		}
		StringBuffer sb = new StringBuffer();
		shuffle(a);
		Arrays.sort(a);
		
		skp();
		int[] b = new int[m];
		for (int i = 0; i < m; i++) {
			b[i] = nextInt();
			int value = b[i];
			int low = 0;
			int high = n - 1;
			int mid = -1;
			while (low <= high) {
				mid = (low + high) >>> 1;
				if (a[(int)mid] > value)
					high = mid - 1;
				else if (a[(int)mid] <= value)
					low = mid + 1;
				else
					break;
			}
			sb.append(low).append(" ");

		}
		System.out.println(sb.substring(0,sb.length()-1));
	}
	
	
	static void shuffle(int[] a)
	{
		int n = a.length;
		for(int i = 0; i < n; i++)
		{
			int r = i + (int)(Math.random() * (n - i));
			
			int tmp = a[i];
			a[i] = a[r];
			a[r] = tmp;
		}
	}

	static boolean skp() throws IOException {
		String line = r.readLine();
		if (line == null)
			return false;
		tkn = new StringTokenizer(line);
		return true;
	}

	static int nextInt() {
		return Integer.parseInt(tkn.nextToken());
	}

	static int readInt() throws NumberFormatException, IOException {
		return Integer.parseInt(r.readLine());
	}

	static long nextLong() {
		return Long.parseLong(tkn.nextToken());
	}

	static long readLong() throws NumberFormatException, IOException {
		return Long.parseLong(r.readLine());
	}

	static double nextDouble() {

		return Double.parseDouble(tkn.nextToken());
	}

	static BufferedReader r = new BufferedReader(new InputStreamReader(
			System.in));
	static StringTokenizer tkn;

}
