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 pole = new ArrayList(); 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 + ""); } } /* list,int l, int p) { int min = list.get(l); int pos = l; for (int i=l+2;i list,int l, int p) { int max = list.get(l); int pos = l; for (int i=l+2;imax) { max= k; pos = i; } } return pos; } }