
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;

public class Forces641D {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
		String[] nx= br.readLine().split(" ");
		int n = Integer.parseInt(nx[0]);
		int x = Integer.parseInt(nx[1]);
		
		HashMap<Integer,Integer> map = new HashMap<>();
		
		for(int i=0;i<n;i++)
		{
			int nw = Integer.parseInt(br.readLine());
	        	          
			if(map.containsKey(nw))
			{
				int c = map.get(nw);
				map.put(nw,c+1);
			}
			else
				map.put(nw,1);
			
			HashMap<Integer,Integer> temp=new HashMap<>(map);
				
			int mex = MEX(map);
			System.out.println(map);
			System.out.println("Mex"+mex);
			
			for(int j=0;j<mex;j++)
			{
				int c = map.get(j);
				if(c==1)
					map.remove(j);
				else
					map.put(j,c-1);
		
			}
			
			ArrayList<Integer> list = new ArrayList<>();
			for(int val : map.keySet())
			{
				int c = map.get(val);
				for(int k=0;k<c;k++)
					list.add(val);
			}
			
			Collections.sort(list);
			
			
			while(true) {
			boolean change =false;	
			for(int j=0;j<list.size();j++)
			{
				int val = list.get(j);
				if(val<mex)
				{
					if((mex-val)%x==0)
					{
						mex++;
						list.remove(j);
						if(list.isEmpty())
							break;
						
						change=true;
						continue;
						
					}
				}
				else {
					
					if((val-mex)%x==0)
					{
						mex++;
						list.remove(j);
						
						if(list.isEmpty())
							break;
						
						change=true;
						continue;
					}
					
				}
				
			}
			if(!change || list.size()==0)
			{
				break;
			}
			
			}
	       System.out.println(mex);
	       map=temp;
		}
	}
	
	public static int MEX(HashMap<Integer,Integer> set)
	{
		int i;
		for(i=0;i<set.size();i++)
		{
			if(!set.containsKey(i))
			{
				return i;
			}
			
		}
		
			return set.size();
	}

}
