
import java.io.*;
import java.util.*;

public class ss
{
	
	public static void main(String[] args) throws Exception
	{
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		
		
		ArrayList<Integer> pole = new ArrayList<Integer>();
		
		while(true)
		{
			pole.clear();
			String s = bf.readLine();
			
			if(s==null || s.equals("0")) break;
			
			StringTokenizer st = new StringTokenizer(s);
			int p = Integer.parseInt(st.nextToken());
			int c = Integer.parseInt(st.nextToken());
			
			int[] a = new int[p];
			
			s = bf.readLine();
			st = new StringTokenizer(s);
			for(int i = 0; i < p; i++)
			{
				a[i] = Integer.parseInt(st.nextToken());
			}
			
			boolean m = true;
			int n = a[0];
			for(int i = 1; i < p; i++)
			{
				if(m)
				{
					if(a[i - 1] >= a[i])
					{
						n = a[i];
					} else
					{
						m = false;
						pole.add(n);
						n = a[i];
					}
					
				} else
				{
					if(a[i - 1] <= a[i])
					{
						n = a[i];
					} else
					{
						m = true;
						pole.add(n);
						n = a[i];
					}
					
				}					
				
			}
			
			pole.add(n);
			
			
			if(pole.size() % 2 == 1)
			{
				pole.remove(pole.size() - 1);
			}
			
			/*
			for(Integer i: pole)
			int max = getMax(pole,min+1,pole.size());
			{
				System.out.println(i);
			}
			*/
			
			
			if(pole.size() == 0)
			{
				System.out.println("0");
				continue;
			}
			
			int min = getMin(pole,0,pole.size());
			int max = getMax(pole,min+1,pole.size());
			
						
			int no = (c/pole.get(min))*(pole.get(max)-pole.get(min));
			//System.out.println(c + " " + pole.get(max) + " " + no);
			//System.out.println("    " + pole.get(min) + " " + pole.get(max) + " " + no);
			int k;
			while(min != 0)
			{
				
				
				min = getMin(pole,0,min);
				max = getMax(pole,min+1,pole.size());
				k = (c/pole.get(min))*(pole.get(max)-pole.get(min));
				if(k > no) no = k;
				
				//System.out.println("    " + pole.get(min) + " " + pole.get(max) + " " + no);
			}
			
			System.out.println(no + "");
			
			
		}

	
		

	}
	/* <l;p) */
	public static int getMin(ArrayList<Integer> list,int l, int p)
	{
		int min = list.get(l);
		int pos = l;
		for (int i=l+2;i<p;i+=2)
		{
			int k = list.get(i);
			if (k<min)
			{
				min = k;
				pos = i;
			}
		}
		return pos;
	}
	public static int getMax(ArrayList<Integer> list,int l, int p)
	{
		int max = list.get(l);
		int pos = l;
		for (int i=l+2;i<p;i+=2)
		{
			int k = list.get(i);
			if (k>max)
			{
				max= k;
				pos = i;
			}
		}
		return pos;
	}
}
