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.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.InputMismatchException;
		
			 
			public class Solution1 implements Runnable
			{
				static final int MAX = 1000000007;
				static class InputReader
				{
					private InputStream stream;
					private byte[] buf = new byte[1024];
					private int curChar;
					private int numChars;
					private SpaceCharFilter filter;
					private BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
			
					public InputReader(InputStream stream)
					{
						this.stream = stream;
					}
					
					public int read()
					{
						if (numChars==-1) 
							throw new InputMismatchException();
						
						if (curChar >= numChars)
						{
							curChar = 0;
							try 
							{
								numChars = stream.read(buf);
							}
							catch (IOException e)
							{
								throw new InputMismatchException();
							}
							
							if(numChars <= 0)				
								return -1;
						}
						return buf[curChar++];
					}
				 
					public String nextLine()
					{
						String str = "";
			            try
			            {
			                str = br.readLine();
			            }
			            catch (IOException e)
			            {
			                e.printStackTrace();
			            }
			            return str;
					}
					public int nextInt()
					{
						int c = read();
						
						while(isSpaceChar(c)) 
							c = read();
						
						int sgn = 1;
						
						if (c == '-') 
						{
							sgn = -1;
							c = read();
						}
						
						int res = 0;
						do 
						{
							if(c<'0'||c>'9') 
								throw new InputMismatchException();
							res *= 10;
							res += c - '0';
							c = read();
						}
						while (!isSpaceChar(c)); 
						
						return res * sgn;
					}
					
					public long nextLong() 
					{
						int c = read();
						while (isSpaceChar(c))
							c = read();
						int sgn = 1;
						if (c == '-') 
						{
							sgn = -1;
							c = read();
						}
						long res = 0;
						
						do 
						{
							if (c < '0' || c > '9')
								throw new InputMismatchException();
							res *= 10;
							res += c - '0';
							c = read();
						}
						while (!isSpaceChar(c));
							return res * sgn;
					}
					
					public double nextDouble() 
					{
						int c = read();
						while (isSpaceChar(c))
							c = read();
						int sgn = 1;
						if (c == '-') 
						{
							sgn = -1;
							c = read();
						}
						double res = 0;
						while (!isSpaceChar(c) && c != '.') 
						{
							if (c == 'e' || c == 'E')
								return res * Math.pow(10, nextInt());
							if (c < '0' || c > '9')
								throw new InputMismatchException();
							res *= 10;
							res += c - '0';
							c = read();
						}
						if (c == '.') 
						{
							c = read();
							double m = 1;
							while (!isSpaceChar(c)) 
							{
								if (c == 'e' || c == 'E')
									return res * Math.pow(10, nextInt());
								if (c < '0' || c > '9')
									throw new InputMismatchException();
								m /= 10;
								res += (c - '0') * m;
								c = read();
							}
						}
						return res * sgn;
					}
					
					public String readString() 
					{
						int c = read();
						while (isSpaceChar(c))
							c = read();
						StringBuilder res = new StringBuilder();
						do 
						{
							res.appendCodePoint(c);
							c = read();
						} 
						while (!isSpaceChar(c));
						
						return res.toString();
					}
				 
					public boolean isSpaceChar(int c) 
					{
						if (filter != null)
							return filter.isSpaceChar(c);
						return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
					}
				 
					public String next() 
					{
						return readString();
					}
					
					public interface SpaceCharFilter 
					{
						public boolean isSpaceChar(int ch);
					}
				}
			 	
				public static void main(String args[]) throws Exception
				{
					new Thread(null, new Solution1(),"Solution1",1<<26).start();
				}	
				public void run()
				{
					InputReader sc= new InputReader(System.in);
					PrintWriter w= new PrintWriter(System.out);
					int n = sc.nextInt();
					int m = sc.nextInt();
					int[] arr=  new int[n];
					int[] arr2 = new int[m];
					for(int i = 0;i < n;i++){
						arr[i] = sc.nextInt();
					}
					Integer[] ar = new Integer[n];
					for(int i = 0;i < n;i++){
						ar[i] = (Integer)arr[i];
					}
					Arrays.sort(ar);
					for(int i = 0;i < n;i++){
						arr[i] = ar[i];
					}
					for(int i = 0;i < m;i++){
						int a = sc.nextInt();
						w.print(binarySearch(a,arr) + 1 + " ");
					}
					w.close();
				}
				int binarySearch(int x,int[] arr){
					int l = 0;
					int r = arr.length-1;
					int mid = (l + r)/2;
					HashSet<Integer> hset = new HashSet();
					int rem = -1;
					int ans = -1;
					while(true){
						hset.add(mid);
						if(function(x,mid,arr)){
							l = mid + 1;
						}else{
							r = mid - 1;
						}
						rem = mid;
						mid = (l + r)/2;
						if(hset.contains(mid)){
							boolean ans1 = function(x,mid,arr);
							boolean ans2 = function(x,rem,arr);
							if(ans1 && ans2){
								ans = Math.max(mid,rem);
							}else if(ans1){
								ans = mid;
							}else if(ans2){
								ans = rem;
							}
							break;
						}
					}
					return ans;
				}
				boolean function(int a,int mid,int[] arr){
					if(arr[mid] <= a){
						return true;
					}
					return false;
				}
				static class Pair{
					int a;
					int b;
					Pair(int a,int b){
						this.a = a;
						this.b = b;
					}
					public boolean equals(Object o)
					{
						Pair p = (Pair)o;
						return p.a==a && p.b==b;
					
						
					}
					
					public int hashCode()
					{
						return new Long(a).hashCode()*31 + new Long(a).hashCode();
					}
				}
			}  